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 会话内
/mcp

local、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,避免一个凭证横跨开发与生产。
  • 定期撤销不再使用的连接,并检查远程服务的授权记录。

安全上线清单

  1. 核查来源:优先官方服务商和可审计源码,固定依赖版本。
  2. 最小权限:先开放只读资源,再按单个工具增加写权限。
  3. 隔离环境:本地服务器只给必要目录、网络和环境变量。
  4. 保留审批:删除、付款、发布、发消息和改生产数据必须人工确认。
  5. 防提示注入:把工具返回内容视为不可信输入,不能让外部文档覆盖系统权限。
  6. 可观测:记录调用的服务器、工具、参数类别、结果和操作者,但日志中脱敏凭证和个人信息。

常见配置误区

  • 照抄旧文件路径:优先使用当前 claude mcp CLI,让客户端写入正确作用域。
  • 把“社区数量”当质量:目录收录不等于官方审计,应逐个核查。
  • 默认所有国内环境都要代理:是否需要代理取决于服务器位置、服务商网络和组织政策,不能一概而论。
  • 一次开放全部工具:先用只读任务验证连接、数据边界和日志,再逐步授权。