尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

2026 年 MCP 协议彻底火了:用 Python 从零搭建你的第一个 AI Agent 工具链

2026 年 MCP 协议彻底火了:用 Python 从零搭建你的第一个 AI Agent 工具链 2026 年 MCP 协议彻底火了用 Python 从零搭建你的第一个 AI Agent 工具链如果 2024 年是 RAG 的元年2025 年是 Function Calling 的普及年那 2026 年毫无疑问属于MCPModel Context Protocol模型上下文协议。它正在用一种USB-C 式的统一接口终结大模型接工具时N 个模型 × M 个工具 N×M 套适配代码的混乱局面。这篇文章带你 30 分钟从零跑通一个可用的 MCP 工具链。一、为什么 2026 年所有人都在聊 MCP先说一个让所有接过大模型工具链的开发者都头秃的痛点。假设你的业务里要用到查询数据库、调用企业内部 OA、读取 Confluence 文档、操作 Jira 工单。你为 OpenAI 写了一套 Function Calling 的 JSON Schema为 Claude 又写了一套换成国产的 DeepSeek / Qwen 又得改一遍。每加一个工具每换一个模型适配代码都要重写。这就是经典的N×M 问题。MCP 的出现相当于在大模型和工具之间插了一个中间层协议┌──────────┐ MCP 协议 ┌──────────────┐ │ LLM │ ←──────────────→ │ MCP Server │ ← 数据库 / API / 文件 │ (Client) │ JSON-RPC over │ (工具提供方) │ └──────────┘ stdio 或 HTTP └──────────────┘从此模型侧只需实现一次 MCP Client工具侧只需实现一次 MCP ServerN×M 退化成了 NM。一个写好的 MCP Server可以被 Claude、Cursor、Cline、Continue 等任何支持 MCP 的客户端复用——这便是它被称作AI 界的 USB-C的原因。二、MCP 的三大核心原语MCP Server 能向模型暴露三种能力务必先建立这个心智模型原语作用典型场景Tools工具让模型执行有副作用的操作写数据库、发消息、创建工单Resources资源让模型读取数据读文件、查配置、获取文档Prompts提示词模板预置的可复用提示词标准化的代码审查、总结模板90% 的实战场景你只用Tools就够了。下面我们直接上手。三、30 分钟实战写一个天气查询 待办管理MCP Server3.1 环境准备pipinstallmcp[cli]httpx官方 Python SDK 已经把 JSON-RPC 的通信细节全部封装好了你只需要关心业务逻辑。3.2 编写 Server新建my_mcp_server.pyfrommcp.server.fastmcpimportFastMCPimporthttpximportjsonfrompathlibimportPath mcpFastMCP(my-first-mcp-server)TODO_FILEPath(todos.json)def_load_todos()-list:ifTODO_FILE.exists():returnjson.loads(TODO_FILE.read_text(encodingutf-8))return[]def_save_todos(todos:list):TODO_FILE.write_text(json.dumps(todos,ensure_asciiFalse,indent2),encodingutf-8)# —— Tool 1: 天气查询 ——mcp.tool()defget_weather(city:str)-str:查询指定城市的实时天气。 Args: city: 城市名称如 北京、上海 # 这里用公开接口演示生产环境请换成可靠的天气 APIresphttpx.get(fhttps://wttr.in/{city},params{format:j1},timeout10)dataresp.json()currentdata[current_condition][0]returnf{city}当前天气{current[weatherDesc][0][value]}\f气温{current[temp_C]}°C湿度{current[humidity]}%\f风速{current[windspeedKmph]}km/h# —— Tool 2: 添加待办 ——mcp.tool()defadd_todo(title:str,priority:strnormal)-str:添加一条待办事项。 Args: title: 待办内容 priority: 优先级可选 low / normal / high todos_load_todos()todo{id:len(todos)1,title:title,priority:priority,done:False}todos.append(todo)_save_todos(todos)returnf已添加待办[{priority}]{title}ID:{todo[id]}# —— Tool 3: 查看待办列表 ——mcp.tool()deflist_todos()-str:列出所有未完成的待办事项。todos_load_todos()pending[tfortintodosifnott[done]]ifnotpending:return当前没有未完成的待办摸鱼愉快 lines[f- [{t[priority]}] #{t[id]}{t[title]}fortinpending]return待办列表\n\n.join(lines)if__name____main__:mcp.run()# 默认走 stdio 传输注意三个关键点mcp.tool()装饰器把普通函数变成 MCP 工具函数的 docstring 就是给模型看的工具说明——写清楚参数含义模型才能正确调用。类型注解city: str会自动转成 JSON Schema模型据此决定传什么参数。mcp.run()默认用 stdio 传输适合本地客户端如 Claude Desktop、Cursor通过子进程拉起。3.3 接入客户端方式 AClaude Desktop编辑配置文件macOS:~/Library/Application Support/Claude/claude_desktop_config.json{mcpServers:{my-tools:{command:python,args:[D:/path/to/my_mcp_server.py]}}}重启 Claude Desktop对话框右下角会出现一个 工具图标说明你的 Server 已被识别。方式 BCursorSettings → MCP → Add New MCP Server填入Type: stdio Command: python D:/path/to/my_mcp_server.py Name: my-tools之后在对话里说帮我查一下北京天气再把’写周报’加到待办里优先级 high模型就会自动编排这两个工具的调用。3.4 效果演示用户今天上海天气怎么样顺便把准备下周的晋升答辩加进待办标 high 模型内部自动执行 → 调用 get_weather(city上海) → 调用 add_todo(title准备下周的晋升答辩, priorityhigh) 模型回复 上海现在多云气温 29°C湿度 65%。 已帮你添加待办[high] 准备下周的晋升答辩ID: 3注意——你没有写任何调用编排逻辑。模型读了工具的描述和参数 Schema自己决定了先查天气、再加待办、按什么顺序、传什么参数。这就是 MCP 原生工具调用带来的开发体验跃迁。四、从 Demo 到生产三个容易踩的坑坑 1docstring 是给模型看的不是给人看的很多新手写的 docstring 是# get weather这种。模型理解不了调用就乱套。正确写法是用人话描述这个工具干什么、什么时候该用、参数什么含义。可以用中文模型完全能理解。坑 2工具粒度太粗或太细太粗一个do_everything(action, params)工具模型不知道什么时候该调。太细get_user_id、get_user_name、get_user_email拆成三个模型要连调三次。合理粒度一个工具完成一个用户心智里的完整动作。坑 3stdio 传输的性能瓶颈stdio 是同步的、单连接的。如果你的工具要高频调用或长耗时比如跑一个大模型推理应该切到SSE / Streamable HTTP传输mcp.run(transportsse)# 或 http五、2026 年 MCP 生态现状与选型建议截至 2026 年中MCP 生态已经相当成熟官方生态Smithery、MCP Hub 上已有上千个现成 Server覆盖 GitHub、Slack、Postgres、K8s 等主流场景。客户端支持Claude Desktop、Cursor、Cline、Continue、Zed、VS CodeCopilot Chat均已原生支持。国产模型跟进DeepSeek、Qwen、GLM 等主流国产模型均已在工具调用层面兼容 MCP 接入。选型建议个人开发者 / 小团队 → stdio 本地 Server5 分钟接入 Claude Desktop 或 Cursor。企业级 → 部署 HTTP 传输的 MCP 网关统一鉴权、限流、审计。工具厂商 → 把你的 SaaS 包装成 MCP Server 发布到 Smithery等于一次性接入了所有主流 AI 客户端。六、写在最后MCP 的意义不在于它引入了多复杂的技术——它的通信层就是 JSON-RPC核心就是三个原语。它的真正价值在于统一了标准让工具开发者写一次、到处用让模型厂商接一次、拥有全部工具。如果说 Function Calling 让大模型长出了手那 MCP 就是给这些手定了一套统一的握持协议。在 Agent 时代谁能掌握这套协议的工程化落地谁就能在 AI 应用的下半场拿到门票。下一篇我会写如何用 MCP Claude Code 搭建一个全自动的代码审查 Agent敬请关注。作者夏文强 OpenHarmony 贡献者专注 AI Agent 工程化落地专栏AI Agent 实战笔记觉得有用就点个赞 有疑问欢迎评论区交流
返回列表