您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码:  验证码,看不清楚?请点击刷新验证码 必填



  求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Model Center   模型库  
会员   
   
AI 智能化软件测试方法与实践
5月23-24日 上海+在线
人工智能.机器学习TensorFlow
5月22-23日 北京
图数据库与知识图谱
5月22-23日 北京
     
   
 
 订阅
实操干货!MCP Server开发从0到1
 
作者:颜俊鸿
  179  次浏览      4 次
 2025-5-21
 
编辑推荐:
本文主要介绍了MCP Server开发从0到1相关内容。希望对你的学习有帮助。
本文来自于微信公众号腾讯云开发者 ,由火龙果软件Linda编辑,推荐。

01 MCP 协议简介

Model Context Protocol (MCP) 是由 Anthropic 提出的开放协议,旨在标准化 AI 大模型与外部数据源和工具的连接。官网称 MCP 为 AI 应用的 USB-C 端口,提供一种将 AI 模型连接到不同数据源、工具的标准化方法。目前,包括 Block、Apollo、Replit 等知名企业已开始采用 MCP 协议,显示出其在 AI 领域的重要地位和发展潜力。

简单来说,MCP 是一种客户端-服务器架构的协议,允许 LLM 应用程序(如 Claude、各种 IDE 等)通过标准化的接口访问外部数据和功能。这解决了 LLM 在实际应用中常见的一些痛点:

无法直接访问实时数据(如天气、股票行情等);

无法执行外部操作(如发送邮件、控制设备等);

无法访问用户的本地文件或其他私有数据(如性别、年龄、收入等)。

通过 MCP,这些限制得到了优雅的解决,同时保持了安全性和可扩展性。所以也有人说,MCP 是 AI 的 “Type-C”,统一接口接入各种工具。

02 MCP 主要架构

MCP 采用客户端-服务器架构,主要包含以下几个组件:

MCP 主机(Host):如 Claude Desktop、IDE 或其他 AI 工具,通过 MCP 访问数据。

MCP 客户端(Client):与服务器保持 1:1 连接的协议客户端。

MCP 服务器(Server):轻量级程序,通过标准化的 MCP 协议公开特定功能。

本地数据源(Local Data Source):计算机上的文件、数据库和服务,MCP 服务器可以安全访问这些内容。

远程服务(Remote Service):通过互联网可用的外部系统(例如通过 API),MCP 服务器可以连接这些服务。

整个流程大致是这样:

目前,MCP 还处于发展初期,但其潜力巨大。更重要的是生态,基于统一标准下构筑的生态也会正向的促进整个领域的发展。概念是 2024 年底才提出,几个月不到,在 GitHub 上的 Star 数已经突破 20K,可为相当火热。

03 MCP 开发踩坑经历

以 查询今天广州天气 为例子,以下分享一下自己在开发 MCP Server 工具时踩过的坑。

3.1 环境

MCP 无论是开发,还是使用,都对 Node 版本有要求,要求 Node >= 18。所以如果你一开始用 Node < 18 进行包安装之后,就算后面切换成正确的 Node 版本,MCP Server 依然不能正确地跑起来。需要重新安装依赖包 modules。

建议:一开始就确认自己的环境是否正确,再进行安装。

3.2 调试

参考上文提到的 MCP 时序图,是 Client 端调用的 Server 。所以,要想断点调试,就必须需要 Client 在调用 Server 的时候启动断点调试 ( node --inspect )。目前看来,起码 Cursor 是不支持断点调试的,其它工具或许支持,有待探索。

官方提供了一个调试工具,不过该工具更多的是围绕 MCP 协议本身的调试,调试界面如下图:

其中,日志记录可以通过以下方法来输出:


const mcpServer = new McpServer({
   name: 'your-mcp-tool',
   version: '1.0.0',
}, {
   capabilities: {
       logging: {} // 开启日志记录,必须,不然报错
   }
});
async function main() {
   // ...
mcpServer.server.sendLoggingMessage({
   level: 'info',
    data: 'Server started successfully',
   });
}

官方文档曾让我误解,包括 初始化 McpServer 的 capabilities 的 logging 的时候如果不传会报错,直到翻源码才发现正解 ......

建议:如果调试的时候有问题的话,可以先按上述方法来检验,然后可以去看文档,源码,已实现的 MCP 工具。

文档:https://modelcontextprotocol.io/docs/tools/debugging

源码:https://github.com/modelcontextprotocol/typescript-sdk

已实现的 MCP 工具:https://modelcontextprotocol.io/examples

3.3 使用

MCP 工具的使用倒是比较简单,关键是 Client 端最好是用上最新的版本来支持 MCP 的新特性,比如 Cursor ,需要更新之后才能方便地配置环境变量 env,因为我们一般需要把 token 或 API_KEY 之类的密钥传给工具来进行接口调用。如下图:

可以参考 Github MCP 的用法。

3.4 幻觉

有时候在使用 MCP 工具 的时候,不可避免会遇到它的幻觉问题,如下图:

根据工具,它已经拿到了最新时间 2025-03-27,但是在调用下一个 MCP 工具的时候,时间还是搞错成 2024 了。

建议:

方法一:丰富 prompt。在时间前面加上 「根据当前时间」,比如上图的就是,“根据当前时间,查今天广州天气”。

方法二:参数矫正。比如参数里只让模型提供月-日,年份由 MCP 工具 来补充。

方法三:使用 MCP Prompt 来丰富 prompt。不过这个因为比较少 MCP Client 支持,所以这里不过多介绍,有兴趣的同学可以看看官方文档

兼容性如下图,可以看到大部分工具都只是支持 MCP Tools 而已:

3.5 错误重试

由于网络抖动,一旦出现失败,整个咨询过程就会失败,模型分析也会失灵,同时也浪费了模型资源。

建议:如果工具涉及到网络请求,可以考虑做错误重试机制,如设定重试次数和间隔时间,以免出现网络抖动或其它因素导致请求失败。

3.6 MCP 工具列表

最后贴一下一些比较好用的 MCP 工具:

官方推荐:https://modelcontextprotocol.io/examples

mcp.so:https://mcp.so/

04 关于 AI 的感想

在看到 MCP 工具正确返回的时候,我内心是很兴奋的,如下图:

它不但理解了返回的 JSON 数据,还附带了自己对数据的理解,并给出了一些合适的建议。看起来是很美好是不是?

但是,当我自己去百度一下之后,我看到了下图的展示:

看到这个丰富的 UI 展示之后,我陷入了沉思。我一直希望通过 AI 对话实现各种各样的能力,给它配上各种工具(比如这次的 MCP 工具),让它功能越来越强大,自以为是地认为这是很牛逼的未来,但,真的是这样么?

偶然间看到了一篇文章,里面有一段话很是触动我:

做个比喻,我小学时代刚开始用电脑是Dos系统,那就是命令行输入和一行行的数据输出的文本来回交互,那个时代的应用软件以及体验,是完全无法和进入视窗时代,windos系统的应用比拟的。我们计算机的发展,给我们带来了各种更丰富友好的交互体验(各种radio box, check box, button, drow box控件到鼠标,触摸屏外设),为啥因为一个像人对话一样的想象,要把自己的应用反而导向到原始的仅有文字来回的交互呢?

是啊,为什么在交互设计上,我们要倒退回去呢?文章中引申出一个概念,值得思考:我们要 对话连接服务,还是服务融入对话?以下是我自己的一些思考:

对话连接服务,简单可以理解为在对话的过程中,可能给你一张图片,一个链接,甚至是一个电商小程序,点击即可跳转去选品。强调服务本身流程和专业性,对话作为辅助手段。专业用户对特定服务流程熟悉,可能更倾向直接在专业界面去进行操作,对话仅在遇到问题或特殊说明时介入。

服务融入对话,就是上文提到的,纯文字告诉我广州天气:以对话交互为核心,将服务功能融入自然语言对话。如通过与 AI 对话查询天气,AI 调用后台接口查询并在对话展示结果,降低使用门槛。这种能力,往往在特定人群和特定场景下需要,比如:

老年用户:因为老年用户往往是有 视觉障碍 和 认知障碍 ,他们可能已经老到看不清手机上的文字,因为年纪大,对新鲜事物的认知也不足,「��」放大镜这个图标对他们来说,很难理解为什么能点击查东西。如果有 AI 的帮助,说不定能解决很多他们的认知问题。好比如果能通过语音来帮他们调用现在交互复杂的互联网服务,“帮我打一辆去广州塔的车” 或 “帮我点一份番茄炒蛋,送到xxx地方”。

外国友人:同样的,国内很多服务都是基于中文去建设的,外国友人来中国的话,有时候会因为语言问题,无法实现自己想要的能力,比如上文提到的电商,从选品,到添加购物车,到地址填写,到下单,每个步骤在不同的 APP,UI 都是不一样的,有的甚至连流程都不一样,比如 拼多多 都没有购物车,其中又充斥着大量他们可能看不懂的中文,导致试错成本急剧上升。AI 的出现,说不定就能比较低成本地解决这个问题。

无法解放双手的你:是的,在你开车的时候,通过 AI 帮你点一份到家的外卖,在你回到家直接能吃上。或者在你做饭的时候,帮你发一条消息给伴侣,告知 ta 今晚有什么晚餐,好让 ta 早点回家。又或者一个人玩王者荣耀,但是又希望有个瑶妹辅助的你:

这三种场景,可以归纳为 用户无法做出该服务预期动作的场景下,我们可以选择让服务融入 AI,让 AI 来辅助用户。

回顾两者,对话连接服务,适当时候导向服务,提高流程的命中率和成功率。服务融入对话能让用户通过语音指令让 AI 完成复杂任务,提高效率和便捷性。

小孩子才做选择,作为成年人,肯定是两者都要。在我希望它是对话时,它是对话。当我希望它能给我服务时,它也能给我服务。比如对话告诉 AI,“我想买一个鼠标,给我商品展示链接”,点击链接跳转到商品展示,选品后,剩下的流程,我希望对话解决,“就这个,帮我下单,送到家”。所以,服务和 AI 的结合,除了取决于使用者本身能力以外,还得取决于使用场景,不能一概而论,更不能为了蹭 AI 的热度,就滥用 AI,或扭曲已有的交互模式。

上述梳理了下 AI 的使用模式,那么 AI 目前已有的能力有哪些?我自己整理了下:

海量知识与信息整理能力:AI 拥有海量知识输出能力,并且能处理海量信息,快速从中整理归纳出有效内容。这里并不是说 AI 等同于数据库 // 图书馆一类的知识存储型的角色,而是它理解了字与字之间的联系,并根据上文推导出下文,所以如果它是一个训练了海量优质数据的模型,那么它也能提供海量知识的输出。

非结构化数据处理能力:擅长将非结构化数据梳理成结构化数据,比如将中文转换成符合 API 服务要求的结构化数据,如在查询天气时,AI 把「广州」识别成城市,并转换成 { "city": "广州" }

快速学习与自适应能力:随着处理数据量增加,AI 能优化算法和模型,在后续处理相似任务时表现更出色。这是因为 AI 受训练数据的影响,随着算力资源、基座模型,训练算法、反馈机制 等各方面的提升,所以 AI 的学习效率以肉眼可见的速度提升,2年间就天翻地覆,所以未来 AI 能做的事情估计远超想象。

自动化与不间断运行:AI 可实现自动化,24 * 7 不间断运行,不受时间、精力和体力限制,能随时响应任务,提高业务连续性和响应效率。

重复性任务处理优势:处理重复性任务时,AI 不会像人类因重复工作而疲惫或出错,能保持稳定处理质量和效率,适用于反复执行特定查询或数据处理场景。 最后两点,均能够很好地说明,AI 是天生的优质牛马,只是现在它能力还未能充分展示。

AI 毫无疑问是下一个时代的趋势,在这种背景下,我们要做的只是顺势而为,AI 不是万能的,所以无需焦虑,把它想象得如何强大,我们需要做的是如何学会驾驭这种新的技术。

当人类发明汽车之后,你要做的不是去和汽车赛跑,而是去考一个驾照。

 
   
179 次浏览       4
相关文章

基于图卷积网络的图深度学习
自动驾驶中的3D目标检测
工业机器人控制系统架构介绍
项目实战:如何构建知识图谱
 
相关文档

5G人工智能物联网的典型应用
深度学习在自动驾驶中的应用
图神经网络在交叉学科领域的应用研究
无人机系统原理
相关课程

人工智能、机器学习&TensorFlow
机器人软件开发技术
人工智能,机器学习和深度学习
图像处理算法方法与实践

最新活动计划
人工智能.机器学习TensorFlow 5-22[北京]
AI智能化软件测试方法与实践 5-23[北京]
图数据库与知识图谱 5-22[北京]
DeepSeek大模型应用开发 6-12[厦门]
基于 UML 和EA进行分析设计 6-23[北京]
嵌入式软件架构-高级实践 7-9[北京]
 
 
最新文章
AIGC技术与应用全解析
详解知识图谱的构建全流程
大模型升级与设计之道
自动驾驶和辅助驾驶系统
ROS机器人操作系统底层原理
最新课程
人工智能,机器学习和深度学习
人工智能与机器学习应用实战
人工智能-图像处理和识别
人工智能、机器学习& TensorFlow+Keras框架实践
人工智能+Python+大数据
成功案例
某综合性科研机构 人工智能与机器学习
某银行 人工智能+Python+大数据
北京 人工智能、机器学习& TensorFlow
某领先数字地图提供商 Python数据分析
中国移动 人工智能、机器学习和深度学习