一、先说结论:MCP 解决什么问题
大模型很聪明,但被困在信息茧房里------它只能跟你聊天,无法访问外部世界。
· 你让它"查一下数据库里昨天的订单量"?做不到。
· 你让它"在浏览器里打开这个页面截图给我"?做不到。
· 你让它"去 GitHub 上看看这个项目的最新 Issue"?做不到。
MCP(Model Context Protocol)就是打破这层茧房的协议。 它定义了一套标准,让大模型可以安全、统一地连接外部工具和数据源。
二、MCP 是什么:一个精确的技术定义
MCP 是 Anthropic 提出的开放协议,全称 Model Context Protocol。
它的核心角色:大模型与外部世界之间的标准化接口。
类比一下:
· USB 让电脑连接各种外设(鼠标、键盘、硬盘),不用为每个设备写专属驱动
· MCP 让大模型连接各种外部工具(数据库、浏览器、API),不用为每个工具写专属集成代码
MCP 架构包含三个角色:
```
┌──────────┐ MCP 协议 ┌──────────────┐ 各种方式 ┌──────────┐
│ MCP 主机 │ ←─────────────→ │ MCP 服务器 │ ←───────────→ │ 外部资源 │
│ (Claude等) │ 标准化的请求/响应 │ (中间件服务) │ 专有协议/API │ (数据库等) │
└──────────┘ └──────────────┘ └──────────┘
```
· MCP 主机:大模型应用,比如 Claude Code、Claude 桌面版
· MCP 服务器:中间件,把外部工具的专有接口翻译成 MCP 标准协议
· 外部资源:数据库、浏览器、GitHub、文件系统、各种 API
三、为什么需要 MCP:Before vs After
Before MCP(传统方式):
每个工具都要单独集成:
· 集成 GitHub → 写一套代码
· 集成 Jira → 写另一套代码
· 集成数据库 → 再写一套代码
· N 个工具 = N 套集成代码,维护噩梦
After MCP(统一协议):
工具只需要实现一次 MCP 服务器:
· GitHub MCP Server(官方/社区提供)
· Jira MCP Server
· 数据库 MCP Server
· 一个协议 = 无限工具,即插即用
四、MCP 的核心机制
- 工具暴露(Tool Exposure)
MCP 服务器启动时,会向主机声明自己提供哪些工具:
```json
// 一个 GitHub MCP Server 暴露的工具列表
{
"tools": [
{
"name": "search_issues",
"description": "搜索 Issue",
"parameters": { "repo": "仓库名", "keyword": "关键词" }
},
{
"name": "create_pr",
"description": "创建 Pull Request",
"parameters": { "repo": "仓库名", "title": "标题", "body": "描述" }
}
]
}
```
这样大模型就知道"我能用什么工具、每个工具怎么调用"。
- 工具调用(Tool Invocation)
当大模型需要时,通过 MCP 协议发起调用:
```
大模型:"帮我查一下 react 仓库里有没有关于 hooks 的 Issue"
MCP 主机 → MCP 服务器:调用 search_issues(repo="facebook/react", keyword="hooks")
MCP 服务器 → GitHub API:GET /repos/facebook/react/issues?labels=hooks
GitHub API → MCP 服务器:返回 23 条 Issue
MCP 服务器 → MCP 主机:结构化返回结果
MCP 主机 → 大模型:把结果注入上下文
大模型 → 你:"找到 23 条相关 Issue,最新的三条是..."
```
- 资源暴露(Resource Exposure)
除了工具,MCP 服务器还可以暴露数据资源:
· 文件内容
· 数据库表结构
· API 文档
· 配置文件
大模型可以像读本地文件一样读取这些资源。
五、MCP 在 Claude Code 里的实际表现
当你给 Claude Code 配置了 MCP 服务器,它的工具列表会动态扩展。
原本 Agent 能用的工具只有:读文件、写文件、跑命令。
配置 MCP 后,增加了:
· 🌐 浏览器工具:打开网页、截图、点击、填表单
· 🗄️ 数据库工具:查询、建表、导数据
· 📦 GitHub 工具:读代码、提 Issue、审 PR
· 📋 Jira/Linear 工具:读任务、更新状态
· 📁 更多文件系统:连接远程服务器
一个实际例子:
你:"帮我看看我们公司官网,首页加载速度怎么样"
-
Agent 规划:需要打开浏览器访问官网
-
Agent 调用 浏览器 MCP:打开 https://example.com
-
浏览器 MCP 返回:页面加载时间 3.2 秒,LCP 2.8 秒
-
Agent 分析结果,告诉你优化建议
没有 MCP,Agent 只能告诉你"我无法访问外部网站"。
六、MCP vs Skills:谁是谁的谁
这是最容易混淆的地方,做个彻底澄清:
MCP Skills
本质 外部工具连接器 结构化指令集
提供什么 新的工具(能做什么) 新的知识/流程(怎么做)
形式 独立运行的服务器进程 配置文件(YAML/JSON)
举例 浏览器、数据库、GitHub API React 最佳实践、代码审查流程
谁调用 Agent 调用(作为工具) Agent 加载(注入上下文)
关系 是 Agent 的"手",延长触达范围 是 Agent 的"脑",增强领域知识
关键:Skill 可以引用 MCP 工具。
一个"自动发周报" Skill:
```yaml
name: weekly-report
description: 自动生成周报
triggers:
-
"发周报"
-
"生成周报"
tools_used:
-
jira-mcp # 拉任务
-
github-mcp # 拉提交记录
-
slack-mcp # 发送周报
flow:
-
调用 jira-mcp 获取本周完成的任务
-
调用 github-mcp 获取本周代码提交
-
汇总成周报格式
-
调用 slack-mcp 发送到团队频道
```
七、MCP 的安全模型
MCP 在设计时就考虑了安全:
-
用户批准:MCP 服务器需要在 Claude Code 里显式配置才能启用,不是自动连接的
-
权限声明:服务器启动时声明自己需要什么权限(文件读写、网络访问等)
-
操作确认:Agent 调用 MCP 工具时,敏感操作仍需你确认
-
本地优先:MCP 服务器通常跑在本地,数据不经过云端
-
作用域限制:可以配置服务器只能访问特定目录、特定数据库表
八、常见的 MCP 服务器举例
MCP 服务器 能干什么
Browser MCP 打开网页、截图、点击、填表单、执行 JS
GitHub MCP 搜索仓库、读代码、提 Issue、创建 PR
Postgres MCP 查数据库、建表、导数据、分析表结构
File System MCP 访问远程文件系统、批量操作
Slack MCP 发消息、读频道历史、上传文件
Jira MCP 查任务、更新状态、创建工单
Docker MCP 管理容器、查看日志、构建镜像
九、MCP 的行业意义
MCP 正在成为 AI 时代的 USB 标准。
· Anthropic 提出了协议并开源
· 社区快速跟进,已经有数百个 MCP 服务器可用
· 类似 OpenAI 的 Function Calling,但 MCP 是跨模型、跨平台的开放标准
· 未来趋势:大模型应用不再需要为每个工具单独写集成,只需要支持 MCP 协议
十、一句话总结
MCP 让大模型长出"手",能碰触真实世界。Skills 给这只手配上"使用手册",让它干得更专业。Agent 是大脑,指挥手按照手册干活。
三者关系:
```
Agent(大脑,决策者)
├── 调用 Model(推理引擎)
├── 加载 Skills(技能手册)
└── 通过 MCP(万能插头)连接外部工具
```
如果你想知道如何配置一个 MCP 服务器,或者想了解怎么把 Skill 和 MCP 结合起来做自动化工作流,我可以继续展开。