Skip to content

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,实现跨服务协同。例如,自动生成日报:

  1. 用 GitHub MCP 获取 PR 数据
  2. 用 Database MCP 查询销售数据
  3. 用 Filesystem MCP 写入报告
  4. 用 Slack MCP 发送报告

多 MCP 配置示例:

json
{
  "mcpServers": {
    "github": { ... },
    "database": { ... },
    "slack": { ... },
    "filesystem": { ... }
  }
}

在 prompt 中直接引用资源:

@database:postgres://mydb/users

Claude 会自动检索并引用该资源内容。

四、典型实战场景

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 ...updatedelete

能做什么?

  • 实时统计、分析业务数据
  • 自动生成数据报告
  • 数据变更自动触发通知

3. 让 Claude 操作文件系统

  • 配置:见上方 Filesystem MCP 示例
  • 常用命令
    • /mcp__filesystem__ls src/:列出目录
    • /mcp__filesystem__cat README.md:读取文件
    • /mcp__filesystem__create docs/api.md:新建文件

能做什么?

  • 自动生成/补全文档
  • 批量重构代码
  • 文件内容分析与批量处理

4. 多 MCP 联动:自动日报生成

场景流程:

  1. 获取 GitHub 近 7 天合并 PR 数量
  2. 查询数据库昨日销售额
  3. 生成 HTML 报告,写入文件系统
  4. 用 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 为例)

  1. 安装 MCP server
    bash
    npm install -g @modelcontextprotocol/server-github
  2. 配置环境变量
    bash
    export GITHUB_TOKEN="你的 GitHub Token"
  3. 添加 MCP server
    bash
    claude mcp add --transport stdio github -- npx @modelcontextprotocol/server-github
  4. 测试连接
    bash
    claude /mcp

常见问题排查

  • MCP server 未找到npm list -g @modelcontextprotocol/server-github 检查安装
  • 认证失败:检查环境变量、Token 权限
  • 连接超时:检查网络、API 限流、防火墙
  • MCP server 崩溃:查日志、确认依赖、重装 package

八、与 Claude 其他模块协同

MCP 可与 Memory、Skills、Subagents、Hooks 等模块组合,打造复杂的自动化工作流。例如结合 Slash CommandsSkills 体系详解,让 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 并监控访问日志。