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 providerView on GitHub (pinned to 3e071fcc2c)
Solutions
- Configure the target provider's root directory (its env var / config option) and restart the MCP server.
- Mount or create the skills directory in the container/host and point the provider at it.
- Alternatively install to a target that has roots configured (e.g. 'bundled').
- 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
- Configure every skills provider's root directory at deployment time and smoke-test an install_skill call.
- In containers, mount the skills volume and set the provider's directory env var.
- Health-check the server's providers after startup before accepting skill installs.
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
- The 'files' dict must include a 'SKILL.md' entry as the main
- Target provider '{target}' not found or not loaded. Availabl
- Provider fallback failed. [Providers] {msg}
- Failed to cast {value} to bool.
- Missing credential '{c}'.{extra_msg} Refer to the documentat
AI-assisted analysis of OpenBB-finance/OpenBB@3e071fcc2c (2026-08-14).
Data as JSON: /api/errors/42b4eb82eab88881.
Report an issue: GitHub.