前言
说白了,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
有问题评论区见 👇