引言
如果你刚开始用 ChatGPT 或 Claude,大概率遇到过这种情况:你问它“帮我看看今天上海的天气”,它礼貌地回复“我只能提供到 2025 年的数据”。你让它“分析这个 Excel 文件”,它只能请你手动粘贴内容。
这种感觉就像你雇了一个绝顶聪明的实习生,但他被锁在空房间里,没有手机,没有电脑,看不到外面的世界。
MCP(Model Context Protocol,模型上下文协议),就是给这个实习生配上的万能接口。简单说,它是大模型与外部工具、数据之间的“USB-C 标准”。而MCP Server,就是那些能即插即用的“外设”——文件系统、数据库、天气预报 API,通通可以接进来。
今天这篇,专门为第一次接触 MCP 的程序员而写。我们不只聊概念,更把当前最主流、最好用的 MCP Server 开源框架,用打比方、拆场景、亮代码的方式讲透。读完你不仅能看懂生态,还能马上动手写出自己的第一个 MCP 插件。
先搞懂:MCP 到底是什么?我凭什么需要它?
用生活场景比喻:MCP Client 是餐厅里的顾客(模型),MCP Server 是后厨(你的代码)。顾客看菜单(工具列表)点菜,后厨做菜并端上去。而开发框架,就是后厨的标准化灶台和菜谱,让你不必从钻木取火开始。
官方三大件:MCP 世界的“水电煤”
Anthropic 官方维护着 Python、TypeScript、Java(Kotlin)三个 SDK,它们是基石中的基石。所有上层框架都依赖这些基础能力。
1. Python SDK (mcp)
它是什么:最正统的 Python 实现,支持快速定义工具、资源、提示词,使用asyncio异步模型。
作用:直接操作底层协议,控制力度最高,能实现复杂交互。
生动场景:你要造一台功能精密的概念车,用官方 SDK 就是从钢板和引擎开始拼装。虽然起点稍低,但每个齿轮都由你掌握。
应用场景:需要精细内存控制、长连接管理、深度定制协议行为的生产级应用。
一句话上手:
frommcp.serverimportServer,stdio_serverfrommcp.typesimportTool server=Server("weather-app")@server.list_tools()asyncdeflist_tools():return[Tool(name="get_weather",description="查询天气",inputSchema=...)]@server.call_tool()asyncdefcall_tool(name,arguments):ifname=="get_weather":return{"content":[{"type":"text","text":"上海晴,30°C"}]}if__name__=="__main__":stdio_server.run(server)2. TypeScript SDK (@modelcontextprotocol/sdk)
它是什么:为 Node.js 和前端生态定制的官方 SDK,完美匹配 Vercel AI SDK、LangChain.js 等。
作用:让 JavaScript/TypeScript 开发者用最熟悉的方式构建 MCP 服务,前后端统一语言。
场景:全栈团队,希望 MCP Server 直接跑在 Next.js、Express 甚至 Electron 里;AI 工具链集成。
3. Kotlin/Java SDK
它是什么:为 JVM 生态准备的官方实现,专为 Spring Boot 和 Android 优化。
作用:在大型企业 Java 架构中,把已有的业务能力无缝暴露给 AI。
场景:用 Java 写微服务,希望 AI 助手能直接调用内部订单、库存系统。
社区明星框架:把“写 MCP 服务”简化成做填空题
🐍 Python 选手:FastMCP
是什么:由 Prefect 联合创始人 Jeremiah Lowin 打造的“高阶”框架,灵感来自 FastAPI。
作用:用装饰器把普通 Python 函数直接注册成工具,自动生成 JSON Schema,支持 HTTP 传输一键切换。
生动场景:就像你本来要自己搭灶台、备菜、炒菜,结果 FastMCP 直接给了你一个集成厨房:把菜(函数)扔进锅里,按个开关(装饰器),菜就自动端给模型了。
应用场景:个人开发者、快速原型、需要最快速度把想法变成 MCP 服务的小团队。
代码对比(实现同样天气工具):
fromfastmcpimportFastMCP mcp=FastMCP("Weather Service")@mcp.tool()defget_weather(city:str)->str:"""查询指定城市的天气"""returnf"{city}晴,30°C"mcp.run()三行元代码就能跑,工具名、参数描述、返回格式全自动推导。这就是框架的魔力——协议细节被完美隐藏,你只写业务逻辑。
☕️ Java/Spring 生态:Spring AI MCP
是什么:VMware 官方 Spring AI 项目的一部分,把 MCP 能力融入 Spring Boot 的自动配置、依赖注入体系。
作用:只需添加spring-ai-mcp-spring-boot-starter依赖,用@Tool注解标记类方法,一个 Web 应用就同时是 MCP Server。
生动场景:你的公司已经有一套庞大的 Spring 系统,库存、订单微服务全在。Spring AI MCP 就像给这些旧铁路铺上电气化轨道——AI 列车可以直接开进来。
应用场景:企业级 Java 应用,需要将内部 API 安全、标准化地开放给 AI 助手。
🐹 Go 语言:mcp-go
是什么:Go 社区最活跃的 MCP 库,API 简洁,性能优越。
作用:利用 Go 天然高并发的优势,构建高性能、低资源的 MCP 网关或工具。
场景:你需要一个极轻量的工具,比如执行 Shell 命令、操作 Docker,或者作为 Sidecar 容器注入到 Kubernetes Pod,mcp-go 就是不二之选。
🦀 Rust 语言:mcp-rs
是什么:Rust 生态的 MCP 实现,追求极致安全和速度。
作用:构建可信、实时性要求极高的工具,比如加密操作、硬件传感器读取。
场景:边缘计算、IoT 设备,需要把物理世界的数据用最可靠的方式喂给 AI。
专用型“开箱即用”服务器:不写代码也能拥有超能力
除了自己开发,不少框架还直接提供了预置的 MCP Server,拿来配一下就能用:
- Filesystem:安全访问指定文件夹,AI 就能读写本地文件。
- Postgres / SQLite:通过自然语言查询数据库。
- GitHub / Slack:让 AI 查 Issue、发消息。
- Brave Search:赋予模型实时网页搜索能力。
这些大多基于上述框架开发,并发布在 npm、PyPI 上,装完配置环境变量,客户端就能连接。从“使用者”到“创造者”,中间只隔着一个框架。
框架选择指南(一看就懂)
| 你的背景 | 推荐框架 | 理由 |
|---|---|---|
| Python 新手,想最快出活儿 | FastMCP | 装饰器一加,工具立现,写几行就能和 Claude 联动 |
| Python 高级用户,需要全控制 | 官方 Python SDK | 异步、流式、多传输全搞定 |
| 全栈 JS 开发者,已有 Node 项目 | TypeScript SDK | 和前端无缝共享类型定义 |
| Java 企业级开发 | Spring AI MCP | 依靠 Spring Boot 自动配置,零改造接入 |
| 追求性能、部署轻量 | mcp-go (Go) | 二进制大小几兆,内存占用低 |
| 安全、嵌入式系统 | mcp-rs (Rust) | 内存安全、无 GC 抖动 |
一条能立刻跑通的学习路径
- 15 分钟体验:安装
FastMCP,把你之前写的某个小函数(比如生成二维码、查询农历)用@mcp.tool()装饰,跑起来,用 Claude Desktop 连接,亲眼看着 AI 调用你的代码。 - 1 小时理解协议:用官方 Python SDK 手写一个工具,理解 Server、Tool、Resource 的区别,看看底层 JSON 交互长什么样。
- 半天整合实战:将你常用的数据库、内部 API 封装成 MCP Server,彻底让 AI 成为你的生产力飞轮。
MCP 生态正在疯狂生长,但核心思想始终没变:让 AI 不再是孤岛,而你和开源框架之间,只隔着一行pip install的距离。无论你是想给 Claude 加个计算器,还是为整个公司搭建 AI 网关,总有一款框架适合你。
延伸阅读与资源
后端工程师的 AI 转型第一课:Ollama 与私有化大模型实战
10倍开发者的 Dify 魔法书:从零构建全栈 AI 应用
后端工程师转型AI第一课-Ollama 与私有化大模型实战
大型语言模型(LLM) vLLM 高性能推理落地实战
Agent开发之LlamaIndex 实战修炼与源码进阶
大语言模型Transformers 实战修炼与源码剖析