当前位置: 首页 > news >正文

MCP(Model Context Protocol)实战教程:从零搭建你的第一个 AI Agent 工具服务

前言

说白了,MCP 这个东西火了大半年了,但很多开发者还停留在"听过但没用过"的阶段。今天这篇就一个目的:带你从零写一个 MCP Server,然后用 Claude 调用它。整个过程不超过 30 分钟。

先说清楚 MCP 是干嘛的。你可以把它理解成 AI 模型和外部工具之间的"USB 接口"——以前每个 AI 应用都要自己写一套工具调用逻辑,现在有了统一标准,工具写一次,到处能用。

环境准备

你需要这几样东西:

  • Python 3.10+(推荐 3.12)
  • uv 包管理器(比 pip 快太多,强烈推荐)
  • 一个 Anthropic API Key

安装 uv:

# macOS / Linuxcurl-LsSfhttps://astral.sh/uv/install.sh|sh# Windowspowershell-c"irm https://astral.sh/uv/install.ps1 | iex"

创建项目:

uv init mcp-server-democdmcp-server-demo uvaddmcp anthropic

写一个最简单的 MCP Server

直接上代码。这个 Server 提供一个get_weather工具,返回模拟天气数据:

# server.pyfrommcp.server.fastmcpimportFastMCP mcp=FastMCP("weather-server")@mcp.tool()asyncdefget_weather(city:str)->str:"""获取指定城市的天气信息"""# 这里用模拟数据,实际项目可以接真实 APImock_data={"北京":"晴,28°C,湿度 45%","上海":"多云,26°C,湿度 65%","深圳":"雷阵雨,30°C,湿度 80%",}returnmock_data.get(city,f"{city}:暂无数据")@mcp.tool()asyncdeflist_cities()->str:"""返回支持查询的城市列表"""return"北京、上海、深圳"if__name__=="__main__":mcp.run(transport="stdio")

就这么多。没错,MCP Server 的核心就是这么简洁。装饰器@mcp.tool()会自动把函数注册为工具,函数的 docstring 就是工具的描述——Claude 会根据这个描述决定什么时候调用它。

用 Claude Desktop 测试

打开 Claude Desktop 的配置文件:

# macOSvim~/Library/Application\Support/Claude/claude_desktop_config.json# Windowsnotepad %APPDATA%\Claude\claude_desktop_config.json

加入你的 Server:

{"mcpServers":{"weather":{"command":"uv","args":["run","python","server.py"],"cwd":"你的项目路径"}}}

重启 Claude Desktop,你会看到工具图标多了一个小锤子。试着问它"北京天气怎么样"——它会自动调用你的get_weather工具。

进阶:添加 Resource 和 Prompt

MCP 不只是工具调用,它还有 Resource(资源)和 Prompt(提示模板)两个概念:

@mcp.resource("config://app")asyncdefget_config():"""返回应用配置信息"""return{"version":"1.0","debug":False}@mcp.prompt()asyncdefweather_report(city:str)->str:"""生成天气报告的提示模板"""returnf"请根据以下信息为{city}生成一份简洁的天气报告,包含出行建议。"

Resource 让 AI 能读取你的数据,Prompt 让你能定义标准化的交互模板。

常见问题

Q:MCP Server 能用 TypeScript 写吗?
能,而且官方 SDK 同时支持 Python 和 TypeScript。TypeScript 版用@modelcontextprotocol/sdk这个包。

Q:除了 stdio,还有别的通信方式吗?
有。MCP 还支持 SSE(Server-Sent Events)和 HTTP Streamable transport,适合远程部署的场景。

Q:和 OpenAI Function Calling 有什么区别?
Function Calling 是 OpenAI 自己的标准,绑定在 OpenAI 的 API 上。MCP 是开放标准,任何模型都能用——DeepSeek、Gemini、本地模型都支持。

Q:安全性怎么保证?
MCP Server 运行在本地,默认不暴露网络。如果要远程部署,需要加上认证和权限控制。

总结

MCP 的核心价值就是标准化。以前每个 AI 应用都在重复造轮子,现在大家用同一套协议,工具生态可以共享。如果你在做 AI Agent 相关的开发,MCP 几乎是必学的。

下一步可以看看:

  • MCP 官方文档
  • GitHub 上的 MCP Server 合集
  • 自己动手把现有的 API 封装成 MCP Server

有问题评论区见 👇

http://www.jsqmd.com/news/1069166/

相关文章:

  • 传统谱牒数字化归档与纸质复刻解决方案:家谱标准化制作实践
  • 北方全年对讲设备维保托管,双工电子一站式承包东北内蒙设备运维
  • 深度解析:从原理到实战——破解现代Web应用的身份验证与会话管理漏洞
  • 终极指南:OBS Virtual Cam虚拟摄像头插件深度配置与性能调优
  • 3分钟学会使用CardEditor:桌游设计师必备的批量卡牌制作工具终极指南
  • 性价比高的大理石高端工程公司
  • 技术多态中的接口统一与实现多样
  • 软件即席分析化的灵活查询与可视化
  • 通信信号调试进阶:高精度混合信号示波器的工程应用价值
  • Dism++免费版下载安装教程(附安装包)Dism++ 系统优化工具保姆级安装教程
  • LeetCode 707:设计链表(单链表 + dummy 虚拟头节点 + size)
  • 文档翻译现在支持按次付费和第一页试看,单篇 PDF/论文/说明书更好下手了
  • 2026年科研避坑指南:谁才是可靠的细胞系供应商?
  • CANN昇腾计算机视觉算子库ops-cv的图像处理流水线与目标检测预处理NPU加速实战:从图像解码到推理前处理全链路优化解析与工程落地
  • React Context 状态共享性能分析
  • Rust的匹配中的行为编译器
  • 软件进度控制化的计划跟踪与偏差调整
  • 实测 Grok4.3 vs Claude Opus vs GPT 系列:长文档合同分析能力横向对比
  • Rust的匹配中的早期诊断
  • 如何设计一个支持“撤销-重做”(Undo-Redo)的功能?
  • 中介者管理化技术协调者与解耦设计
  • 软件竞争管理化的优势建立与保持
  • Python FastAPI 并发架构设计与实现
  • SAM3N MCU性价比新解:Cortex-M3在低成本高可靠场景的实战指南
  • 计算机毕业设计之麻园社区公益捐赠系统的设计与实现 、
  • Redis Key 空间事件监听机制
  • 2026业财一体化落地剖析:知识产权行业专属财务管理数字化方案
  • 誉财自动化YC-MS13090旋转头模板机:一台机器搞定校服厂所有缝制难题
  • 视频太大发不出去?折腾了一周压缩方案,说点实际经验
  • 2026年最新高口碑视频孪生供应商推荐 选这几家不踩坑