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 / Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
# Windows
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
创建项目:
uv init mcp-server-demo
cd mcp-server-demo
uv add mcp anthropic

写一个最简单的 MCP Server
直接上代码。这个 Server 提供一个 get_weather 工具,返回模拟天气数据:
# server.py
from mcp.server.fastmcp import FastMCP
mcp = FastMCP("weather-server")
@mcp.tool()
async def get_weather(city: str) -> str:
"""获取指定城市的天气信息"""
# 这里用模拟数据,实际项目可以接真实 API
mock_data = {
"北京": "晴,28°C,湿度 45%",
"上海": "多云,26°C,湿度 65%",
"深圳": "雷阵雨,30°C,湿度 80%",
}
return mock_data.get(city, f"{city}:暂无数据")
@mcp.tool()
async def list_cities() -> str:
"""返回支持查询的城市列表"""
return "北京、上海、深圳"
if __name__ == "__main__":
mcp.run(transport="stdio")
就这么多。没错,MCP Server 的核心就是这么简洁。装饰器 @mcp.tool() 会自动把函数注册为工具,函数的 docstring 就是工具的描述——Claude 会根据这个描述决定什么时候调用它。
用 Claude Desktop 测试
打开 Claude Desktop 的配置文件:
# macOS
vim ~/Library/Application\ Support/Claude/claude_desktop_config.json
# Windows
notepad %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")
async def get_config():
"""返回应用配置信息"""
return {"version": "1.0", "debug": False}
@mcp.prompt()
async def weather_report(city: str) -> str:
"""生成天气报告的提示模板"""
return f"请根据以下信息为 {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
有问题评论区见 👇
更多推荐


所有评论(0)