是什么

Model Context Protocol(MCP)是开源的 AI 工具集成标准,让 Claude Code 连接到外部工具、数据库和 API。通过 MCP Server,Claude 可以直接读取和操作 Issue 追踪器、监控面板、数据库等系统,而不需要用户手动复制粘贴数据。

核心机制

三种传输方式:

  • HTTP(推荐):远程 MCP Server,适合云服务:claude mcp add --transport http <name> <url>
  • SSE(已废弃):Server-Sent Events,建议迁移到 HTTP
  • stdio:本地进程,适合需要直接系统访问的工具:claude mcp add -- <command> [args...]

作用域:

  • 用户级:~/.claude.json,所有项目可用
  • 项目级:.mcp.json,随仓库分发
  • 会话级:--mcp-config 参数

环境变量注入:stdio Server 启动时自动注入 CLAUDE_PROJECT_DIR(项目根目录),Server 可用此解析相对路径。

安全注意:连接前验证 Server 可信度,外部内容可能引发 Prompt Injection 风险。

构建自己的 Server:可用 mcp-server-dev 插件快速脚手架:

/plugin install mcp-server-dev@claude-plugins-official
/mcp-server-dev:build-mcp-server

关键细节

  • 添加 HTTP Server:claude mcp add --transport http notion https://mcp.notion.com/mcp
  • 添加 stdio Server:claude mcp add --env KEY=val myserver -- npx -y server-package
  • 列出所有 Server:claude mcp list
  • 查看 Server 详情:claude mcp get <name>
  • 删除 Server:claude mcp remove <name>
  • 会话内检查状态:/mcp
  • 选项必须在 Server 名称之前,-- 分隔 Server 名和命令

关联

  • channels — MCP Server 的特殊形式,用于推送事件到会话
  • plugins — 打包 MCP Server 配置分发
  • routines — Routines 中使用 MCP Connectors

实践要点

  • HTTP 传输是首选,SSE 已废弃
  • stdio Server 的选项必须在 -- 之前,否则会被当作 Server 命令的参数
  • 项目级 .mcp.json 适合团队共享,随仓库提交
  • CLAUDE_PROJECT_DIR 在 Server 环境中可用,但在 command/args 的 ${VAR} 展开中需要默认值:${CLAUDE_PROJECT_DIR:-.}
  • 浏览官方 MCP Server 目录:claude.ai/directory