解释 MCP 工作原理和配置方式,让 Claude Code 通过 MCP Server 接入数据库、GitHub、Slack 等外部系统。
Claude Code 默认能做的事是有边界的:读写本地文件、执行终端命令、调用内置工具。但实际项目里,你经常需要它查数据库、读 Notion 文档、搜 Slack 消息、调内部 API。
MCP 就是解决这个问题的。
MCP(Model Context Protocol)是 Anthropic 提出的一个开放协议,定义了 AI 模型如何与外部工具、数据源通信。你可以把它理解成给 Claude Code 装插件——每个 MCP Server 是一个独立的服务,暴露一组工具,Claude 可以在会话中直接调用。
不同于 Hooks(在 Claude 执行动作时触发脚本),MCP 是主动扩展 Claude 的能力边界:你接入什么,Claude 就能操作什么。
MCP 的架构很简单:
Claude Code(Client) ←→ MCP Server ←→ 外部系统
整个过程对用户透明。你看到的是 Claude 说「我去查一下数据库」然后拿到结果,背后是 MCP 在转发请求。
MCP Server 可以暴露三种东西:
Tools(工具)
Claude 可以主动调用的函数,比如"查询用户表""搜索文档""发送 Slack 消息"。这是最常用的。
Resources(资源)
结构化数据,可以被 Claude 读取作为上下文,比如数据库 schema、API 文档、配置文件。
Prompts(提示模板)
预定义的提示片段,用户可以直接引用。
实际使用中 90% 的场景都是 Tools。
以官方的 Filesystem MCP 为例,这个 Server 让 Claude 可以访问你指定目录外的文件系统。
安装
npm install -g @modelcontextprotocol/server-filesystem
配置
编辑 ~/.claude/settings.json:
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/Users/yourname/Documents"
]
}
}
}
验证
重启 Claude Code,输入:
列出 /Users/yourname/Documents 下的所有 PDF 文件
如果 Claude 直接给出结果而不是说"我无法访问文件系统",说明 MCP 已经生效。
{
"mcpServers": {
"服务名称": {
"command": "启动命令",
"args": ["参数列表"],
"env": {
"API_KEY": "xxx"
}
}
}
}
command + args:Claude Code 用这个命令启动 MCP Server 进程env 用来传 API key 等敏感配置,不要硬写在代码里MCP 配置可以放三个位置,按优先级从低到高:
| 位置 | 文件 | 适用场景 |
|---|---|---|
| 全局 | ~/.claude/settings.json |
所有项目都要用的工具 |
| 项目级 | .claude/settings.json |
这个项目专用 |
| 本地覆盖 | .claude/settings.local.json |
个人配置,不提交 git |
对于数据库连接、内部 API 这类项目专用的 MCP,放项目级配置,连同代码一起提交,团队成员 clone 下来就能用。
Anthropic 维护了一批官方 MCP Server:
社区也有大量第三方实现,覆盖 Notion、Linear、Jira、各类数据库等。
| Hooks | MCP | |
|---|---|---|
| 触发方式 | Claude 执行特定动作时 | Claude 主动调用 |
| 用途 | 拦截/增强现有行为 | 扩展新能力 |
| 典型场景 | 保存时格式化、提交前检查 | 查数据库、调外部 API |
| 配置复杂度 | 低 | 中 |
两者互补。Hooks 管"Claude 做事的方式",MCP 管"Claude 能做什么事"。
这篇是 MCP 的概念入门。接下来的文章会覆盖:
如果你已经有一个想接入的系统,可以先翻 MCP Server 列表,大概率已经有现成实现。