Skip to content

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 mcp

3. 编写 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 获得的。

这就是定义物理世界接口的过程。

Made with vitepress by williamwong