Claude How To # MCP(Model Context Protocol) ## 概览 MCP 是 Claude Code 访问外部工具、服务和 API 的标准协议。你可以把 GitHub、数据库、文件系统、聊天系统等都接到 Claude 里。 ## MCP 架构 MCP 通常由三部分构成: 1. Claude Code 2. MCP server 3. 外部工具或数据源 Claude 会通过 MCP 协议向 server 发起工具调用,并把结果带回当前会话。 ## MCP 生态 - GitHub 集成 - 数据库集成 - 文件系统集成 - 组织内部工具 - 第三方服务 ## 安装方式 ### HTTP 传输(推荐) ```bash # Basic HTTP connection # HTTP with authentication header ``` ### Stdio 传输(本地) ```bash # Local Node.js server # With environment variables ``` ### SSE 传输(已弃用) 旧版本中可能仍能见到 SSE 方式,但新配置一般优先考虑 HTTP 或 stdio。 ### WebSocket 传输 适用于需要实时双向通信的场景。 ### Windows 说明 在 Windows 上配置本地 server 时,要注意 shell、环境变量和路径写法。 ### OAuth 2.0 认证 对于支持 OAuth 的 MCP server,Claude 可以通过交互式流程或预配置凭据完成认证。 ## MCP 设置流程 1. 确认你要接入的服务 2. 选择 transport 3. 配置环境变量或认证 4. 在 Claude Code 中添加 server 5. 验证工具是否可用 ## MCP 工具搜索 Claude 会根据当前上下文自动查找可用工具。 ## 动态工具更新 当 MCP server 增加或移除工具时,Claude 可以在运行时感知变化。 ## MCP 提示补充(Elicitation) 有些 MCP server 会在需要用户补充信息时触发 elicitation,Claude 再把问题转给用户。 ## 工具描述与指令上限 每个 MCP 工具都应该有清晰的描述,帮助 Claude 选择正确的工具。 ## 把 MCP Prompts 暴露成 Slash Commands ```text /mcp____ [arguments] ``` 例如: ```bash /mcp__github__list_prs /mcp__github__pr_review 456 /mcp__jira__create_issue "Bug title" high ``` ## Server 去重 如果多个配置都指向同一个 server,Claude 会尽量避免重复加载。 ## 通过 `@` 提及使用 MCP 资源 你可以把某些资源当作引用对象,在 prompt 中直接提及。 ## MCP 作用域 MCP 配置通常有不同作用域,例如项目级和用户级。 ### 使用项目作用域 适合把团队共享的 server 配置写进项目内。 ## MCP 配置管理 ### 添加 MCP server ```bash # Add HTTP-based server # Add local stdio server # List all MCP servers # Get details on specific server # Remove an MCP server # Reset project-specific approval choices # Import from Claude Desktop ``` ## 可用 MCP Server 表 你可以在配置中维护一张 server 清单,记录用途、认证方式和安装命令。 ## 实战示例 ### 示例 1:GitHub MCP 配置 你可以用 GitHub MCP 做这些事: - PR 管理 - Issue 管理 - 仓库信息查询 - commit 操作 ### 环境变量展开 在配置中可以使用环境变量,让同一份配置适配不同环境。 ### 示例 2:数据库 MCP ```bash # Using MCP database tool: # Results: ``` ### 示例 3:多 MCP 工作流 适合日常报告、跨系统同步和自动化文档生成。 ### 示例 4:文件系统 MCP 操作 可用于读写文件、批量整理、生成报告或导出结果。 ## MCP vs Memory:决策矩阵 - **Memory**:适合长期规则、偏好和上下文 - **MCP**:适合实时工具访问和外部数据 ## 请求 / 响应模式 MCP 一般遵循: 1. Claude 发起请求 2. Server 处理 3. 返回结构化结果 ## 环境变量 常见环境变量包括: - API token - 数据库地址 - 服务端口 - 认证信息 ## Claude 作为 MCP Server(`claude mcp serve`) ```bash # Start Claude Code as an MCP server on stdio ``` ## 受管 MCP 配置(企业) 企业可通过受管设置统一分发 MCP 配置。 ## 插件提供的 MCP Servers 插件可以把自己的 MCP server 一起打包分发。 ## Subagent 作用域 MCP 某些 MCP 只允许特定 subagent 使用。 ## MCP 输出限制 如果输出过大,可以限制 token 数或分页获取。 ### 增大最大输出 ```bash # Increase the max output to 50,000 tokens ``` ## 用代码执行解决上下文膨胀 当重复把大量数据回传给 Claude 会浪费 token 时,可以把 MCP 当作代码 API 来用,减少来回传输。 ### 问题 - 两个信息源都在耗 token - 大数据集不适合全量塞进上下文 ### 方案 - 用 MCP 工具做实时查询 - 只把必要结果传给 Claude #### 工作方式 Claude 通过工具调用从外部系统取回需要的数据,而不是把所有数据先写进上下文。 ### 好处 - 更少 token 浪费 - 更清晰的数据边界 - 更适合大规模查询 #### 示例:过滤大数据集 #### 示例:循环而不做 round-trip ### 取舍 - 实现复杂度更高 - 需要维护 server - 但扩展性更好 ### MCPorter:MCP 工具组合运行时 这是更高级的工具编排思路,可以把多个 MCP 工具串成一个流程。 ## 最佳实践 ### 安全注意事项 #### 应该做的 - 只授权必要的工具 - 优先使用最小权限 - 检查输出是否可信 #### 不要做的 - 不要把高风险 token 写死在仓库里 - 不要默认开放所有工具 - 不要忽视网络和认证风险 ### 配置建议 - 给每个 server 写清楚用途 - 用环境变量存认证信息 - 把项目级配置版本化 ### 性能建议 - 避免一次性拉回过多数据 - 优先做过滤和分页 - 只返回 Claude 真正需要的结果 ## 安装说明 ### 前置条件 - Claude Code - 对应的 MCP server - 必要的认证信息 ### 分步设置 1. 安装 server 2. 设置环境变量 3. 添加到 Claude 4. 测试工具 ### 特定服务的安装 不同服务会有不同的安装命令和认证方式。 ## 故障排查 ### 找不到 MCP Server - 检查是否安装 - 检查路径 - 检查配置是否正确 ### 认证失败 - 检查环境变量是否设置 - 确认 token 权限正确 - 重新导出变量后再试 ### 连接超时 - 检查网络 - 检查 server 是否可用 ### MCP Server 崩溃 - 查看 server 日志 - 降低并发 - 简化请求 ## 相关概念 - [Memory 中文指南](../02-memory/README.md) - [Subagents 中文参考](../04-subagents/README.md) - [Plugins 中文指南](../07-plugins/README.md) ## 更多资源 - [根目录中文指南](../README.md) - [MCP 规范](https://modelcontextprotocol.io)