✏️ 编辑

AI 小白学 MCP 完全指南

创建于 2026-06-15 08:43:08 · 更新于 2026-06-16 11:07:52

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 一起用 → 又快又准

扩展阅读