返回
查看原链接原链接
Bilibili27分6秒 · —

MCP 深度教程:从底层原理到动手实践

MCP 深度教程:从底层原理到动手实践

MCP(Model Context Protocol,模型上下文协议)是一个让大模型通过标准化方式调用外部工具的统一协议,本节教程从核心概念、数据流转过程到动手配置,完整讲解了如何在 Claude Desktop 中使用 MCP 服务器并理解其底层原理。

核心要点

为什么需要 MCP

  • 大模型本身只会问答,不会使用外部工具,知识截止日期之前的训练数据无法覆盖实时信息
  • 大模型无法自行联网查询天气、操作 Unity、获取实时路况或抓取网页内容
  • MCP 的出现让大模型拥有了使用各种外部工具的能力,这是当前 AI 领域的核心热点话题

MCP 基本信息

  • 全称:Model Context Protocol(模型上下文协议)
  • 发布方:Anthropic 公司
  • 发布时间:2024 年 11 月 25 日
  • 名称中"上下文"的含义比较晦涩,本教程建议暂时不纠结名字,先理解它能做什么

核心概念定义

概念英文原名本质说明
MCP 主机MCP Host支持 MCP 协议的软件如 Claude Desktop、Cursor、Claude Code、Cherry Studio 等
MCP 服务器MCP Server一个符合 MCP 规范的普通程序名称有误导性,并非传统网络意义上的远程服务器
工具Tool编程语言中的一个函数接收输入参数,经过处理后返回输出结果

MCP Run

MCP Server 与手机应用的类比

MCP Server 和手机应用在本质上并无区别——两者都是内置了功能模块的程序,用于解决特定问题。以 iPhone 时钟应用为例:

  • 世界时钟:查看各国时间
  • 闹钟:设定提醒
  • 钟表:查看当前时间
  • 计时器:倒计时

每个功能就是一个 Tool。MCP Server 内置的 Tool 同样服务于特定场景,例如处理天气的 MCP Server 可能包含:

  • get_forecast:传入经纬度,返回未来几天的天气
  • get_alerts:传入地区,返回未来几天的气象预警

Tool 的本质是函数——一个执行特定任务的机器或工具箱:放入材料(输入)、按预定规则处理、给出成品(输出)。

MCP 支持的环境

  • 常见的 MCP Host 包括:Claude Desktop、Cursor、Claude Code、Cherry Studio
  • 大部分 MCP Server 通过 Node.js 或 Python 在本地启动
  • MCP Server 可能联网,也可能纯本地使用,是否联网不影响其"MCP Server"的称谓

实操环境配置

安装 Claude 客户端

Claude 是 VS Code 的一个插件,安装步骤:

  1. 到 VS Code 官方网站安装 VS Code
  2. 打开 VS Code,搜索"Claude"插件
  3. 点击安装,安装完成后侧边栏会出现 Claude 图标
  4. 点击图标进入 Claude 使用界面

配置模型

  • Claude 支持不同的 API 接入方和模型
  • 对 MCP 支持最好的模型:Claude 3.7(价格较贵)
  • 性价比之选:DeepSeek V3 0324(效果不错,价格低得多)
  • DeepSeek 官方网站提供 API,需要注册、登录、充值获取

OpenRouter 获取 API Key 的方法

OpenRouter 的优势:提供非常多的模型可供选用,几乎覆盖市面上所有主流模型,有些还可免费使用。

获取 Key 步骤:

  1. 打开 OpenRouter 页面,点击右上角"Sign In"登录
  2. 鼠标移到右上角,点击 "Keys"
  3. 点击 "Create Key"
  4. 输入两个信息:
  • API Key 名称(可随意,例如 "default")
  • 金额上限(单位:美元,可填可不填,建议填一个数字如 5)
  1. 点击 Create 创建

⚠️ 重要提醒:Key 创建后一定要找地方记下来,因为之后无法在 OpenRouter 页面中找回。

如果只使用免费模型,到这一步就完成了。使用付费模型需点击 "Credits" 进行充值。

Claude 中配置连接

  1. 点击配置图标
  2. API Provider 选择 OpenRouter
  3. Key 填写刚才记录的 API Key
  4. Model 选择 DeepSeek V3 0324

注意:

  • 有两种 DeepSeek V3 0324 可选,以 free 结尾代表免费模型
  • 免费模型多多少少有些问题,不太稳定,有能力建议选择收费版本(DeepSeek 很便宜)
  • 配置中有 Play Mode 和 Agent Mode,两个模式都要配置同样的信息
  • 配置完成后点击连接,测试模型能否正常回复

完整数据流转过程(核心机制)

配置加载阶段(MCP Server 注册)

用户保存 JSON 配置
    ↓
Claude 使用配置中的 command 执行程序(MCP Server)
    ↓
MCP Server 启动后等待指令
    ↓
Claude 连接:"你好,我是 Claude"
    ↓
MCP Server 应答:"你好,我是 Weather"
    ↓
Claude 询问:"你有什么工具可供使用?"
    ↓
MCP Server 回答:"我有两个工具:get_forecast(传经纬度返回天气)、get_alerts(传州名返回预警)"
    ↓
Claude 记录工具列表(注册完成)

此阶段发生在开启 MCP Server 的一瞬间,所有信息都会被 Claude 记住以备后续使用。

用户提问阶段(工具调用)

用户提问:"纽约明天的天气怎么样?"
    ↓
Claude 将用户问题 + 已注册的 MCP Server 列表 + 每个 Server 的 Tools 列表 传给模型
    ↓
模型判断:用户问题我回答不了(知识截止),但 weather server 中的 get_forecast 工具可以解决
    ↓
模型告诉 Claude:"调用 get_forecast,参数:北纬 40 度,西经 74 度"
    ↓
Claude 与 MCP Server 沟通:"调用 get_forecast,参数为北纬 40 度,西经 74 度"
    ↓
MCP Server 用指定参数调用 get_forecast 函数,拿到天气结果并传回给 Claude
    ↓
Claude 将结果回传给模型
    ↓
模型根据结果回答用户问题,答案返回给 Claude
    ↓
Claude 将最终答案返回给用户

关键要点:模型不会直接调用工具,而是通过 Claude Host 作为中间人进行调用。Claude 从模型收到"需要调用哪个工具及参数"的指令,再与 MCP Server 沟通执行。

MCP Server 的配置方式

自动安装 vs 手动配置

自动安装(两种途径本质相同):

  • 在聊天界面让模型直接创建并安装 MCP Server
  • 在 MCP Server 市场中点击 Install

这两种方式的原理:每个 MCP Server 都有对应的 GitHub 仓库,仓库中有说明文档,模型通过阅读说明文档来运行程序、新增文件,从而完成安装

手动配置(推荐)

  • 具有确定性,清楚每个环节在做什么
  • 对安装程序、路径、版本有控制权
  • 避免模型在电脑中"胡搞乱搞"或安装失败
  • 兼容性更好(一些 MCP Host 不支持自动安装)

JSON 配置文件详解

{
  "mcpServers": {
    "weather": {
      "disabled": false,
      "timeout": 60,
      "command": "uv",
      "args": ["..."],
      "transportType": "stdio"
    }
  }
}

配置字段说明:

字段含义备注
weatherMCP Server 的名字可自定义
disabled是否禁用该 MCP Server去掉该字段则默认为启用
timeout连接超时时间(秒)超过设定时间未连接成功则放弃
command运行 MCP Server 的程序uvnpx
args对应参数传递给运行程序的参数
transportType沟通方式stdioSSE

两种传输类型(Transport Type)

  1. stdio:MCP Server 使用标准输入和标准输出与 Host 沟通
  • 目前大部分 MCP Server 使用这种模式
  1. SSE(Server-Sent Events):使用较少,教程中暂时忽略

MCP Server 查找与安装实操

MCP Server 市场

  • MCP.so
  • MCP Market.com
  • 其他类似平台

大部分 MCP Server 使用 Python 或 Node.js 编写,对应的启动程序一般是 uvx(Python)或 npx(Node)。

使用 uvx 启动 Python 编写的 MCP Server

uv 简介:Python 界的包管理软件,uvxuv tool run 的缩写,代表使用 uv 来运行一个工具(此处的"工具"是 uv 领域的工具,与 MCP 中的 Tool 不是同一概念)。

安装 uv:前往 uv 的 GitHub 仓库找到对应安装命令(macOS 用户使用 macOS 对应的命令)。

验证安装:执行 uvx pywhat hello world(让 pywhat 程序做一个牛叫的图片并显示 hello world),如果图片正常显示则安装成功。

fet`ch MCP Server 安装示例

  1. 打开 MCP.so 搜索 "fetch"
  2. 进入后点击 Content
  3. 选择 uvx 配置命令,复制内容
  4. 回到 Claude,在 JSON 配置中添加逗号并粘贴
  5. 格式化配置
  6. 等待加载完成

npx 启动 Node.js 编写的 MCP Server

npx 简介:与 uvx 类似,可以自动下载并安装程序。区别在于 uvx 安装 Python 程序,npx 安装 Node.js 程序。npx 是 Node.js 的一部分,直接安装 Node.js LTS 版本即可。

hot news MCP Server 安装示例

  1. 打开 MCP Market 网站
  2. 搜索 "hot news"(用于拉取新闻)
  3. 选择 MCP Server 配置部分的对应内容复制
  4. 回到 Claude 点击 MCP Server 粘贴
  5. 等待加载完成

其他启动方式:还有 npx(部分场景)、node 直接启动等方式,具体查看对应 MCP Server 的安装文档即可。

加载超时问题及解决方法

问题原因uvxnpx 首次执行某程序时,需要先下载依赖,默认超时时间仅为 1 分钟,下载慢时容易超时。

报错信息request timed out

解决步骤

  1. 复制配置中的完整命令(如 uvx + 对应参数)
  2. 在终端中手动执行
  3. 等待程序下载完毕(显示"34 个依赖全部安装完成"即成功)
  4. 正常情况下程序启动后不会有输出提示(因为 MCP Server 通过输入输出沟通),这是正常现象
  5. Ctrl + C 退出(若无效,可按 Ctrl + \ 退出,会有系统提醒,关闭即可)
  6. 回到 Claude,点击 Retry Connection,此时加载速度会明显变快

案例分析

案例一:使用 fetch 抓取网页并保存为 Markdown

用户需求:抓取指定网页内容,转换为 Markdown 后写入项目目录中的 .md 文件。

执行过程

  1. Claude 发现 fetch MCP Server 并确定可用工具
  2. 同时调用内部工具 write_to_file 准备写入文件
  3. 拼接工具调用参数,征求用户同意
  4. 使用 fetch MCP Server 获取网页内容
  5. 将网页内容转换为 Markdown
  6. 写入用户指定的 .md 文件

结果:任务完成,过程"非常丝滑,没有出现一点问题"。

案例二:查询纽约天气

用户需求:纽约明天(4 月 14 日)天气如何?

执行过程

  1. Claude 发现 weather MCP Server
  2. 确定 get_forecast 工具可解决问题
  3. 自动填入纽约经纬度(北纬 40 度,西经 74 度)
  4. 征求用户同意后执行
  5. 获取到未来几天天气信息
  6. 模型总结并给出包含白天、夜间及相关建议的回答

结果:效果不错,准确回答了纽约 4 月 14 日(教程录制日期为 4 月 13 日)的天气。

限制与待确认问题

  • 教程演示的 open weather map MCP Server 调用的是美国气象局 API,目前只有美国数据,对其他地区用处有限
  • 免费模型(如 DeepSeek V3 0324-free)多多少少有些问题,不太稳定
  • 模型知识截止日期限制了其直接回答能力(示例中模型知识截止到去年 12 月)
  • 自动安装方式存在不确定性:用户无法得知模型在电脑中做了什么,且可能安装失败
  • 教程仅演示了 stdio 和部分启动方式,SSE 等传输类型未深入讲解

总结

MCP 作为 Anthropic 在 2024 年 11 月发布的协议,核心价值在于让大模型能够标准化地使用外部工具。其体系由三个层次构成:Host(支持 MCP 的软件)、Server(符合 MCP 规范的程序)和 Tool(具体功能函数)。

在实际使用中,MCP Server 本质上就是一个普通程序,通过 JSON 配置启动命令和参数即可接入 Host。从数据流转看,整个流程是:用户提问 → Host 将问题与工具列表交给模型 → 模型选择合适工具 → Host 调用 MCP Server 执行 → 结果回传模型 → 模型生成最终回答。理解这个机制后,无论是配置还是后续开发 MCP Server 都能做到心中有数。

教程作者计划在后续推出进阶内容,演示如何从零编写 MCP Server,并通过截获 MCP Server 输入输出的方式深入剖析协议细节,但这取决于本期视频的效果和关注度。