首页/新闻资讯/正文详情

《MCP 入门实战》第 4 课:环境与第一个 MCP Server(Python)

发布时间:2026/11/6 5:07:53 来源:云帆数科 栏目:资讯中心
《MCP 入门实战》第 4 课:环境与第一个 MCP Server(Python)
本文收录于专栏AI Agent智能体系列—— 20 课从协议原理到生产部署的 MCP 中文实战课程点击订阅可跟踪后续更新。【摘要】你想写第一个 MCP Server 但不知道从哪下手这课用官方 Python SDK 手把手搭最小 ServerFastMCP 三段结构、mcp.tool() 装饰器、MCP 客户端直连测试。环境用 conda uv 隔离全程命令可照抄跑完你有一个能被宿主调用的真 Server而不是只看懂了概念。阶段 2 上手实战Server / Client / LLM 接入 | 来源【原·03-01 first-server】 | 知识更新至 2026-10当日检索 本机实测关键字MCP Server、Python MCP SDK、FastMCP、mcp.tool装饰器、MCP开发环境、conda环境、MCP最小示例、MCP客户端测试概念讲解4.1 装什么就三样组件作用安装Python 3.10运行环境系统自带或 python.orgmcp包官方 Python SDK写 Server/Clientpip install mcpMCP Inspector可视化调试面板可选第 6 课细讲npx modelcontextprotocol/inspector国内网络下 pip 走清华镜像pip install mcp -i https://pypi.tuna.tsinghua.edu.cn/simple。版本坑2026-10 实测踩到pip install mcp现在装到的是mcp 2.x本机实测 2.3.0它的 Server 类叫MCPServer不是网上绝大多数教程含微软原课里的FastMCP# mcp 1.x 及所有旧教程的写法2.x 里直接 ModuleNotFoundError:frommcp.server.fastmcpimportFastMCP mcpFastMCP(Demo)# mcp 2.x 的正确写法本课程以此为准:frommcp.server.mcpserverimportMCPServer mcpMCPServer(Demo)两个选择都写清楚学新直接用 mcp 2.x本课程全部代码的口径。除改名外主要差异Python 对象字段是 snake_caseinput_schema不是inputSchemaHTTP 模式的 host/port 移到mcp.run()参数里。跟旧教程pip install mcp2钉在 1.x原课代码原样可跑。生态现状2026-10 实查 PyPI官方在双线并行发版——2.0.0 于 2026-07-28 发布与 2026-07-28 规范同日1.x 线同期仍在维护1.30.0 发布于 2026-09-07。也就是说 2.x 是当前最新主线但生态里大量现成 Server 和教程仍是 1.x 写法。两个推论你自己写的 Server放心用 2.x规范层面它就是现行官网/specification/latest已指向 2026-07-28你装的第三方 Server若它钉了mcp2它的运行环境是独立的uvx/npx 各自装依赖与你 Client 用的 mcp 版本不冲突不用管官方迁移指南https://py.sdk.modelcontextprotocol.io/v2/migration/2026-10 检索可达。4.2 最小 Server 的结构一个 MCP Server 就三部分创建实例 → 装饰器注册工具/资源 →mcp.run()启动。装饰器底下SDK 会从函数签名和 docstring 自动生成工具的 JSON Schema——docstring 就是工具的 description是写给你家模型看的 prompt认真写。案例实战电商订单 Server目标写一个含 2 工具 1 资源的 Server然后用官方 Client SDK 真连一遍验证。Server 代码【已实测 2026-10mcp 2.3.0Python 3.10】04_server.pyfrommcp.server.mcpserverimportMCPServer mcpMCPServer(ShopTools)mcp.tool()defadd(a:int,b:int)-int:两数相加returnabmcp.tool()defsearch_orders(keyword:str,max_results:int10)-list[dict]:按关键词搜索订单fake[{id:E20261001001,item:蓝牙耳机,status:已发货},{id:E20260928007,item:蓝牙耳放,status:已签收},{id:E20261003003,item:机械键盘,status:待付款},]hit[oforoinfakeifkeywordino[item]]returnhit[:max_results]mcp.resource(docs://return-policy)defreturn_policy()-str:退货政策文档return# 退货政策\n签收后 7 天内无理由退货运费由商家承担。if__name____main__:mcp.run()# 默认 stdio 模式Client 验证代码【已实测 2026-10】04_client.pyClient 把 Server 拉成子进程走真实 stdio 协议importasynciofrommcpimportClientSession,StdioServerParametersfrommcp.client.stdioimportstdio_clientasyncdefmain():paramsStdioServerParameters(commandpython,args[04_server.py])asyncwithstdio_client(params)as(r,w):asyncwithClientSession(r,w)ass:awaits.initialize()toolsawaits.list_tools()print(TOOLS:,[t.namefortintools.tools])resawaits.call_tool(add,{a:17,b:25})print(add(17,25) ,res.content[0].text)resawaits.call_tool(search_orders,{keyword:蓝牙})print(search_orders(蓝牙) ,res.content[0].text[:120])resrcawaits.read_resource(docs://return-policy)print(resource ,resrc.contents[0].text[:30])asyncio.run(main())实测输出TOOLS: [add, search_orders] add(17,25) 42 search_orders(蓝牙) { id: E20261001001, item: 蓝牙耳机, status: 已发货 } resource # 退货政策 签收后 7 天内无理由退货运费由商家承担。三个要点stdio 模式不用手动起 ServerClient 负责拉起子进程。这就是桌面宿主的配置里只写commandargs的原因第 7 课展开。返回值类型自动序列化search_orders返回list[dict]SDK 自动转 JSON。模型收到的是结构化文本。stdout 只放协议报文在 Server 里print()会污染协议流导致宿主解析失败日志一律print(..., filesys.stderr)。小结环境就三样Python 3.10 /pip install mcp国内加清华镜像/ Inspector可选mcp 2.x 的 Server 类是MCPServer旧教程的FastMCP在 2.x 直接报错跟旧教程就pip install mcp2docstring 即工具描述是模型选工具的依据stdio 模式 Client 拉起 Server 子进程stdout 只走协议日志走 stderr下一课把这个 Server 接上国产大模型让模型自己决定何时调工具——参见第 5 课《第一个 Client 与国产大模型接入》。扩展阅读原课 03-01 first-serverhttps://github.com/microsoft/mcp-for-beginners/tree/main/03-GettingStarted/01-first-servermcp 1.x→2.x 迁移指南https://py.sdk.modelcontextprotocol.io/v2/migration/MCP Python SDK 仓库https://github.com/modelcontextprotocol/python-sdk系列导航本课程全集见专栏AI Agent智能体系列上一课·第 3 课 传输机制下一课·第 5 课 第一个Client与国产大模型接入我的专栏蛋白 / 抗体 / 多肽 / 核酸分子模拟 / 动力学 / 对接药物 / 设计 / 案例AI / Agent / 大模型开源蛋白结构预测分子模拟基础小分子药物设计案例AI Agent系列开源蛋白生成方法实践分子动力学模拟-Amber蛋白药物设计案例化学大模型开源多肽设计模型分子动力学模拟-Gromacs多肽药物设计案例《AI Agent原理与实战》开源多肽性质预测分子动力学模拟-OpenMM开源小分子生成设计CADD中的机器学习模型DNA/RNA药物设计結合自由能开源药代动力学软件高效计算配置siRNA药物设计模型UCSF DOCK系列我胡师兄说药ASO药物设计模型rDock系列 LeDock系列 gnina系列

相关推荐

面试官:你连 HTTPS 原理没搞懂,还给我讲“中间人攻击”?
面试官:你连 HTTPS 原理没搞懂,还给我讲“中间人攻击”?

一、开场:面试官到底在问什么很多同学在面试时喜欢把“中间人攻击”挂在嘴边,可一旦被追问“那 HTTPS 具体是怎么防住中间人的”,就容易卡壳。面试官这句话不是故意刁难,而是在提醒一个关键事实:如果你不知道 HTTPS 的… · 2026/11/6 5:07:53

从输入 URL 到页面展示到底发生了什么?看完吊打面试官!
从输入 URL 到页面展示到底发生了什么?看完吊打面试官!

一、前言:一道“简单”问题的深水区“从输入 URL 到页面展示,中间发生了什么?”这大概是前端和后端面试中出现频率最高的一道题。它看起来只是在问一次网页加载,但它几乎可以串起计算机网络、操作系统、浏览器内核、Web 安全、性能… · 2026/11/6 5:07:53

面试官:SOA 和微服务的区别?这回终于搞清楚了!
面试官:SOA 和微服务的区别?这回终于搞清楚了!

一、写在前面:为什么面试官总爱问这道题在 Java 后端、分布式架构以及中高级工程师的面试中,「SOA 和微服务的区别」几乎是高频必考题。它表面上是在问两个概念的定义,实际上考察的是候选人对架构演进历史、服务治理、通信模型、部署形态以及… · 2026/11/6 5:07:53

嘉兴在哪能考电工证考前押题怎么找?别再被中介骗了
嘉兴在哪能考电工证考前押题怎么找?别再被中介骗了

嘉兴在哪能考电工证考前押题怎么找?别再被中介骗了 不知道去哪报名怕被中介坑?嘉兴在哪能考电工证?这几乎是每个想考证的工人最先问的问题。电工证作为特种作业操作证中的一种,不仅关系到你的上岗资格,也直接影响到工资待遇和工作机会。很多工人因为不了… · 2026/11/7 3:28:40

嘉兴在哪能考电工证内部消息:学历不高怕报不上名?其实门槛没你想象那么高
嘉兴在哪能考电工证内部消息:学历不高怕报不上名?其实门槛没你想象那么高

嘉兴在哪能考电工证内部消息:学历不高怕报不上名?其实门槛没你想象那么高 你是不是也担心自己学历不高,怕报不了电工证?别慌, 嘉兴在哪能考电工证 这件事,内部消息告诉你,学历其实不是决定性因素,关键看你有没有符合报考条件的实践经验。… · 2026/11/7 3:28:40

特种作业操作证发证通过率揭秘:学历不高也能考,关键看这三点
特种作业操作证发证通过率揭秘:学历不高也能考,关键看这三点

特种作业操作证发证通过率揭秘:学历不高也能考,关键看这三点 你是不是也觉得,特种作业操作证发证门槛高,学历不够就报不上名?别急,咱们今天就来聊聊这个事儿,顺便揭秘一下通过率背后的真相。… · 2026/11/7 3:28:40

你知道国外看高空电工作业的最新要求吗?内部消息教你避开报名陷阱
你知道国外看高空电工作业的最新要求吗?内部消息教你避开报名陷阱

你知道国外看高空电工作业的最新要求吗?内部消息教你避开报名陷阱 你是不是也这样, 不知道去哪报名怕被中介坑 ?最近不少漯河房建工程从业者都在问,国外看高空电工作业到底怎么考?报考流程复杂不?是不是得找熟人?今天我就把 内部消息… · 2026/11/7 3:28:40

电工年度工作业绩自评怎么写?外省证怎么转,含金量够不够看这里
电工年度工作业绩自评怎么写?外省证怎么转,含金量够不够看这里

电工年度工作业绩自评怎么写?外省证怎么转,含金量够不够看这里 之前考的证在外省能不能转过来?这是很多电工朋友最关心的问题之一。特别是在郑州金水区的一些中小施工企业,电工证的 含金量… · 2026/11/7 3:28:40

电工证丢复印怎么处理?在哪考最靠谱?
电工证丢复印怎么处理?在哪考最靠谱?

电工证丢复印怎么处理?在哪考最靠谱? 证书过期了不知道怎么复审延期,这事儿可真急人。很多人拿着电工证,要么是找资料时不小心弄丢了,要么是复印的时候出错,导致证书信息不全或无法验证,耽误了工作和考试。尤其是像 电工证丢复印… · 2026/11/7 3:27:40

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 10:27:59

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 10:28:03

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/6 10:29:23

澳洲水电工证考试:证书过期了不知道怎么复审延期?电子证书怎么弄?
澳洲水电工证考试:证书过期了不知道怎么复审延期?电子证书怎么弄?

澳洲水电工证考试:证书过期了不知道怎么复审延期?电子证书怎么弄? 证书过期了不知道怎么复审延期?别慌,很多人在拿到【澳洲水电工证考试】的电子证书后,一不小心就忽略了复审时间,结果证书失效,工作受阻,甚至被单位追责。今天就从【澳洲水电工证考试… · 2026/11/7 0:00:41

电工作业提示版通过率揭秘:怎么考才能一次过?
电工作业提示版通过率揭秘:怎么考才能一次过?

电工作业提示版通过率揭秘:怎么考才能一次过? 怕考不过白交培训费?别急,今天我就从驻马店应届工程类毕业生的视角,带你全面了解电工作业提示版的考试流程、备考要点和真实通过率,帮你少走弯路、提高一次通过率。… · 2026/11/7 0:00:41

电工证年审报名千万别踩坑 外省证转过来要搞清这几点
电工证年审报名千万别踩坑 外省证转过来要搞清这几点

电工证年审报名千万别踩坑 外省证转过来要搞清这几点 之前考的证在外省能不能转过来?这个问题是很多电工从业者最关心的,特别是像你这样在商丘从事公路工程的人员,经常需要跨省流动,证书的 有效性 和 可迁移性… · 2026/11/7 0:00:41

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 10:27:59

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 10:28:03

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/6 10:29:23

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码