03. 实战:打造自己的 MCP Server
课时信息
📅 时间:课后 / 选修 🎯 目标:动手编写一个自定义的 MCP Server,实现 Python 逻辑与 AI 的互联
1. 为什么自己写 Server?
虽然 GitHub/SQLite Server 很好用,但有时候你需要 AI 操作你自己公司的内部系统,或者执行一些私有的脚本。这时就需要手写 MCP Server。
2. 环境准备
我们将使用 Python 的 mcp 官方 SDK。
bash
# 创建虚拟环境
python3 -m venv venv
source venv/bin/activate
# 安装 MCP SDK
pip install mcp3. 编写 Server 代码 (weather_server.py)
我们模拟一个简单的天气查询服务。
python
from mcp.server.fastmcp import FastMCP
# 1. 创建 Server 实例
mcp = FastMCP("My Weather Server")
# 2. 定义 Tool (使用装饰器)
@mcp.tool()
def get_weather(city: str) -> str:
"""Get the current weather for a city."""
# 这里可以是真实的 API 调用
if city.lower() == "beijing":
return "Sunny, 25°C"
elif city.lower() == "shanghai":
return "Rainy, 20°C"
else:
return "Unknown city"
# 3. 运行 Server
if __name__ == "__main__":
mcp.run()4. 连接到 Claude / Cline
方式 A: Claude Desktop
编辑 ~/Library/Application Support/Claude/claude_desktop_config.json:
json
{
"mcpServers": {
"my-weather": {
"command": "/path/to/venv/bin/python",
"args": ["/path/to/weather_server.py"]
}
}
}方式 B: Cline
在 Cline 设置中添加同样的配置。
5. 见证时刻
重启 Claude Desktop 或 Cline,提问:
"上海今天天气怎么样?"
观察: 你会发现 AI 不再瞎编,而是精准回答 "Rainy, 20°C",并且你会看到它是通过调用 get_weather 获得的。
这就是定义物理世界接口的过程。