Appearance
MCP(Model Context Protocol)是 Claude Code 支持的实时数据接入协议,允许 Claude 直接访问 GitHub、数据库、文件系统等外部服务,实现“活数据”同步和自动化操作。与 Memory(持久上下文)不同,MCP 提供实时 API 调用、动态工具管理和多种认证机制。本文将通过结构化示例,手把手教你配置和使用 MCP,让 Claude 成为你的数据管家和自动化助手。
MCP(Model Context Protocol)实战:让 Claude 访问 GitHub、数据库、文件系统
MCP(Model Context Protocol)是 Claude Code 的核心扩展机制之一,专为让 Claude 实时访问外部服务、API 和数据库而设计。通过 MCP,Claude 能够“看到”最新的 GitHub PR、直接查询数据库、读写本地文件,甚至自动生成日报并推送到 Slack。这极大拓展了 AI 助手的能力边界。
MCP 的定位和 Memory(持久记忆)不同。Memory 适合存储静态、长期不变的上下文(如用户偏好、历史对话、团队规则等),而 MCP 则用于实时获取和操作外部世界的数据。两者可以结合,用于构建更智能的 AI 工作流。详细对比可参考 CLAUDE.md 深度指南:8 层记忆层级与持久上下文管理 和 Claude Code 六大扩展机制对比。
一、MCP 能解决什么问题?
- 实时获取外部数据:如 GitHub PR 列表、数据库最新订单、文件系统目录等
- 自动化操作:如创建 issue、写入数据库、批量处理文件
- 多服务协同:结合多个 MCP,自动生成日报、同步多端数据
- 权限与认证安全:支持 OAuth、Token、API Key 等多种认证方式
- 灵活配置与复用:支持项目级、用户级、子代理级别的灵活管理
二、MCP vs Memory:静态上下文与实时数据的本质区别
| 场景 | 适合用 Memory | 适合用 MCP |
|---|---|---|
| 用户偏好/团队规则 | ✅ | ❌ |
| 历史对话/总结 | ✅ | ❌ |
| GitHub PR 列表 | ❌ | ✅(实时获取最新数据) |
| 数据库查询 | ❌ | ✅(动态 SQL 查询) |
| 文件内容读取 | ❌ | ✅(随时访问最新文件) |
核心理解:Memory 只存“死数据”,MCP 负责“活数据”。如果你的需求是“Claude 帮我查下最新的 10 个 PR”,一定要用 MCP。
三、MCP 配置与权限语法详解
1. MCP Server 添加与配置
MCP 支持多种服务类型,配置方式高度统一。以 GitHub 为例:
方法一:命令行添加
bash
export GITHUB_TOKEN="你的 GitHub Token"
claude mcp add --transport stdio github -- npx @modelcontextprotocol/server-github方法二:项目根目录写 .mcp.json
json
{
"mcpServers": {
"github": {
"command": "npx",
"args": ["@modelcontextprotocol/server-github"],
"env": {
"GITHUB_TOKEN": "${GITHUB_TOKEN}"
}
}
}
}支持环境变量展开,推荐所有敏感信息用
${VAR}引用,避免明文泄漏。
数据库 MCP 示例:
json
{
"mcpServers": {
"database": {
"command": "npx",
"args": ["@modelcontextprotocol/server-database"],
"env": {
"DATABASE_URL": "postgresql://user:pass@localhost/mydb"
}
}
}
}文件系统 MCP 示例:
json
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["@modelcontextprotocol/server-filesystem", "/home/user/projects"]
}
}
}2. MCP 权限语法与 Slash 命令
MCP 工具会自动注册为 Slash 命令,格式为:
/mcp__<server>__<tool>例如:
/mcp__github__list_prs:列出所有 PR/mcp__database__query:执行 SQL 查询/mcp__filesystem__ls:列出目录
注意:
mcp__github__*不是权限控制语法,而是 Slash 命令命名规范,*代表该 MCP server 下所有可用工具。- 实际权限由 MCP server 配置和服务端认证决定(如 OAuth、Token 等)。
3. 多 MCP 协同与资源引用
可以在同一个项目配置多个 MCP server,实现跨服务协同。例如,自动生成日报:
- 用 GitHub MCP 获取 PR 数据
- 用 Database MCP 查询销售数据
- 用 Filesystem MCP 写入报告
- 用 Slack MCP 发送报告
多 MCP 配置示例:
json
{
"mcpServers": {
"github": { ... },
"database": { ... },
"slack": { ... },
"filesystem": { ... }
}
}在 prompt 中直接引用资源:
@database:postgres://mydb/usersClaude 会自动检索并引用该资源内容。
四、典型实战场景
1. 让 Claude 读写 GitHub
- 配置:见上方 GitHub MCP 示例
- 常用命令:
/mcp__github__list_prs:获取 PR 列表/mcp__github__create_issue "标题" "描述":新建 issue/mcp__github__get_file_content path/to/file:读取文件内容
能做什么?
- 自动生成/补全 PR 描述
- 批量创建/关闭 issue
- 代码审查、统计 PR 质量
- 结合 code-review skill 做自动化审查
2. 让 Claude 查询数据库
- 配置:见上方 Database MCP 示例
- 常用命令:
/mcp__database__query "SELECT * FROM users WHERE ...":执行 SQL/mcp__database__insert ...、update、delete等
能做什么?
- 实时统计、分析业务数据
- 自动生成数据报告
- 数据变更自动触发通知
3. 让 Claude 操作文件系统
- 配置:见上方 Filesystem MCP 示例
- 常用命令:
/mcp__filesystem__ls src/:列出目录/mcp__filesystem__cat README.md:读取文件/mcp__filesystem__create docs/api.md:新建文件
能做什么?
- 自动生成/补全文档
- 批量重构代码
- 文件内容分析与批量处理
4. 多 MCP 联动:自动日报生成
场景流程:
- 获取 GitHub 近 7 天合并 PR 数量
- 查询数据库昨日销售额
- 生成 HTML 报告,写入文件系统
- 用 Slack MCP 发送到 #daily-reports
配置:见“多 MCP 配置示例”
能做什么?
- 一键自动化跨系统日报、周报
- 数据同步与协同分析
五、MCP 高级用法与性能优化
1. 动态工具更新与上下文节省
- MCP 支持动态工具列表更新,无需重启 Claude
- 当工具描述超 context 10% 时自动启用“工具搜索”模式,避免上下文膨胀
- 单个 MCP server 工具描述/说明最大 2KB,防止 context 被占满
2. 解决大规模 MCP 的“上下文爆炸”问题
- 传统方式:所有工具定义和结果都进 context,极易超限
- 推荐新范式:用代码执行模式,Claude 先生成 orchestrating 代码,数据只在沙箱内流转,最终结果才进 context,token 消耗大幅降低
- 可用 MCPorter 作为 TypeScript 运行时,自动生成类型安全的 MCP 工具 API,极大提升开发效率
3. 子代理(Subagent)专属 MCP
可在 agent frontmatter 里用 mcpServers: 配置,仅对子代理生效,适合多 agent 协作场景。详见 Claude Code Subagents:把复杂任务委托给专职 AI 代理。
六、安全与最佳实践
- 所有敏感信息用环境变量,不要写死在配置文件
- 权限最小化:每个 MCP server 只授予必要权限
- 定期轮换 Token,监控访问日志
- 不要把 Token、密钥提交到 git
- 团队协作时,项目级
.mcp.json需首次使用时显式批准
更多安全建议见文末“最佳实践”部分。
七、安装与常见问题排查
安装步骤(以 GitHub MCP 为例)
- 安装 MCP serverbash
npm install -g @modelcontextprotocol/server-github - 配置环境变量bash
export GITHUB_TOKEN="你的 GitHub Token" - 添加 MCP serverbash
claude mcp add --transport stdio github -- npx @modelcontextprotocol/server-github - 测试连接bash
claude /mcp
常见问题排查
- MCP server 未找到:
npm list -g @modelcontextprotocol/server-github检查安装 - 认证失败:检查环境变量、Token 权限
- 连接超时:检查网络、API 限流、防火墙
- MCP server 崩溃:查日志、确认依赖、重装 package
八、与 Claude 其他模块协同
MCP 可与 Memory、Skills、Subagents、Hooks 等模块组合,打造复杂的自动化工作流。例如结合 Slash Commands 和 Skills 体系详解,让 Claude 在触发命令时自动调用 MCP 工具,或用 Hooks 实现事件驱动自动化。
FAQ
Q: MCP 和 Memory 有什么本质区别? A: Memory 只存静态、持久的上下文信息,适合偏好、历史等;MCP 用于实时获取和操作外部数据,如 GitHub、数据库、文件系统等。
Q: MCP 权限语法 mcp__github__* 是怎么回事? A: 这是 Slash 命令命名规范,代表调用 github 这个 MCP server 下的所有工具,实际权限由服务端认证和配置决定。
Q: 如何安全管理 MCP 配置和 Token? A: 所有敏感信息必须用环境变量引用,不要硬编码或提交到 git,定期轮换 Token 并监控访问日志。