本文主体是锦恢老师在datawhale的宣讲。

辅以一些本人的看法,希望各位大佬一起交流指正。

MCP实践代码

https://github.com/ceilf6/Lab/tree/main/agent/_MCP

同时你可以启动 Lab 仓库的 vite 开发服务器在 http://localhost:8030/wordMCP/ 检测交互效果

1. MCP的由来和原理

Funcion Calling基础

大模型自身是纯文本的交互,通过 Funcion Calling 可以通过调用函数跳出文本的限制

原理是 XML 指令包裹、引导解码器

通过 tools 字段注入上下文( funxcions: [] ),告诉大模型可以用到的工具

然后再通过大模型返回的 tool_calls 字段获得大模型想要使用的工具数组

但是工具需要包在后端服务里面,如果硬编码的话内容过多

  • 业务规模扩大带来的复杂性
  • 代码维护性下降
  • 系统不确定性挑战
  • 开发心智负担加重

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

但是框架并没有将工具函数从后端中解耦合出来

所以就需要抽象,“工程化的本质 → 抽象“

  1. 工具函数本身与大模型无关,类似于机器人的不同工种机械手
  2. 引导大模型工作的输入文本 → 提示词
  3. 大模型迭代过程中 上下文: 庞杂的运行时输出(例如浏览器MCP在运行过程中不断获取web信息) → 资源resource(外部信息能提高输出质量)。会写一个循环,不断将大模型返回值带上工具然后再去问大模型,终止条件就是 tool_calls 空,即大模型不需要调工具

MCP协议

工具、提示词、资源 → MCP服务器

准入MCP服务器的接口协议 → MCP协议

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

提示词开头一般会进行身份认同,让大模型找准定位,后面会插入信息。如果没有MCP的话,这个字符串会内联在服务代码中

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

有了MCP就能分层

  • Agent后端服务: POST, 业务客户层
  • MCP Server层: Prompt, Tool, Resource

2. MCP开发实践

常用框架

fastmcp py https://github.com/modelcontextprotocol/python-sdk 代码量少、快速
typescript-sdk TS https://github.com/modelcontextprotocol/typescript-sdk
java-sdk Java https://github.com/modelcontextprotocol/java-sdk
mcp-go go https://github.com/modelcontextprotocol/go-sdk

MCP包装之后不能立马落地,得进行大量优化、调试

工具

  • OpenMCP Client
  • MCP Inspector
工具 支持MCP 支持接入LLM调试
OpenMCP Client y y 一体化插件(遵循OVX协议)
MCP Inspector y n 运行时
MCP-CLI y n 前者的命令行调用
Cherry Studio y y

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

优质资源:

  • https://github.com/modelcontextprotocol/servers 的 README
  • 魔塔社区:阿里旗下的 AI模型、MCP、Agent 社区

Word MCP

fastmcp(开发服务器) + OpenMCP(调试验证MCP服务器)

MCP一般用uv管理。pip会直接下载全局,不讲究环境隔离~; anoconda体积过大,对云原生环境不优化

uv init 之后会生成类似于 package.json 的 .toml 文件

定义 tool, prompt, resource 的话就是用 @ 装饰一下

@mcp.tool()
@mcp.prompt()
@mcp.resource()

注意开发MCP服务器要多写多行注释,因为最终大模型是会吸收的

mcp 脚手架有一层语法糖支持直接通过 mcp run 不需要在 main 里面 run (我感觉其实在 main 里面写清楚更好吧)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

step 1. 需求确定与快速开发

需要对文档增删改查

如果公司已有业务服务,只需要在业务服务选择 endpoint ,再加上一圈 mcp装饰器(@mcp)让原本的业务服务本身变成一个 mcp 服务器即可,不一定需要完全另开个 mcp服务器

fastMCP 在 vide coding 中的提示词

我现在要开发一个 MCP 服务器让大模型学会调用工具,请使用 fastmcp 设计一个 word 文档的 MCP,使得大模型可以操控 word 文档,下面是一个 MCP 的开发案例

step 2. 开发验证基本思路

验证和优化才是重头戏

注意在交互测试之前必须先进行单点测试(像OpenMCP的串并行测试)否则在测试过程中报错的话前序时间成本就沉没了

  1. 根据领域知识和对问题的认知设置出第一版
  2. 测试工具完备性 - 工具自检
  3. 测试语义完备性 - 交互测试(注意得了解大模型的边界能力,像冷门的MCP的prompt可能会超出LLM的能力,导致MCP的效果很烂)
  4. 迭代调试 tool, prompt, resource 然后继续测试

step 3. 调试 prompt 进行测试

开头身份认同,然后还可以添加案例到 prompt 中

在 { } 中加入参数

在不断验证中润色提示词

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

step 4. 封装 prompt

在完成测试之后封装 prompt 方便后续使用,也方便用户快速定位服务器能力边界

对于复杂的 prompt 可以考虑使用 jinja 模版进行大规模组装和拓展

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

例如教会 LLM 专业领域的冷门知识(像仓颉刚出的时候我就尝试通过提示词或者是短期记忆来让 GPT 写一段像线段树的代码

step 5. 部署 MCP 服务器

像进行部署为 web服务

3. 从大模型到 AI Agent

2015年

搜索引擎公司

数据基本存储在搜索引擎中

如何进行数据挖掘 拿到价值

通过堆参数优化模型

后面四项技术对局面进行了改革

  • 英伟达CUDA & NVLink
  • Tranformer架构
  • DeepSpeed训练框架
  • 大规模语料积累

那么就直接叠数据模型扩张,且不会带来额外的工程化成本

“数据是大模型的燃料”

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • GPT-3:参数规模与智能提升
  • InstructGPT:RLHF训练范式
  • ChatGPT爆火现象
  • DeepSeek - R1 深度思考
  • 百模大战格局

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

早期是对话:输入输出模式

现在 Scaling Law 能力正在收敛,寻求更多的商业模式,例如工业化vibe coding等等,逐步向执行任务转变

4. MCP 与 AI Agent 的未来

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

流程规范化

Agent开发部门与大模型算法部分的衔接,建模Agent的全生命周期,降低迭代复杂系统的心智负担

让每个环节可控、可验证、可迭代

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

如何验证真实业务场景下的结果?
如何通过验证的反馈去迭代系统?
如何将这些步骤进行标准化和统一?

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐