{"record":{"id":"a734bbe14915878b","repo":"openai/codex","slug":"no-mcp-server-named-name-found","errorCode":null,"errorMessage":"No MCP server named '{name}' found.","messagePattern":"No MCP server named '(.+?)' found\\.","errorType":"validation","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"codex-rs/cli/src/mcp_cmd.rs","lineNumber":545,"sourceCode":"    ));\n    Ok(McpManager::new(plugins_manager))\n}\n\nasync fn run_login(config: &Config, login_args: LoginArgs) -> Result<()> {\n    let mcp_manager = load_mcp_manager(config).await?;\n    let mcp_servers = mcp_manager.configured_servers(config).await;\n\n    let LoginArgs {\n        name,\n        scopes,\n        oauth_client_registration,\n    } = login_args;\n    let client_registration = oauth_client_registration\n        .map(McpOAuthClientRegistration::from)\n        .unwrap_or_default();\n\n    let Some(server) = mcp_servers.get(&name) else {\n        bail!(\"No MCP server named '{name}' found.\");\n    };\n\n    let (url, http_headers, env_http_headers) = match &server.transport {\n        McpServerTransportConfig::StreamableHttp {\n            url,\n            http_headers,\n            env_http_headers,\n            ..\n        } => (url.clone(), http_headers.clone(), env_http_headers.clone()),\n        _ => bail!(\"OAuth login is only supported for streamable HTTP servers.\"),\n    };\n\n    // Standalone `mcp login` runs OAuth from the local CLI process; execution\n    // environment routing belongs to app-server and session MCP flows.\n    let http_client: Arc<dyn HttpClient> = Arc::new(\n        RouteAwareHttpClient::new(config.http_client_factory()).with_tls_backend_fallback(),\n    );\n    let http_client = apply_http_headers_helper(http_client, server, config.cwd.to_path_buf())","sourceCodeStart":527,"sourceCodeEnd":563,"githubUrl":"https://github.com/openai/codex/blob/339751715c64496cb86246bfb3935f40e309dd3d/codex-rs/cli/src/mcp_cmd.rs#L527-L563","documentation":"`codex mcp login <name>` resolves the server by exact key lookup in the configured mcp_servers map before starting the OAuth flow. A missing key bails immediately with the name you passed; nothing is written and no browser flow starts.","triggerScenarios":"`codex mcp login context7` when no server with that exact key is configured — typo, different casing, server configured in another profile/CODEX_HOME, or never added.","commonSituations":"Transcribing a name from docs with different casing or spacing; the server was added under a different key via `codex mcp add`; multiple config files or profiles so `codex mcp list` in another environment shows the server; stale tutorials referencing renamed servers.","solutions":["List configured servers and copy the exact key: `codex mcp list`.","Add it first if missing: `codex mcp add <name> --url https://...`, then `codex mcp login <name>`.","Match the name byte-for-byte — the lookup is case-sensitive.","Confirm you are running against the right CODEX_HOME/profile."],"exampleFix":"# before\ncodex mcp login contex7               # typo: server is context7\n# after\ncodex mcp list                        # copy the exact name\ncodex mcp login context7\n\n# or add it first if missing:\ncodex mcp add context7 --url https://mcp.context7.com/mcp\ncodex mcp login context7","handlingStrategy":"validation","validationCode":"mcp_login() {\n  local name=\"$1\"\n  codex mcp list 2>/dev/null | grep -Fw -- \"$name\" >/dev/null || {\n    echo \"no MCP server named '$name' configured; run: codex mcp add $name --url <url>\" >&2\n    return 2\n  }\n  codex mcp login \"$name\"\n}","typeGuard":null,"tryCatchPattern":"if ! codex mcp login \"$name\" 2>err.log; then\n  if grep -q 'No MCP server named' err.log; then\n    codex mcp list   # surface valid names so the caller can retry with the exact key\n  fi\n  exit 1\nfi","preventionTips":["Derive server names from `codex mcp list` output rather than docs or memory","Add and login in the same script so the key cannot drift","Treat server names as case-sensitive identifiers in automation"],"tags":["cli","codex","mcp","oauth","not-found"],"backgroundTag":"resource-not-found","analyzedSha":"339751715c64496cb86246bfb3935f40e309dd3d","analyzedAt":"2026-08-25T05:35:09.876Z","schemaVersion":2},"datasetVersion":"2026-08-25T06:17:31.827Z"}