AI 小白学 MCP 完全指南
AI 小白学 MCP 完全指南
从零开始,用最简单的方式理解 MCP(Model Context Protocol)
一、MCP 是什么?
MCP = Model Context Protocol(模型上下文协议)
这是 Anthropic 公司在 2024 年发布的一个开放标准,被形象地称为 "AI 的 USB-C 接口"。
用生活类比理解
想想以前的手机充电器:
2010 年:诺基亚用圆口、三星用扁口、iPhone 用 30 针
→ 换手机就得换线,烦死了
2024 年:全部统一成 USB-C
→ 一根线充所有设备
MCP 干的是同一件事:
没有 MCP 的时候:
用 Claude → 要专门写代码连接数据库
换 GPT → 重新写一遍
换其他 AI → 再写一遍
每个 AI 各搞一套,开发者累死
有了 MCP:
写一个 MCP 服务器 → 所有 AI 都能用
一次开发,到处用
三个核心概念
┌─────────────────────────────────────────────────┐
│ 宿主 (Host) │
│ Claude Code / Claude Desktop │
│ ↑ 用 MCP 协议沟通 ↓ │
├─────────────────────────────────────────────────┤
│ MCP 客户端 (Client) │
│ 内嵌在宿主中 │
│ ↑ 一对一连接 ↓ │
├─────────────────────────────────────────────────┤
│ MCP 服务器 (Server) │
│ 你写的小程序,提供工具(Tools)给 AI 用 │
│ │
│ 工具 1: 查金价 → 返回最新金价数据 │
│ 工具 2: 查天气 → 返回实时天气 │
│ 工具 3: 查数据库 → 执行 SQL 返回结果 │
└─────────────────────────────────────────────────┘
二、为什么要用 MCP?
没有 MCP 之前
想让 AI 帮你查个金价:
你: "帮我查查今天金价多少"
Claude 的操作:
1. 打开搜索引擎 → 搜索"今日金价"
2. 打开三五个网页 → 从广告堆里找数字
3. 手动整理成表格
4. 返回给你
痛点:
❌ 慢(要搜网页、要解析)
❌ 不准(网页信息可能过期)
❌ 每次都要重复劳动
❌ 离线就不能用
有了 MCP 之后
你: "帮我查查今天金价多少"
Claude 的操作:
1. 调用 get_gold_price() 工具
2. 直接返回数据
优点:
✅ 快(1 毫秒,不用搜网页)
✅ 准(本地数据,实时更新)
✅ 省力(写一次管用一辈子)
✅ 离线也能查
MCP 解决了什么问题
| 问题 | 以前 | 现在 |
|---|---|---|
| AI 获取实时数据 | 手动复制粘贴 | 工具直接调用 |
| 接入不同 AI 平台 | 每种 AI 写一套代码 | 写一次 MCP 服务器就行 |
| 数据访问方式 | 各写各的,没有标准 | 统一协议,即插即用 |
| 扩展性 | 加个功能要改代码 | 加个工具就行 |
三、什么情况写 MCP?和 Skill 有什么区别?
这是最容易搞混的问题,我用一张表说清楚:
对比表格
| 对比项 | Skill | MCP 服务器 |
|---|---|---|
| 本质 | Claude 的操作说明书 | 一个独立运行的小程序 |
| 做什么 | 告诉 Claude 怎么做某事 | 给 Claude 提供新能力 |
| 存在形式 | .md 文件(纯文本) |
Node.js/Python 程序 |
| 运行方式 | Claude 读 Markdown 执行 | 独立进程运行,和 Claude 通信 |
| 能做什么 | 搜网页、写文件、调命令 | 查数据库、调 API、访问本地文件 |
| 类比 | 给员工的《操作手册》 | 给员工一套《新工具》 |
| 适合场景 | 固定流程、多步骤任务 | 需要实时数据或操作外部系统 |
举个例子
Skill 就像「黄金报告操作指南」:
第 1 步:打开浏览器搜金价
第 2 步:把数字填到表格里
第 3 步:打开画图软件画折线图
第 4 步:保存到网页
MCP 就像「金价查询机」:
按一下按钮 → 直接吐出金价数据
她俩可以配合使用 ✅
Skill 的步骤里可以调用 MCP 工具:
Skill 优化后:
第 1 步:调用 MCP get_gold_history() → 看历史价格
第 2 步:搜网页补今天最新价
第 3 步:更新数据库 + 画图
第 4 步:保存报告
MCP 提供数据,Skill 编排流程,各司其职。
四、实战:写一个 MCP 服务器
这是我们在这个项目里写的黄金价格 MCP 服务器,完整代码可以看
/root/mcp-gold-server/index.js
准备工作
Bash
# 创建项目目录
mkdir mcp-gold-server
cd mcp-gold-server
# 初始化项目
npm init -y
# 安装 MCP SDK
npm install @modelcontextprotocol/sdk
核心代码解读
JavaScript
// 1. 导入 MCP SDK
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
// 2. 创建 MCP 服务器实例
const server = new McpServer({
name: "gold-price-server", // 服务器名字
version: "1.0.0", // 版本号
});
// 3. 注册一个工具(Tool)
// 告诉 AI:我有一个功能叫 get_gold_price,你可以随时调用
server.tool(
"get_gold_price", // 工具名称(AI 调用时用的名字)
"查询最新的实体黄金价格", // 工具描述(告诉 AI 这个工具干什么的)
async () => { // 处理函数(AI 调用时执行的代码)
const data = readDataFromFile(); // 你的业务逻辑
return {
content: [{ type: "text", text: formatResult(data) }],
};
}
);
// 4. 注册带参数的工具
server.tool(
"get_gold_history",
"查询黄金价格历史记录",
{ days: z.number().optional() }, // 参数定义
async ({ days }) => { // 处理函数接收参数
// ...
}
);
// 5. 启动服务器(通过标准输入输出通信)
const transport = new StdioServerTransport();
await server.connect(transport);
关键概念
| 概念 | 说明 | 代码对应 |
|---|---|---|
| McpServer | MCP 服务器主类 | new McpServer({...}) |
| tool() | 注册一个工具 | server.tool(名称, 描述, 处理函数) |
| StdioServerTransport | 通信方式(标准输入输出) | new StdioServerTransport() |
| content | 返回给 AI 的内容 | content: [{ type: "text", text: "..." }] |
| Zod 参数 | 参数类型定义 | { days: z.number() } |
目前这个项目有 3 个工具
| 工具名 | 功能 | 怎么用 |
|---|---|---|
get_gold_price() |
查最新金价 | 直接说"查金价" |
get_gold_history(days) |
查历史记录 | "最近金价走势" |
compare_brand_prices() |
品牌对比 | "哪个品牌金价最低" |
五、如何配置和调用 MCP
配置方式
在项目目录下创建 .mcp.json 文件:
JSON
{
"gold-price-server": {
"command": "node",
"args": ["/root/mcp-gold-server/index.js"],
"description": "查询黄金价格数据"
}
}
配置后,MCP 服务器会自动被 Claude Code 识别和加载。
调用方式
方式 1:直接跟 Claude 说
你: "查金价"
Claude: → 自动调用 get_gold_price() 工具 → 返回结果
方式 2:命令行测试
Bash
# 列出所有工具
printf '初始化消息\n列出工具消息\n' | node index.js
# 调用具体工具
printf '初始化消息\n调用工具消息\n' | node index.js
方式 3:在 Skill 里调用
Skill 的步骤里写明调用 MCP 工具,Claude 执行时自动使用。
六、MCP vs Skill:什么时候用哪个?
一张决策图
你想让 AI 做什么?
│
▼
┌─ 需要实时数据吗?──── 是 ──→ 写 MCP 服务器
│ (查金价、查天气、查数据库)
│
└─ 需要多步流程吗?──── 是 ──→ 写 Skill
(生成报告、批量处理、定时任务)
│
▼
两个都要?── 同时用!
Skill 编排流程 + MCP 提供数据
本项目的实践
Skill(gold-price-report)
├── 第 1 步:调 MCP get_gold_price() ← 检查是否有今日数据
├── 第 2 步:搜网页(补充最新价)
├── 第 3 步:调 MCP get_gold_history() ← 获取历史趋势
├── 第 4 步:画趋势图
├── 第 5 步:更新报告 → 网页
└── 第 6 步:通知你
七、总结
MCP = 让 AI 调用外部工具的统一标准
三个词记住:
宿主 (Host) → 用 AI 的人
MCP 服务器 → 提供工具的小程序
Tool (工具) → 小程序的功能
两个对比:
Skill = 操作手册(教 AI 怎么做)
MCP = 工具箱(给 AI 现成的工具)
一个配合:
Skill + MCP 一起用 → 又快又准
扩展阅读
- MCP 官方网站
- MCP 规范文档
- MCP GitHub
- 本项目的 MCP 服务器源码:
/root/mcp-gold-server/index.js - 本项目的 Skill 定义:
/root/.claude/skills/gold-price-report.md