OpenBB-finance/OpenBB · error · ValueError

Target provider '{target}' has no configured root directorie

Error message

Target provider '{target}' has no configured root directories.

What it means

Raised by install_skill when the resolved target provider exists but has no configured root directories (_roots is empty), so there is nowhere on disk to write the skill. A SkillsDirectoryProvider without roots is effectively disabled — it can serve nothing and cannot accept installs. This is a server-side configuration problem, not a bad argument.

Source

Thrown at openbb_platform/extensions/mcp_server/openbb_mcp_server/app/app.py:819

            else:
                vendor_cls = _VENDOR_SKILLS_PROVIDERS.get(target_key)
                if vendor_cls and isinstance(provider, vendor_cls):
                    target_provider = provider
                    break

        if target_provider is None:
            available = ["bundled"]
            for p in mcp.providers:
                for vendor_name, vendor_cls in _VENDOR_SKILLS_PROVIDERS.items():
                    if isinstance(p, vendor_cls):
                        available.append(vendor_name)
            raise ValueError(
                f"Target provider '{target}' not found or not loaded. "
                f"Available targets: {', '.join(available)}"
            )

        if not target_provider._roots:  # noqa: SLF001
            raise ValueError(
                f"Target provider '{target}' has no configured root directories."
            )

        # Use the first root directory for writing
        root_dir = target_provider._roots[0]  # noqa: SLF001
        skill_dir = root_dir / skill_name

        # Create the directory and write all files
        skill_dir.mkdir(parents=True, exist_ok=True)
        written_files: list[str] = []
        for filename, content in files.items():
            file_path = skill_dir / filename
            # Create subdirectories if the filename contains path separators
            file_path.parent.mkdir(parents=True, exist_ok=True)
            file_path.write_text(content, encoding="utf-8")
            written_files.append(filename)

        # Register the new skill with the provider

View on GitHub (pinned to 3e071fcc2c)

Solutions

  1. Configure the target provider's root directory (its env var / config option) and restart the MCP server.
  2. Mount or create the skills directory in the container/host and point the provider at it.
  3. Alternatively install to a target that has roots configured (e.g. 'bundled').
  4. Check the server's provider initialization logs to see which roots were discovered.

Example fix

# before (server started with vendor provider but no roots)
await install_skill(skill_name="s", target="vendor", files={"SKILL.md": "..."})

# after: configure the provider root, e.g.
# export OPENBB_MCP_VENDOR_SKILLS_DIR=/data/skills  (name per provider docs)
# restart server, then
await install_skill(skill_name="s", target="vendor", files={"SKILL.md": "..."})
Defensive patterns

Strategy: try-catch

Try / catch

try:
    await install_skill(skill_name=n, target="vendor", files=files)
except ValueError as e:
    if "no configured root directories" in str(e):
        # server-side misconfiguration: report to operator, fall back to bundled
        log.warning("vendor skills dir unconfigured; installing to bundled")
        await install_skill(skill_name=n, target="bundled", files=files)
    else:
        raise

Prevention

When it happens

Trigger: Calling install_skill against a provider whose root directory env var or config option was never set; running the MCP server with a vendor skills provider enabled but its data path unconfigured; containerized deployments where the expected skills directory was not mounted.

Common situations: Docker images missing the vendor skills volume; fresh installs where the provider is auto-registered but its directory option is blank; CI environments with no writable skills path.

Related errors


AI-assisted analysis of OpenBB-finance/OpenBB@3e071fcc2c (2026-08-14). Data as JSON: /api/errors/42b4eb82eab88881. Report an issue: GitHub.