langchain-ai/deepagents · error · RuntimeError
mcp.disabled_servers is missing from the config manifest
Error message
mcp.disabled_servers is missing from the config manifest
What it means
_resolve_entries looks up the `mcp.disabled_servers` option in the built-in config manifest to learn its merge strategy. If the option is absent, the library raises this RuntimeError because disabled-server resolution cannot proceed without a declared schema. This indicates the shipped config manifest is inconsistent with the code.
Source
Thrown at libs/code/deepagents_code/mcp_disabled.py:266
def _resolve_entries(
providers: tuple[RankedProviderValue[list[str]], ...],
) -> ResolvedValue[list[str]] | None:
"""Resolve deny tiers with the option's manifest-declared union strategy.
Returns:
The accumulated names and rank metadata, or `None` when every tier is unset.
Raises:
RuntimeError: If the option is missing from the manifest.
"""
from deepagents_code.config_manifest import get_option
from deepagents_code.configuration.resolver import resolve_ranked
option = get_option("mcp.disabled_servers")
if option is None:
msg = "mcp.disabled_servers is missing from the config manifest"
raise RuntimeError(msg)
return resolve_ranked(providers, strategy=option.merge_strategy.value)
def _raise_for_managed_provider(
provider: RankedProviderValue[list[str]],
) -> None:
"""Apply the deny-list callsite's fail-closed health policy.
Raises:
ManagedConfigError: If the provider is unhealthy or its value is invalid.
"""
from deepagents_code.configuration.service import ManagedConfigError
from deepagents_code.configuration.types import (
Invalid,
ProviderHealth,
ProviderStatus,
)
View on GitHub (pinned to a1af029e6e)
Solutions
- Upgrade or reinstall deepagents-code to a complete, consistent version so the config manifest includes `mcp.disabled_servers`.
- If you maintain a custom manifest, add the `mcp.disabled_servers` option definition with a merge strategy.
- Clear stale installed copies (e.g. duplicate site-packages or stale editable installs) so code and manifest match.
Example fix
# before (custom manifest) options = ["mcp.servers", "mcp.headers"] # after options = ["mcp.servers", "mcp.headers", "mcp.disabled_servers"]
Defensive patterns
Strategy: fallback
Validate before calling
from deepagents_code.config_manifest import get_option
assert get_option("mcp.disabled_servers") is not None, "manifest missing mcp.disabled_servers" Try / catch
try:
disabled = get_disabled_servers()
except RuntimeError as exc:
if "config manifest" in str(exc):
disabled = [] # safe default; log a warning
else:
raise Prevention
- Keep install versions consistent — don't mix old manifests with new code
- Pin package versions in CI
- After upgrades, smoke-test `dcode mcp login list` early
When it happens
Trigger: Calling get_disabled_servers (or _managed_disabled_servers) when `get_option("mcp.disabled_servers")` returns None — i.e. the config manifest does not declare the `mcp.disabled_servers` option.
Common situations: Running a version of deepagents-code whose config manifest predates the `mcp.disabled_servers` option while newer mcp_disabled code is present (mixed installs/partial upgrades); monkeypatched or stubbed manifests in tests; custom manifest builds that dropped the option.
Related errors
- MCP token file {path} has unsupported version ({type(data.ge
- Cannot configure a closed MCP session manager
- Cannot create an MCP session after cleanup
- Agent initialization failed
- shell.allow_list is missing from the configuration manifest
AI-assisted analysis of langchain-ai/deepagents@a1af029e6e (2026-08-29).
Data as JSON: /api/errors/7d1f15a6bec56b33.
Report an issue: GitHub.