MCP 连接外部服务
通过 MCP 协议让 Claude Code 操作数据库、浏览器、第三方 API 等外部工具
Claude Code 默认能读写文件、运行命令,但它没法直接查数据库、操作浏览器、调用第三方 API。要打通这些能力,就需要 MCP(Model Context Protocol)。
MCP 是什么
MCP 是 Anthropic 推出的一个开放标准协议,全称 Model Context Protocol。你可以把它理解为 Claude Code 的"USB 接口"——只要外部工具实现了 MCP 协议,就能即插即用地接入 Claude Code。
具体来说:
- MCP Server 是外部工具的封装(比如一个 PostgreSQL 的 MCP Server 封装了数据库操作能力)
- Claude Code 作为 MCP Client,自动发现并调用这些工具
- 你不需要手动告诉 Claude Code 怎么用这些工具,它会根据任务需要自动选择
配置方式
MCP 的配置写在 .claude/mcp.json 文件中。以下是一个连接 PostgreSQL 数据库和文件系统的示例:
{
"mcpServers": {
"postgres": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-postgres",
"postgresql://user:password@localhost:5432/mydb"
]
},
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/Users/you/projects/my-app"
]
}
}
}配置说明:
command:启动 MCP Server 的命令args:命令参数,通常包含连接信息-y是 npx 的参数,表示自动确认安装
保存配置后,重启 Claude Code,它会自动连接这些 MCP Server 并加载可用的工具。
常见 MCP Server
社区已经有很多现成的 MCP Server 可以直接用:
| MCP Server | 功能 | 包名 |
|---|---|---|
| PostgreSQL | 查询数据库、执行 SQL、查看表结构 | @modelcontextprotocol/server-postgres |
| SQLite | 本地 SQLite 数据库操作 | @modelcontextprotocol/server-sqlite |
| 文件系统 | 增强的文件操作(搜索、批量处理) | @modelcontextprotocol/server-filesystem |
| Puppeteer | 浏览器自动化、截图、爬取页面 | @modelcontextprotocol/server-puppeteer |
| GitHub | 操作 Issue、PR、仓库管理 | @modelcontextprotocol/server-github |
| Slack | 发消息、读频道、搜索历史 | @modelcontextprotocol/server-slack |
| Memory | 持久化记忆存储 | @modelcontextprotocol/server-memory |
[!TIP] 不需要一次把所有 Server 都配上。按需添加就好——你用到数据库就加 PostgreSQL,需要操作浏览器就加 Puppeteer。每多一个 MCP Server,启动时就多一些开销。
安装方式
大部分 MCP Server 通过 npx 直接运行,不需要全局安装。但如果你想确保版本稳定,也可以先安装到项目:
# 方式一:npx 直接运行(推荐,配置文件里已经用了这种方式)
# 不需要额外安装,npx 会自动下载
# 方式二:安装到项目依赖
pnpm add -D @modelcontextprotocol/server-postgres
# 然后 mcp.json 中用 node 直接运行
{
"mcpServers": {
"postgres": {
"command": "node",
"args": [
"node_modules/@modelcontextprotocol/server-postgres/dist/index.js",
"postgresql://user:password@localhost:5432/mydb"
]
}
}
}实用案例:连接数据库
这是最常用的 MCP 场景。配好 PostgreSQL Server 后,你可以直接跟 Claude Code 说:
帮我看一下 users 表里有多少条 status 为 inactive 的记录,
以及他们最后登录时间的分布情况Claude Code 会自动:
- 连接数据库
- 先查表结构了解字段
- 写 SQL 查询
- 返回结果并做分析
整个过程你不需要手动复制 SQL、打开数据库客户端、粘贴结果。特别是在调试数据问题的时候,这个效率提升是很明显的。
再比如,你在开发过程中可以直接说:
检查一下 orders 表和 order_items 表的关联关系对不对,
看看有没有 order_items 里的 order_id 在 orders 表中找不到的脏数据安全注意事项
MCP 让 Claude Code 获得了操作外部系统的能力,这也意味着你需要注意安全:
[!WARNING] 数据库连接:不要在
.claude/mcp.json里写生产环境的数据库密码。开发环境用就好,生产环境的数据库操作还是走正规的运维流程。
几条安全建议:
- 用只读账户——如果你只需要查询数据库,给 MCP Server 配一个只读权限的数据库账户
- 不要提交敏感配置——把
.claude/mcp.json加到.gitignore,避免数据库密码泄漏 - 限制文件系统范围——配置 Filesystem Server 时,只给它你项目目录的访问权限,不要给根目录
- 注意 API Token 安全——Slack、GitHub 等服务的 Token 有对应的权限范围,按最小权限原则配置
# 把 mcp.json 加到 gitignore
echo ".claude/mcp.json" >> .gitignore和 Skills、Hooks 的配合
MCP 通常不是单独使用的,它可以和 Skills、Hooks 配合:
- Skill + MCP:写一个"数据检查"的 Skill,调用 MCP 连接的数据库自动跑一系列校验 SQL
- Hook + MCP:在
StopHook 里自动调用数据库 MCP 检查这次代码变更是否需要 migration - 三者组合:用 Skill 定义工作流、用 MCP 操作外部系统、用 Hook 自动触发
想了解 Skills 和 Hooks 的详细用法,可以回看上一节的内容。
本章节为会员专属内容
购买全站技能解锁即可免费阅读所有进阶教程,包括对话技巧、扩展能力、实战项目和思维模型等完整内容。
已购买会员?请先登录你的账号,即可自动解锁。

