{"record":{"id":"7d1f15a6bec56b33","repo":"langchain-ai/deepagents","slug":"mcp-disabled-servers-is-missing-from-the-config-ma","errorCode":null,"errorMessage":"mcp.disabled_servers is missing from the config manifest","messagePattern":"mcp\\.disabled_servers is missing from the config manifest","errorType":"exception","errorClass":"RuntimeError","httpStatus":null,"severity":"error","filePath":"libs/code/deepagents_code/mcp_disabled.py","lineNumber":266,"sourceCode":"\ndef _resolve_entries(\n    providers: tuple[RankedProviderValue[list[str]], ...],\n) -> ResolvedValue[list[str]] | None:\n    \"\"\"Resolve deny tiers with the option's manifest-declared union strategy.\n\n    Returns:\n        The accumulated names and rank metadata, or `None` when every tier is unset.\n\n    Raises:\n        RuntimeError: If the option is missing from the manifest.\n    \"\"\"\n    from deepagents_code.config_manifest import get_option\n    from deepagents_code.configuration.resolver import resolve_ranked\n\n    option = get_option(\"mcp.disabled_servers\")\n    if option is None:\n        msg = \"mcp.disabled_servers is missing from the config manifest\"\n        raise RuntimeError(msg)\n    return resolve_ranked(providers, strategy=option.merge_strategy.value)\n\n\ndef _raise_for_managed_provider(\n    provider: RankedProviderValue[list[str]],\n) -> None:\n    \"\"\"Apply the deny-list callsite's fail-closed health policy.\n\n    Raises:\n        ManagedConfigError: If the provider is unhealthy or its value is invalid.\n    \"\"\"\n    from deepagents_code.configuration.service import ManagedConfigError\n    from deepagents_code.configuration.types import (\n        Invalid,\n        ProviderHealth,\n        ProviderStatus,\n    )\n","sourceCodeStart":248,"sourceCodeEnd":284,"githubUrl":"https://github.com/langchain-ai/deepagents/blob/a1af029e6e73cb17c36bff823d227747b28e91e1/libs/code/deepagents_code/mcp_disabled.py#L248-L284","documentation":"_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.","triggerScenarios":"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.","commonSituations":"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.","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."],"exampleFix":"# before (custom manifest)\noptions = [\"mcp.servers\", \"mcp.headers\"]\n# after\noptions = [\"mcp.servers\", \"mcp.headers\", \"mcp.disabled_servers\"]","handlingStrategy":"fallback","validationCode":"from deepagents_code.config_manifest import get_option\nassert get_option(\"mcp.disabled_servers\") is not None, \"manifest missing mcp.disabled_servers\"","typeGuard":null,"tryCatchPattern":"try:\n    disabled = get_disabled_servers()\nexcept RuntimeError as exc:\n    if \"config manifest\" in str(exc):\n        disabled = []  # safe default; log a warning\n    else:\n        raise","preventionTips":["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"],"tags":["mcp","config-manifest","runtime-error","versioning"],"backgroundTag":"missing-config-option","analyzedSha":"a1af029e6e73cb17c36bff823d227747b28e91e1","analyzedAt":"2026-08-29T11:43:24.718Z","schemaVersion":2},"datasetVersion":"2026-08-29T12:17:43.993Z"}