MCP协议零基础入门:从概念到第一个Server(基于2026-07-28 RC版) MCP协议零基础入门从概念到第一个Server基于2026-07-28 RC版一句话总结MCPModel Context Protocol是AI Agent连接外部工具的统一协议类似AI世界的USB-C接口让任何Agent通过标准协议调用任何工具。适合谁非AI背景开发者、运维工程师、技术决策者、高校教学管理者你能学到① MCP协议核心概念Tools/Resources/Prompts② 2026-07-28 RC规范的无状态化变革 ③ 用Python 5分钟搭建第一个MCP Server专栏MCP协议实战与架构专栏从入门到生产环境文章目录MCP协议零基础入门从概念到第一个Server基于2026-07-28 RC版⚠️ 版本状态说明截至2026-07-28一、前置条件与验证环境L4 证据扎根1.1 验证环境1.2 依赖安装1.3 requirements.txt二、一个类比MCP就是AI世界的USB-C接口三、MCP协议核心概念图解3.1 协议架构三层模型3.2 三大核心原语Tools、Resources、Prompts3.3 传输模式三种数据线3.4 快速选型表四、MCP vs Function Calling vs gRPC选型对比L1 科学逻辑4.1 方案对比4.2 边界说明五、零代码体验用MCP Inspector理解MCP5.1 安装与启动5.2 交互式体验调用一个天气查询Tool5.3 2026-07-28 RC新特性无状态请求六、最小代码验证5分钟搭建你的第一个MCP Server6.1 完整代码可直接运行6.2 代码解读三个关键装饰器6.3 运行与验证七、踩坑记录搭建第一个Server时遇到的3个问题L3 探索图7.1 踩坑一览7.2 关键洞察八、2026-07-28 RC规范从会话绑定到请求自包含8.1 旧版2025-11-25的问题8.2 新版2026-07-28 RC的解决方案8.3 新旧协议对比on the wire8.4 迁移策略新旧版本共存九、2026-07-28 RC的五大进阶特性9.1 OAuth/OIDC 授权强化9.2 JSON Schema 2020-12 升级 (SEP-2106)9.3 缓存提示ttlMs与cacheScope9.4 官方扩展框架MCP Apps与Tasks9.5 迁移常见错误警示十、总结与学习路径10.1 你已经掌握了10.2 推荐学习路径10.3 核心结论十一、互动时间 ⚠️ 版本状态说明截至2026-07-282026-07-28规范目前处于Release Candidate阶段已于2026-05-21锁定RC内容正在进行为期10周的验证窗口。官方计划2026年7月28日发布最终规范但具体细节仍可能调整。当前 finalized 版本仍为 2025-11-25。本文基于RC版内容撰写供技术预研参考。⚠️本文时效性首次发布2026-07-28最后更新2026-07-28适用版本mcp Python SDK 2.0.0b2Beta预计失效2026-07-28 正式版发布后Beta API 可能有调整历史变更日期变更内容影响2026-07-28初稿基于RC规范撰写—一、前置条件与验证环境L4 证据扎根1.1 验证环境项目版本/说明操作系统Windows 11 / macOS / Linux 均可Python3.10本文验证使用 3.11.9Node.js18MCP Inspector需要mcp Python SDK2.0.0b2Beta支持RC规范验证日期2026-07-281.2 依赖安装# 创建虚拟环境推荐python-mvenv mcp-env# Windowsmcp-env\Scripts\activate# macOS/Linuxsourcemcp-env/bin/activate# 安装指定版本锁定版本号确保可复现pipinstallmcp2.0.0b2# 验证安装python-cimport mcp; print(mcp.__version__)# 预期输出2.0.0b2⚠️风险提示mcp2.0.0b2为 Beta 版本API 可能在正式版发布后调整生产环境建议等待 finalized 版本的 SDK或使用 TypeScript SDK已更成熟稳定版v1.x已发布至 1.28.1生产环境可直接使用npm install modelcontextprotocol/inspector需 Node.js 18 环境1.3 requirements.txtmcp2.0.0b2二、一个类比MCP就是AI世界的USB-C接口在理解MCP之前让我们先做一个思想实验。想象你买了一台新笔记本电脑。它只有一个USB-C接口但你可以用它连接显示器视频输出插入U盘数据存储接入网线网络通信连接电源电力供应外接显卡性能扩展USB-C的魔力在于一个物理接口统一了所有外设的连接方式。在AI Agent的世界里MCPModel Context Protocol模型上下文协议扮演的就是类似角色。在MCP出现之前如果你想让AI助手如Claude、ChatGPT连接外部工具每个工具都需要单独开发适配器连接GitHub写一套GitHub API封装连接数据库再写一套数据库驱动连接搜索引擎又要写一套搜索接口MCP的愿景是让任何AI Agent通过统一的协议连接任何外部工具。就像USB-C让一个接口连接万物成为可能MCP让一个协议连接万Tool成为现实。你有没有遇到过这种情况你想让AI助手帮你查数据库、读文件、调API——结果每个工具都要单独对接开发成本比写Agent本身还高。MCP就是来终结这种适配器地狱的。根据MCP官方博客截至2026年3月MCP Python TypeScript SDK月下载量已达9700万16个月内超过React、GraphQL、Kubernetes同期采纳速度获得OpenAI、Google、Microsoft、AWS全面支持 MCP官方博客。三、MCP协议核心概念图解3.1 协议架构三层模型MCP协议采用经典的三层架构设计┌─────────────────────────────────────────┐ │ 第一层Host宿主 │ │ Claude Desktop / Cursor / VS Code │ │ 负责用户交互、LLM调用、权限管控 │ ├─────────────────────────────────────────┤ │ 第二层Client客户端 │ │ MCP Client SDK │ │ 负责协议握手、请求路由、能力发现 │ ├─────────────────────────────────────────┤ │ 第三层Server服务端 │ │ GitHub MCP Server / PostgreSQL MCP Server│ │ 负责工具实现、资源暴露、提示模板 │ └─────────────────────────────────────────┘关键洞察MCP不是直接让LLM调用工具而是通过Client作为翻译官将LLM的自然语言意图转换为结构化的协议调用。3.2 三大核心原语Tools、Resources、PromptsMCP Server向Client暴露三种能力构成了协议的完整语义空间原语类比功能描述典型场景Tools函数/方法执行操作、改变状态、产生副作用创建GitHub Issue、发送邮件、查询数据库Resources只读数据提供上下文信息、不修改状态读取文件内容、获取网页快照、查询知识库Prompts模板/工作流预定义的交互模式、多步骤任务代码审查模板、数据分析流程、会议纪要生成三者关系Tools是手执行动作Resources是眼获取信息Prompts是脑组织流程。3.3 传输模式三种数据线MCP支持三种传输模式对应不同的部署场景模式类比适用场景特点stdioUSB直连本地工具、开发调试进程间通信、零网络开销SSE有线网络远程服务、实时推送Server-Sent Events单向流HTTP Stream无线网络生产环境、云原生部署标准HTTP、负载均衡友好2026-07-28 RC版重大变革协议层从有状态转向无状态彻底取消了initialize握手和Mcp-Session-Id会话绑定。这意味着HTTP Stream模式成为生产环境的首选MCP Server可以像普通无状态HTTP服务一样水平扩展。3.4 快速选型表你的问题直接答案详细解释“本地开发调试用什么”stdio模式零网络开销进程间直连“远程部署用什么”HTTP Stream2026-07-28 RC推荐无状态、可水平扩展“需要Server主动推送呢”SSE模式Server-Sent Events支持单向流四、MCP vs Function Calling vs gRPC选型对比L1 科学逻辑很多开发者会问MCP和OpenAI的Function Calling有什么区别和gRPC呢4.1 方案对比维度Function CallinggRPCMCP协议层级厂商私有API通用RPC框架开放标准协议生态锁定绑定特定LLM语言无关但需手写接口跨模型、跨平台通用能力发现静态定义需proto文件预定义动态发现server/discover传输模式HTTP-onlyHTTP/2双向流stdio/SSE/HTTP Stream三种状态管理无状态有状态/无状态均可2026-07-28 RC后协议层无状态扩展机制无无正式Extensions框架MCP Apps/Tasks学习曲线低直接调用中需定义proto中低SDK封装好适用场景单一LLM的简单工具微服务间高性能通信多模型Agent系统的工具集成4.2 边界说明✅推荐使用MCP的场景需要对接3个以上外部工具的Agent系统需要跨多个LLMClaude GPT 国产模型复用同一套工具多人协作的工具生态需要动态发现能力❌不推荐使用MCP的场景只有1-2个简单工具Function Calling更轻量超高性能要求的内部微服务通信选gRPC对延迟极度敏感的实时系统stdio模式有进程启动开销⚠️一句话总结Function Calling是一个厂商的解决方案gRPC是性能优先的通信框架MCP是整个AI行业的标准工具接口。五、零代码体验用MCP Inspector理解MCP在写代码之前让我们先用MCP Inspector官方调试工具零代码体验MCP的工作流程。5.1 安装与启动# 安装MCP Inspector锁定版本号0.22.0为经典版最终版npminstall-gmodelcontextprotocol/inspector0.22.0# 验证安装npx modelcontextprotocol/inspector--version# 预期输出0.22.0# 启动Inspector连接到一个示例Servernpx modelcontextprotocol/inspectornodebuild/index.jsInspector会在浏览器中打开一个调试界面你可以查看Server暴露的所有Tools、Resources、Prompts手动调用Tool观察请求/响应的JSON结构测试不同传输模式stdio/SSE/HTTP Stream5.2 交互式体验调用一个天气查询Tool假设我们连接了一个天气查询MCP Server在Inspector中可以看到Tool列表- get_weather 描述获取指定城市的当前天气 参数 - city: string (required) - 城市名称 - unit: enum [celsius, fahrenheit] - 温度单位手动调用// 请求{jsonrpc:2.0,id:1,method:tools/call,params:{name:get_weather,arguments:{city:北京,unit:celsius}}}// 响应{jsonrpc:2.0,id:1,result:{content:[{type:text,text:北京当前天气晴朗温度28°C湿度65%}]}}关键观察MCP协议基于JSON-RPC 2.0所有交互都是结构化的请求-响应。LLM不需要理解天气API的具体格式只需要理解MCP协议的统一格式。5.3 2026-07-28 RC新特性无状态请求在2026-07-28 RC规范下请求变成了自包含的// 2026-07-28 RC 无状态请求格式{jsonrpc:2.0,id:1,method:tools/call,params:{name:get_weather,arguments:{city:北京,unit:celsius},_meta:{io.modelcontextprotocol/protocolVersion:2026-07-28,io.modelcontextprotocol/clientInfo:{name:MyClient,version:1.0.0}}}}注意_meta字段协议版本、客户端信息现在随每个请求携带不再需要预先的initialize握手。这是2026-07-28 RC最核心的变革。六、最小代码验证5分钟搭建你的第一个MCP Server现在让我们用Python实现一个最小可用的MCP Server——一个教务系统查询Server演示如何暴露Tools和Resources。6.1 完整代码可直接运行# server.py — 教务查询MCP Server基于mcp SDK 2.0.0b2 MCP Server教务系统课程查询 暴露三种能力Tool查询课程、Resource课程列表、Prompt培养方案模板 验证环境Python 3.11.9, mcp2.0.0b2, Windows 11 frommcp.serverimportMCPServerfrommcp.typesimportTool,Resource,TextContent# 创建Server实例# 注意当前为Beta/RC版本生产环境建议等待 finalized 版本serverMCPServer(course-query-server,version1.0.0)# 模拟教务数据库COURSES:dict[str,dict[str,str|int]]{CS101:{name:计算机导论,credits:3,teacher:张教授},CS201:{name:数据结构,credits:4,teacher:李教授},AI301:{name:机器学习,credits:3,teacher:王教授},}server.tool()asyncdefquery_course(course_id:str)-str: 查询指定课程ID的详细信息 Args: course_id: 课程编号如CS101、AI301 Returns: str: 课程信息描述字符串 Raises: 无显式异常未找到课程时返回提示信息 courseCOURSES.get(course_id)ifnotcourse:returnf未找到课程{course_id}可用课程{, .join(COURSES.keys())}return(f课程{course[name]}f学分{course[credits]}f授课教师{course[teacher]})server.resource(courses://list)asyncdeflist_courses()-str:获取所有课程列表只读数据lines[f{cid}:{info[name]}{info[credits]}学分forcid,infoinCOURSES.items()]return\n.join(lines)server.prompt()asyncdefstudy_plan_prompt(major:str)-str: 生成培养方案查询提示模板 Args: major: 专业名称如计算机科学与技术 returnf请帮我查询{major}专业的培养方案包括 1. 必修课程列表 2. 选修课程要求 3. 学分分布情况 4. 毕业设计要求if__name____main__:server.run(transportstdio)6.2 代码解读三个关键装饰器装饰器对应原语功能调用方式server.tool()Tools执行查询操作tools/callserver.resource()Resources暴露只读数据resources/readserver.prompt()Prompts提供提示模板prompts/get6.3 运行与验证# 步骤1启动Serverpython server.py# 预期进程启动等待stdio输入无输出即正常# 步骤2在另一个终端使用MCP Inspector连接npx modelcontextprotocol/inspector python server.py# 预期浏览器自动打开 http://localhost:6274在Inspector中你将看到Toolsquery_course带参数schema含course_id字段Resourcescourses://listURI格式可点击读取Promptsstudy_plan_prompt带参数模板含major字段手动验证Tool调用在Inspector的Tool面板中输入course_id: CS201点击调用。预期输出课程数据结构学分4授课教师李教授七、踩坑记录搭建第一个Server时遇到的3个问题L3 探索图踩坑预警别以为照着文档写就能一次跑通Beta版本的SDK有不少惊喜等着你。7.1 踩坑一览尝试问题操作结果失败根因耗时1pip install mcp 无版本锁直接pip install mcp❌ 安装了0.x旧版旧版API完全不兼容RC规范15分钟2import路径错误from mcp import MCPServer❌ ModuleNotFoundErrorBeta版包结构变了正确路径是from mcp.server import MCPServer20分钟3Server启动无输出python server.py无任何输出✅ 正常stdio模式就是无输出的需要通过Inspector连接验证5分钟排查7.2 关键洞察Beta/RC版本的SDK文档可能滞后于代码变更。遇到导入错误时最有效的排查方式是直接查看SDK源码的__init__.py导出列表而不是搜索文档。八、2026-07-28 RC规范从会话绑定到请求自包含8.1 旧版2025-11-25的问题在旧版规范中远程MCP部署需要Client → Load Balancer → 固定Server实例 → Session Store ↑______________________________↑ Sticky Session这带来了生产环境的三大痛点粘性会话负载均衡器必须识别Mcp-Session-Id将同一客户端固定到同一实例共享存储Session状态需要Redis等共享存储增加复杂度网关解析负载均衡器需要深度解析HTTP Body才能获取Session ID性能损耗8.2 新版2026-07-28 RC的解决方案新版规范通过6个SEPSpecification Enhancement Proposals彻底重构了传输层SEP变更内容影响SEP-2575移除initialize/initialized握手连接即调用零延迟启动SEP-2567移除Mcp-Session-Id头无会话绑定任意实例可处理任意请求SEP-2243新增Mcp-Method/Mcp-Name头网关无需解析Body即可路由SEP-2322引入MRTR多轮请求模式无状态场景下支持复杂交互SEP-2106采用JSON Schema 2020-12更强大的参数校验能力SEP-2596正式Deprecation Policy12个月弃用保护期核心收益MCP Server现在可以像普通HTTP服务一样部署——普通轮询负载均衡、无共享Session Store、标准网关路由、水平自动扩展。正如企查查技术总监杜虎在MCP工程实践中所言“协议从’会话绑定’走向’请求自包含’远程MCP Server不必再被某次会话绑定在某台机器上。”企查查技术团队8.3 新旧协议对比on the wire2025-11-25 Spec旧版// Step 1: Initialize and get session ID{jsonrpc:2.0,id:1,method:initialize,params:{protocolVersion:2025-11-25,capabilities:{},clientInfo:{name:sample-client,version:1.0.0}}}// Step 2: Every request must carry session IDMcp-Session-Id:1a2b3c4d-5e6f-7g8h{jsonrpc:2.0,id:2,method:tools/call,params:{name:get_user,arguments:{user_id:u123}}}2026-07-28 RC Spec新版MCP-Protocol-Version:2026-07-28Mcp-Method:tools/call Mcp-Name:get_user{jsonrpc:2.0,id:1,method:tools/call,params:{name:get_user,arguments:{user_id:u123},_meta:{io.modelcontextprotocol/protocolVersion:2026-07-28,io.modelcontextprotocol/clientInfo:{name:sample-client,version:1.0.0},io.modelcontextprotocol/clientCapabilities:{}}}}8.4 迁移策略新旧版本共存对于已有MCP Server的开发者官方提供了平滑迁移路径场景建议策略时间窗口全新Server直接基于2026-07-28 RC构建立即已有生产ServerTier 1 SDK4-6周内迁移Python/TypeScript SDK已提供RC支持2026 Q3对外公共服务双协议支持至2026年Q4保障客户端兼容性2026 Q4前本地stdio工具无需立即迁移观察稳定版发布后再决定12个月内⚠️ 官方明确2025-11-25规范不会立即失效新规范包含12个月的弃用保护期SEP-2596。“弃用≠移除”旧代码在窗口期内继续工作。九、2026-07-28 RC的五大进阶特性9.1 OAuth/OIDC 授权强化2026-07-28 RC包含重要的授权层变革使MCP真正企业级就绪变革项说明OAuth 2.1 资源服务器MCP服务器必须实现OAuth 2.0 Protected Resource Metadata (RFC 9728)资源指示器 (RFC 8707)客户端必须显式指定令牌目标服务器防止mix-up攻击发行者验证 (RFC 9207)客户端必须验证授权响应的iss参数刷新令牌规范化正式文档化刷新令牌请求流程 (SEP-2207)应用类型声明客户端注册时声明application_type解决localhost重定向问题9.2 JSON Schema 2020-12 升级 (SEP-2106)工具输入/输出Schema采用JSON Schema 2020-12支持oneOf/anyOf/allOf组合、条件判断、$ref/$defs禁止自动解引用外部$refURIDoS防护Schema深度必须受限9.3 缓存提示ttlMs与cacheScopeList和Resource读取结果现在携带ttlMs和cacheScope字段类比HTTPCache-Control{tools:[...],ttlMs:3600000,cacheScope:user}ttlMs响应新鲜度时长毫秒cacheScope缓存共享范围user/global/session9.4 官方扩展框架MCP Apps与TasksMCP Apps (SEP-1865)首个官方扩展允许Server提供交互式HTML界面Host在沙箱iframe中渲染。Tasks (SEP-2663)从核心协议移至扩展支持长时运行任务——服务器返回task handle客户端通过tasks/get、tasks/update、tasks/cancel驱动支持客户端输入和任务取消。9.5 迁移常见错误警示常见错误正确做法在服务器进程中存储会话状态将会话状态外部化使用显式handle忽略路由头认为Body有相同信息Mcp-Method和Mcp-Name是必需的将requestState视为秘密或客户端可解释对客户端不透明但非秘密服务器签名/加密客户端原样回传急于移除已弃用功能“弃用≠移除”12个月窗口期内继续工作十、总结与学习路径10.1 你已经掌握了✅ 核心概念Tools执行、Resources读取、Prompts模板✅ 架构模型Host-Client-Server三层✅ 传输模式stdio / SSE / HTTP Stream✅ 2026-07-28 RC最新变革从有状态到无状态✅ 最小代码实现Python MCP Server可运行✅ 选型判断MCP vs Function Calling vs gRPC10.2 推荐学习路径阶段内容链接入门你在这里MCP核心概念 第一个Server本文进阶更完整的代码示例生产部署MCP协议实战用Python搭建MCP Server深入三种服务模式技术选型MCP协议三种服务模式深度解析安全生产环境安全加固MCP Server安全加固GB/Z 185视角下的四层纵深防御10.3 核心结论MCP协议正在经历从实验室玩具到生产级基础设施的关键蜕变。2026-07-28 RC的无状态化变革标志着MCP正式迈入企业级部署阶段。对于高校教务管理者而言MCP的启示在于未来的教育信息系统应当以能力可发现、接口标准化的方式构建让AI Agent能够无缝集成教务数据、课程资源、教学工具真正实现AI教育的深度融合。十一、互动时间 你在工作中遇到过哪些接口不统一导致的集成难题A. 不同系统用不同协议对接成本极高B. 旧系统没有API只能手动导数据C. 有API但文档不全全靠猜参数D. 其他评论区说说你的故事在评论区告诉我你的选择你的问题可能成为我下一篇文章的主题如果你正在调研MCP协议用于实际项目也欢迎留言你的场景我会针对性地给出选型建议。参考文献[1] Model Context Protocol Blog. The 2026-07-28 MCP Specification Release Candidate[EB/OL]. 2026-05-21. https://blog.modelcontextprotocol.io/posts/2026-07-28-release-candidate/[2] WorkOS. The biggest MCP spec update ships July 28[EB/OL]. 2026-06-18. https://workos.com/blog/mcp-2026-spec-agent-authentication[3] 企查查技术团队. MCP 2026-07-28 发布在即从API到Agent-Native企业数据基座的工程实践[EB/OL]. 2026-07-17. https://f.sdnews.com.cn/xx/202607/t20260717_4708667.htm[4] Stacktree. MCP 2026-07-28 spec: what changed, what breaks[EB/OL]. 2026-07-13. https://stacktr.ee/blog/mcp-2026-spec-changes[5] InfoQ. MCP开发者峰会观察网关、无状态请求与企业级落地路径[EB/OL]. 2026-04-11. https://www.infoq.cn/article/f4df9bE6zm1wy9pI1xKA[6] MCP Specification (2026-07-28 RC). Model Context Protocol[EB/OL]. 2026-05-21. https://spec.modelcontextprotocol.io/specification/2026-07-28/本文遵循CC BY-NC-SA 4.0协议转载请注明出处。如有技术问题欢迎在评论区留言我会持续更新到《MCP Server故障排查手册》中。