MCP 到底解决什么问题
普通对话只能使用你粘贴进去的内容;MCP 让 AI 应用通过统一接口发现数据和可执行能力。 例如,一个服务器可以提供“读取工单”资源和“更新工单状态”工具,Claude Code 无需知道背后是哪个厂商 API。
但 MCP 不是“装上就全自动”的魔法:服务器决定暴露什么,客户端决定如何展示和审批,用户或组织决定最终权限。 协议兼容也不代表具体服务器值得信任。
一张图式理解:Host、Client 与 Server
| 角色 | 在做什么 | Claude Code 示例 |
|---|---|---|
| Host | 承载对话、权限、模型和多个连接 | Claude Code 应用本身 |
| MCP Client | 与某个服务器协商能力并收发请求 | Claude Code 内部为每个服务器管理连接 |
| MCP Server | 暴露工具、资源或提示模板 | 文档、工单、数据库或内部 API 适配器 |
协议可分两层:数据层基于 JSON-RPC,定义发现、调用和通知;传输层负责进程或网络通信及认证。
三个核心原语:tools、resources、prompts
- Tools:可执行函数,例如查询订单、创建 Issue、运行部署。通常风险最高。
- Resources:可读取的数据,例如文件、数据库记录或 API 响应,适合提供上下文。
- Prompts:服务器提供的可复用交互模板,用于规范某类任务的输入。
“读”和“写”不能只看名称判断。一个叫 search 的工具也可能把查询发送到外部服务; 一个资源 URI 也可能返回敏感数据。审查时要看真实实现、参数、网络和凭证范围。
两种传输:stdio 与 Streamable HTTP
| 传输 | 适合场景 | 主要风险 |
|---|---|---|
| stdio | 客户端在本机启动子进程,通过标准输入输出通信 | 本地进程权限、依赖供应链、环境变量泄漏 |
| Streamable HTTP | 独立部署的远程服务、多用户和集中运维 | 认证、Token、SSRF、TLS、会话与网络暴露 |
旧教程常把 SSE 单列为默认远程方案。当前规范以 Streamable HTTP 为主要远程传输; 它用 HTTP POST 发送客户端请求,可选使用 Server-Sent Events 流式返回。
在 Claude Code 中添加 MCP
1. 添加远程 HTTP 服务器
claude mcp add --transport http service-name https://mcp.example.com/mcp如果服务器支持 OAuth,添加后进入 Claude Code,运行 /mcp 并按浏览器流程登录。
2. 添加本地 stdio 服务器
claude mcp add --transport stdio local-tools --env SERVICE_TOKEN=YOUR_TOKEN -- npx -y example-mcp-server双横线 -- 用来分隔 Claude CLI 参数和服务器启动命令。示例包名只是占位符;实际使用前应从服务商官方文档复制命令, 核对包所有者、版本、源码和所需权限。
3. 查看、删除与排错
claude mcp list
claude mcp get service-name
claude mcp remove service-name
# Claude Code 会话内
/mcplocal、project、user 三种作用域
| 作用域 | 影响范围 | 是否共享 | 适合 |
|---|---|---|---|
local | 当前项目 | 否 | 个人实验、含私有参数的连接 |
project | 当前项目 | 是,写入 .mcp.json | 团队统一工具 |
user | 个人所有项目 | 否 | 个人跨项目常用服务 |
# 团队共享配置
claude mcp add --scope project --transport http docs https://mcp.example.com/mcp
# 个人跨项目配置
claude mcp add --scope user --transport http docs https://mcp.example.com/mcp.mcp.json 可以提交不含秘密的启动信息,但不要提交 Token。项目配置来自仓库内容,Claude Code 首次连接时会要求审批。
授权与凭证:本地和远程不同
stdio 服务器通常从进程环境获得凭证;远程 HTTP 服务器可使用标准 HTTP 认证,规范为授权流程定义了 OAuth 角色。 对用户而言,最简单的原则是:能用官方 OAuth 就不用长期静态 Token;必须用 Token 时,限制权限、资源范围和有效期,并使用秘密管理系统。
- 不要把凭证写进
.mcp.json、CLAUDE.md、提示词或聊天记录。 - 不同环境和不同服务器使用不同 Token,避免一个凭证横跨开发与生产。
- 定期撤销不再使用的连接,并检查远程服务的授权记录。
安全上线清单
- 核查来源:优先官方服务商和可审计源码,固定依赖版本。
- 最小权限:先开放只读资源,再按单个工具增加写权限。
- 隔离环境:本地服务器只给必要目录、网络和环境变量。
- 保留审批:删除、付款、发布、发消息和改生产数据必须人工确认。
- 防提示注入:把工具返回内容视为不可信输入,不能让外部文档覆盖系统权限。
- 可观测:记录调用的服务器、工具、参数类别、结果和操作者,但日志中脱敏凭证和个人信息。
常见配置误区
- 照抄旧文件路径:优先使用当前
claude mcpCLI,让客户端写入正确作用域。 - 把“社区数量”当质量:目录收录不等于官方审计,应逐个核查。
- 默认所有国内环境都要代理:是否需要代理取决于服务器位置、服务商网络和组织政策,不能一概而论。
- 一次开放全部工具:先用只读任务验证连接、数据边界和日志,再逐步授权。