MCP(Model Context Protocol)是 Anthropic 推出的开放标准,让 Claude Code 连接任意外部数据源和工具。通过 MCP,Claude Code 可以读取 Google Drive 文档、更新 Jira Ticket、从 Slack 拉取数据、查询数据库……
什么是 MCP?
MCP 是一个双向通信协议,定义了 AI 助手如何与外部工具交互:
Claude Code ←→ MCP Server ←→ 外部服务(Jira/GitHub/Slack/DB…)
MCP Server 像一个适配器:你一次实现,Claude Code 就能调用所有它暴露的功能。一个 GitHub MCP Server 可以让 Claude 直接创建 Issue、读取 PR、触发 Actions。
为什么用 MCP 而不是直接让 Claude 调 API?
- 无需在提示词里解释 API 结构
- 可以封装认证逻辑,不暴露 Token
- 工具发现自动化,Claude 知道"有哪些工具可用"
- 标准化协议,一个 Server 可被多个 AI 工具复用
快速接入:使用现成 MCP Server
第一步:查找可用 Server
官方 MCP 连接器目录:claude.com/partners/mcp
常见高质量 MCP Server:
| 服务 | 功能 |
|---|---|
| GitHub MCP | 读写 Issues、PR、代码库、Actions |
| Linear MCP | 管理任务、项目、Sprint |
| Notion MCP | 读写 Notion 文档和数据库 |
| Postgres MCP | 直接查询数据库 |
| Puppeteer MCP | 浏览器自动化,截图,测试 |
| Brave Search MCP | 让 Claude 搜索网络 |
| Slack MCP | 读取频道消息,发送通知 |
第二步:配置 MCP Server
在 Claude Code 配置文件中添加 MCP Server:
json
// ~/.claude/settings.json
{
"mcpServers": {
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "your-token"
}
},
"postgres": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-postgres"],
"env": {
"DATABASE_URL": "postgresql://localhost/mydb"
}
}
}
}或者用命令行添加:
bash
claude mcp add github -- npx -y @modelcontextprotocol/server-github第三步:在对话中使用
配置完成后,直接在对话中使用自然语言:
看看 GitHub 上最近的 10 个 open issues,按优先级排序,
然后为最重要的 3 个各自创建一个分支并准备初始提交
查询数据库中过去 7 天注册的用户数,与上周对比,
生成一个 Markdown 格式的报告
从 Slack 的 #bugs 频道拉取今天报告的所有 Bug,
按严重程度分类,创建对应的 Linear 任务
自己开发 MCP Server
如果你的工具没有现成 Server,可以快速开发一个:
TypeScript 示例(5 分钟实现)
typescript
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { z } from "zod";
const server = new McpServer({ name: "my-tools", version: "1.0.0" });
// 注册一个工具:查询内部 API
server.tool(
"get-user-stats",
"获取用户统计数据",
{
userId: z.string().describe("用户 ID"),
period: z.enum(["day", "week", "month"]).describe("统计周期"),
},
async ({ userId, period }) => {
const data = await fetchUserStats(userId, period);
return {
content: [{ type: "text", text: JSON.stringify(data, null, 2) }],
};
}
);
// 注册一个资源:读取内部文档
server.resource(
"internal-docs",
"company-docs://api-standards",
async (uri) => ({
contents: [{ uri: uri.href, text: await getDocContent() }],
})
);
const transport = new StdioServerTransport();
await server.connect(transport);配置到 Claude Code:
json
{
"mcpServers": {
"my-tools": {
"command": "node",
"args": ["/path/to/my-tools/index.js"]
}
}
}实战场景案例
场景 1:AI 辅助 Bug 处理流程
从 Sentry 拉取最近 24 小时的错误报告,
找出出现频率最高的 5 个 Bug,
在代码库中定位根因,
为每个 Bug 创建 GitHub Issue 并打上对应标签
需要:Sentry MCP + GitHub MCP
场景 2:每日站会准备
从 Linear 拉取我昨天完成的任务和今天要做的任务,
从 GitHub 拉取我昨天的 PR 状态,
生成一份站会汇报草稿
需要:Linear MCP + GitHub MCP
场景 3:数据驱动的代码优化
查询数据库中响应时间超过 500ms 的 API 端点,
找到对应的源代码,
分析可能的性能瓶颈,
给出优化建议
需要:Postgres MCP
安全注意事项
- MCP Server 有你给它的权限,谨慎配置只读/写权限
- 不要在配置文件中硬编码敏感 Token,用环境变量
- 审查第三方 MCP Server 的代码(特别是非官方的)
- 项目级
.claude/settings.json提交到代码库时,确保不包含 Token
查看已连接的 MCP Server
bash
# 在 Claude Code 会话中
/mcp # 列出所有已连接的 MCP Server 和可用工具来源:Claude Code Features Overview + MCP Documentation | Anthropic 官方文档