免费

MCP 是什么:给 Claude Code 接入外部世界

解释 MCP 工作原理和配置方式,让 Claude Code 通过 MCP Server 接入数据库、GitHub、Slack 等外部系统。


Claude Code 默认能做的事是有边界的:读写本地文件、执行终端命令、调用内置工具。但实际项目里,你经常需要它查数据库、读 Notion 文档、搜 Slack 消息、调内部 API。

MCP 就是解决这个问题的。

MCP 的定位

MCP(Model Context Protocol)是 Anthropic 提出的一个开放协议,定义了 AI 模型如何与外部工具、数据源通信。你可以把它理解成给 Claude Code 装插件——每个 MCP Server 是一个独立的服务,暴露一组工具,Claude 可以在会话中直接调用。

不同于 Hooks(在 Claude 执行动作时触发脚本),MCP 是主动扩展 Claude 的能力边界:你接入什么,Claude 就能操作什么。

工作原理

MCP 的架构很简单:

Claude Code(Client)  ←→  MCP Server  ←→  外部系统
  1. 你在配置里声明一个 MCP Server(本地进程或远程服务)
  2. Claude Code 启动时连接这个 Server,拿到它暴露的工具列表
  3. 会话中 Claude 可以调用这些工具,就像调用内置的 Read/Write/Bash 一样
  4. MCP Server 处理请求,返回结果给 Claude

整个过程对用户透明。你看到的是 Claude 说「我去查一下数据库」然后拿到结果,背后是 MCP 在转发请求。

三类 MCP 能力

MCP Server 可以暴露三种东西:

Tools(工具)
Claude 可以主动调用的函数,比如"查询用户表""搜索文档""发送 Slack 消息"。这是最常用的。

Resources(资源)
结构化数据,可以被 Claude 读取作为上下文,比如数据库 schema、API 文档、配置文件。

Prompts(提示模板)
预定义的提示片段,用户可以直接引用。

实际使用中 90% 的场景都是 Tools。

快速上手:接入一个现成的 MCP Server

以官方的 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 下来就能用。

现成的 MCP Server 哪里找

Anthropic 维护了一批官方 MCP Server:

  • @modelcontextprotocol/server-filesystem — 文件系统访问
  • @modelcontextprotocol/server-github — GitHub 操作(PR、issue、代码搜索)
  • @modelcontextprotocol/server-postgres — PostgreSQL 查询
  • @modelcontextprotocol/server-slack — Slack 消息读写
  • @modelcontextprotocol/server-google-maps — 地图与地理信息

社区也有大量第三方实现,覆盖 Notion、Linear、Jira、各类数据库等。

MCP vs Hooks:怎么选

Hooks MCP
触发方式 Claude 执行特定动作时 Claude 主动调用
用途 拦截/增强现有行为 扩展新能力
典型场景 保存时格式化、提交前检查 查数据库、调外部 API
配置复杂度

两者互补。Hooks 管"Claude 做事的方式",MCP 管"Claude 能做什么事"。

下一步

这篇是 MCP 的概念入门。接下来的文章会覆盖:

  • 给 Claude Code 接入真实数据库(PostgreSQL + 真实 schema)
  • 接入内部工具和 API
  • 自己从零写一个 MCP Server

如果你已经有一个想接入的系统,可以先翻 MCP Server 列表,大概率已经有现成实现。