### 封装 Python 脚本为 MCP Server 并集成到 Traefik 客户端
将 Python 脚本封装为 MCP Server 并集成到本地 Traefik 客户端涉及多个步骤,包括构建 MCP Server、配置 Traefik 以代理请求以及测试集成。以下是详细说明:
#### 1. 构建 MCP Server
MCP Server 的开发可以通过使用 `FastMCP` 框架实现。以下是一个示例代码片段,展示如何创建一个简单的 MCP Server[^3]。
```python
from mcp.server.fastmcp import FastMCP
# 创建一个名为 "Demo" 的 MCP Server
mcp = FastMCP("Demo")
# 定义一个工具函数 add
@mcp.tool()
def add(a: int, b: int) -> int:
"""Add two numbers"""
return a + b
if __name__ == "__main__":
# 启动 MCP Server,监听所有网络接口的 5000 端口
mcp.run(host="0.0.0.0", port=5000, debug=True)
```
上述代码定义了一个名为 `Demo` 的 MCP Server,并提供了一个工具函数 `add`,用于计算两个整数的和。通过设置 `debug=True`,服务器会在开发过程中自动重启以反映代码变更[^2]。
#### 2. 配置 Traefik 客户端
Traefik 是一个现代反向代理和负载均衡器,可以轻松地将请求路由到 MCP Server。以下是如何配置 Traefik 以代理请求到 MCP Server 的方法。
##### 2.1 安装 Traefik
确保在本地安装了 Traefik。可以通过 Docker 或直接下载二进制文件来安装 Traefik。
##### 2.2 配置 Traefik 文件
创建一个 `traefik.yml` 文件,配置 Traefik 以代理请求到 MCP Server。
```yaml
entryPoints:
web:
address: ":80"
providers:
file:
directory: /etc/traefik/
watch: true
http:
routers:
mcp-router:
rule: "PathPrefix(`/mcp/route`)"
service: mcp-service
entryPoints:
- web
services:
mcp-service:
loadBalancer:
servers:
- url: "http://localhost:5000"
```
上述配置中:
- `entryPoints` 定义了 Traefik 的入口点为 `web`,监听 80 端口。
- `routers` 定义了一个名为 `mcp-router` 的路由器,将路径前缀为 `/mcp/route` 的请求转发到 `mcp-service`。
- `services` 定义了一个名为 `mcp-service` 的服务,将请求转发到运行在 `localhost:5000` 的 MCP Server。
##### 2.3 启动 Traefik
启动 Traefik 容器或二进制文件,确保它能够读取上述配置文件。
```bash
docker run -d \
-v /path/to/traefik.yml:/etc/traefik/traefik.yml \
-p 80:80 \
traefik:v2.9
```
#### 3. 测试集成
完成上述配置后,可以通过发送 HTTP 请求测试 MCP Server 是否正常工作。
```python
import requests
import json
url = "http://localhost/mcp/route"
payload = {
"model_output": "This is a test model output",
"context": {
"source": "test_model",
"timestamp": "2024-07-10T14:30:00"
}
}
headers = {
"Content-Type": "application/json"
}
response = requests.post(url, data=json.dumps(payload), headers=headers)
print(response.json())
```
上述代码发送了一个 POST 请求到 Traefik,Traefik 将请求转发到 MCP Server。
#### 4. 构建特定平台的 Wheel 包(可选)
如果需要将 MCP Server 部署到不同平台上,可以构建特定平台的 wheel 包。例如,构建 Windows x64 的 wheel 包可以使用以下命令[^4]。
```bash
TARGET_PLATFORM=windows_x64 python setup.py bdist_wheel
```
---
###