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

有问题评论区见 👇