
MCP 从零到实战 —— Claude Code 连接外部世界读完这篇你会知道MCP 到底是什么、怎么配、怎么用。没有任何抽象概念全程实操。一、一句话说清楚 MCPClaude Code 只能操作你本机的文件。MCP 让它能操作 GitHub、数据库、Jira、Slack……任何你能想到的外部服务。没有 MCP 有 MCP ══════════════════════ ══════════════════════ Claude Code Claude Code │ │ │ 能做的事 │ 能做的事 ├─ 读写本地文件 ├─ 读写本地文件 ├─ 执行本地命令 ├─ 执行本地命令 └─ 搜索项目代码 ├─ 搜索项目代码 ├─ 查 GitHub Issue ├─ 执行数据库 SQL ├─ 发 Slack 消息 ├─ 建 Jira 任务 ├─ 操作 Notion 文档 └─ ... 无限扩展二、MCP 是怎么工作的不写代码用人话解释MCP 三要素 ═══════════════════════════════════════════════════════════ ┌──────────────────┐ │ MCP 客户端 │ Claude Code 自己就是客户端 │ Client │ 它的工作发起请求 └────────┬─────────┘ │ │ 通过 MCP 协议通信标准化的 JSON 格式 │ 相当于两个人约定好的接头暗号 │ ▼ ┌──────────────────┐ │ MCP 服务器 │ 另一个人写的插件程序 │ Server │ 它的工作执行实际操作 └────────┬─────────┘ │ │ 用自己最擅长的方式操作目标系统 │ SQL 操作数据库、API 操作 GitHub…… ▼ ┌──────────────────┐ │ 外部系统 │ GitHub、MySQL、Slack、Jira…… │ Target │ 你想让 AI 操作的任何东西 └──────────────────┘打个比方把 Claude Code 想成一个人MCP 服务器想成翻译官你想跟一个法国人GitHub说话但你不懂法语你请了一个法语翻译GitHub MCP Server你跟翻译说中文翻译转成法语跟法国人沟通法国人回法语翻译转成中文告诉你MCP 就是翻译官的「工作协议」——规定了翻译官该怎么干活、怎么汇报。三、配置文件在哪MCP 的配置写在.claude/settings.json里。你要么放在项目里只对这个项目生效要么放在用户目录所有项目生效项目级配置 用户级配置 ══════════════════ ══════════════════ 项目目录/ ~/.claude/ └── .claude/ └── settings.json └── settings.json ↑ ↑ 对所有项目生效 只对当前项目生效建议GitHub Token 这种个人密钥放用户级数据库连接这种和项目绑定的放项目级。四、你的第一个 MCP连接 GitHub4.1 配置在.claude/settings.json中写入{mcpServers:{github:{type:http,url:https://api.github.com/mcp,headers:{Authorization:Bearer ghp_xxxxxxxxxxxx}}}}就这几行。ghp_xxxxxxxxxxxx换成你自己的 GitHub Personal Access Token。Token 去哪搞打开 https://github.com/settings/tokens点 “Generate new token (classic)”勾上 repo、read:org、read:user 权限生成 → 复制4.2 配置完能做什么配置完重启 Claude Code或新开对话MCP 自动生效。然后你就可以这样对话你帮我看看我有哪些 open 的 issue Claude Code 内部 → 发现你配置了 github MCP → 调用 MCP 工具list_issues → GitHub 返回 issue 列表 → 用中文整理好给你看 ⏶ 对话效果 你帮我创建一个 issue标题是「用户注册接口响应太慢」 描述是「POST /api/users/register 接口响应时间超过 2s 怀疑是数据库查询慢需要加索引」 标签打上 bug 和 performance Claude Code 已创建 Issue #42 ——「用户注册接口响应太慢」 https://github.com/yourname/yourproject/issues/42你帮我看看 feature/payment 分支和 main 有什么差异 列出改动的文件每个文件改了什么 Claude Code通过 GitHub MCP ## feature/payment vs main | 文件 | 状态 | 变更 | |------|------|------| | PaymentController.java | 新增 | 156 行 | | PaymentService.java | 新增 | 234 行 | | application.yml | 修改 | 5 / -2 | | pom.xml | 修改 | 4 行新增依赖| 总结主要新增了支付模块包含微信支付和支付宝两个渠道……你帮我 peer review 一下 PR #38 Claude Code 1. 拉取 PR #38 的 diff 2. 逐文件审查 3. 输出审查意见 ### PR #38 Review ⚠️ OrderService.java:45 扣库存的逻辑没有加事务注解并发下可能超卖。 PaymentController.java:23 建议把金额校验提取到 DTO 的 DecimalMin 注解不要在 Controller 里做。 ✅ 其他部分没有问题代码风格符合项目规范。4.3 你实际看到的权限提示每次 AI 调用 MCP 工具你都会看到类似这样的提示┌─────────────────────────────────────────────┐ │ Claude Code 想要使用 MCP 工具 │ │ │ │ 服务器github │ │ 工具list_issues │ │ 参数{ repo: yourname/yourproject } │ │ │ │ [ 允许 ] [ 拒绝 ] [ 总是允许 ] │ └─────────────────────────────────────────────┘频率高的操作可以选「总是允许」和文件操作一样的逻辑。五、第二个 MCP连接本地数据库5.1 安装与配置数据库 MCP 服务器是跑在本地的 Node.js 程序。先安装# 以 SQLite 为例最简单无需额外安装数据库软件npminstall-ganthropic/mcp-server-sqlite然后配置{mcpServers:{github:{type:http,url:https://api.github.com/mcp,headers:{Authorization:Bearer ghp_xxxxxxxxxxxx}},sqlite:{type:local,command:npx,args:[-y,anthropic/mcp-server-sqlite,--db-path,./data/myapp.db]}}}对比一下两种类型HTTP 类型 Local 类型 ══════════════ ═══════════════ 服务器跑在远程 服务器跑在本地 本质是调用 HTTP API 本质是启动一个本地进程 需要 URL Token 需要 command args type: http, type: local, url: https://xxx/mcp, command: python, headers: { ... } args: [server.py]5.2 数据库 MCP 能做什么你帮我看一下 user 表的结构 Claude Code → 调用 MCP describe_table → 返回id, username, email, password_hash, created_at, status 你最近一周每天的新注册用户数帮我查一下 Claude Code → 调用 MCP execute_sql → SELECT DATE(created_at) as date, COUNT(*) FROM users WHERE created_at datetime(now, -7 days) GROUP BY DATE(created_at) ORDER BY date → 结果 | 日期 | 新注册 | |------|--------| | 7/1 | 23 | | 7/2 | 31 | | 7/3 | 18 | | 7/4 | 45 | 你帮我查出哪些用户注册了但从没下过单 把他们的邮箱列出来 Claude Code → 自动理解需求 → 写 JOIN 查询 → 返回结果你不需要写 SQL。你描述需求AI 写 SQL 并通过 MCP 执行。5.3 MySQL / PostgreSQL 同理{mysql:{type:local,command:npx,args:[-y,anthropic/mcp-server-mysql,--host,localhost,--port,3306,--user,readonly_user,--password,${MYSQL_PASSWORD},--database,myapp]}}⚠️安全提醒生产数据库用只读账号不要给 root。不要在生产环境配 MCP 除非你真的知道在做什么。六、第三个 MCP连接文件系统访问其他目录默认情况下 Claude Code 只能操作当前项目目录。加一个 filesystem MCP 就能让它访问其他目录{filesystem:{type:local,command:npx,args:[-y,anthropic/mcp-server-filesystem,--root,/Users/me/Documents,--root,/Users/me/Downloads]}}你帮我在 Documents 目录下找一下所有和「合同」相关的 PDF 文件 Claude Code → filesystem MCP 搜索 → 列出结果七、常见的 MCP 服务器列表MCP 服务器安装方式能做什么GitHubHTTP 连接Issue/PR/Release 管理、代码搜索、Actions 查看GitLabHTTP 连接同上针对 GitLabSQLitenpx anthropic/mcp-server-sqlite查询本地 SQLite 数据库MySQLnpx anthropic/mcp-server-mysql查询 MySQL 数据库PostgreSQLnpx anthropic/mcp-server-postgres查询 PostgreSQL 数据库Filesystemnpx anthropic/mcp-server-filesystem访问项目外的目录SlackHTTP 连接发送/读取消息JiraHTTP 连接管理 Issue/SprintNotionHTTP 连接读写文档/数据库Playwrightnpx anthropic/mcp-server-playwright浏览器自动化E2E 测试用Dockernpx anthropic/mcp-server-docker管理容器和镜像八、MCP 工具在对话中是怎么被调用的你不必手动指定用哪个工具——描述你的需求AI 自动选择你说帮我把 issue #12 的状态改成 done Claude Code 内部决策链 ┌──────────────────────────────────────────────┐ │ 1. 改 issue 状态 → 这是 GitHub 的操作 │ │ 2. 我有 github MCP 吗→ 有 │ │ 3. github MCP 有什么工具→ list_issues, │ │ update_issue, create_issue, ... │ │ 4. 改状态 → 用 update_issue 工具 │ │ 5. update_issue 需要什么参数→ │ │ - owner: yourname │ │ - repo: yourproject │ │ - issue_number: 12 │ │ - state: closed │ │ 6. 调用工具 → 等待结果 → 告诉你 │ └──────────────────────────────────────────────┘整个决策过程不需要你参与你只需要说人话。九、常见问题Q1MCP 和内置工具有什么区别内置工具Read/Write/Edit/Bash/... MCP 工具 ════════════════════════════════ ═══════════════════ Claude Code 自带的 需要额外配置才有 操作本地文件和命令 操作外部服务 所有人都有不能增减 你可以无限扩展MCP 不会替换内置工具两者共存。AI 根据任务自动选。Q2我怎么知道配置成功了配好 MCP 后启动 Claude Code如果看到类似这样的日志就说明成了✓ Connected to MCP server: github (1 tool loaded) ✓ Connected to MCP server: sqlite (3 tools loaded)或者在对话中直接试你用 github MCP 帮我查一下我的仓库列表如果正常返回了仓库列表说明配置成功。Q3一个项目可以配多少个 MCP没有硬性限制。一个典型的项目配置 3-5 个{mcpServers:{github:{...},// 代码管理mysql:{...},// 数据库查询jira:{...},// 任务管理slack:{...}// 通知}}Q4Token 和密码怎么安全存储❌ 不要这样{headers:{Authorization:Bearer ghp_abc123def456← 明文写死}}✅ 用环境变量{headers:{Authorization:Bearer ${GITHUB_TOKEN}← 引用环境变量}}然后在终端设置export GITHUB_TOKENghp_abc...或者加到~/.bashrc。十、总结MCP 的本质就一句话把 Claude Code 的工具列表从「固定的 10 个」变成「你想要的任意个」。学 MCP 只需要记住三步1. 找到/写一个 MCP Servernpm 上搜 anthropic/mcp-server-xxx 2. 在 settings.json 里写 5 行配置 3. 用自然语言跟 AI 说你想做什么不需要理解协议细节不需要写代码。你只需要知道配置怎么写剩下的 AI 帮你搞定。写于 2026 年 7 月 | 配合 CC入门课程.md 和 CC最佳实践.md 阅读效果更好