--- title: "MCP 配置" description: "MCP 服务器从多个来源汇聚配置。理解多来源合并、企业排他模式、项目配置审批和保留名称机制。" keywords: ["MCP", "配置", "settings.json", ".mcp.json", "企业策略"] --- ## 核心问题 MCP(Model Context Protocol)让 Claude Code 可以使用外部工具——数据库查询、浏览器控制、API 调用等。但 MCP 配置来自多个来源:用户全局、项目级、插件、企业策略。如何合并?谁优先? ## 配置来源与合并优先级 配置按优先级从低到高合并,高优先级覆盖低优先级: ``` claude.ai 连接器(最低) → 插件 → 用户全局 → 项目配置 → 本地项目 → 内置动态(最高) ``` | 来源 | Scope | 说明 | |------|-------|------| | claude.ai 连接器 | `claudeai` | 网页端配置的远程连接器 | | 插件 | `dynamic` | 插件 manifest 中声明 | | 用户全局 | `user` | `~/.claude/settings.json` | | 项目配置 | `project` | `.mcp.json`(需审批) | | 本地项目 | `local` | `settings.local.json`(不提交 VCS) | | 内置动态 | `dynamic` | Computer Use 等内置服务器 | ## 企业排他模式 当企业管理员部署 `managed-mcp.json` 时,进入**排他模式**:只使用企业配置,忽略所有用户、项目、插件和 claude.ai 配置。 **设计考量**:企业环境需要严格控制 AI 可以访问哪些外部工具。排他模式确保用户不能绕过企业策略添加自己的 MCP 服务器。 ## 项目配置审批 `.mcp.json` 是项目级共享配置(可提交到 git),但需要用户显式审批才能生效。 **为什么需要审批**?项目配置可能由任何人修改(包括恶意贡献者)。审批机制确保用户知情并同意项目提供的 MCP 服务器连接到他们的环境。 审批状态持久化在本地配置中,不需要每次重新审批。 ## 传输类型 MCP 服务器通过不同的传输方式连接: | 类型 | 适用场景 | 配置方式 | |------|---------|---------| | **stdio** | 本地工具(启动子进程) | `command` + `args` | | **SSE** | 远程 Server-Sent Events | `url` + 可选 `headers` | | **HTTP** | HTTP 流式传输 | `url` + 可选 `headers` | | **WebSocket** | 双向实时通信 | `wss://` URL | stdio 类型最常见——它启动一个本地子进程,通过 stdin/stdout 通信。远程类型(SSE/HTTP/WS)用于连接远程服务。 ### 认证 远程 MCP 服务器支持 OAuth 认证。认证失败时进入 `needs-auth` 状态,15 分钟内不重复提示。 ## 插件集成 插件通过 manifest 声明 MCP 服务器,命名空间为 `plugin::`,不会与手动配置冲突。 插件服务器通过内容签名去重: - stdio 类型:基于 command + args - URL 类型:基于 URL - 手动配置优先于插件配置 ## 策略管控 企业策略通过 allowlist 和 denylist 控制可用的 MCP 服务器。策略检查不仅匹配服务器名称,还匹配 command/args(stdio)和 URL 模式(远程)。 ## 保留名称 以下名称被保留,用户无法手动配置: - `claude-in-chrome` — Chrome 浏览器控制 - `computer-use` — 桌面自动化 这防止用户意外覆盖内置服务器的配置。 ## 接下来 - **MCP 协议** — 理解连接管理、工具发现和执行链路 - **Hooks** — 理解 MCP 生命周期中的 Hook 集成 - **自定义 Agent** — 理解 Agent 中引用 MCP 服务器