使用说明
通用MCP代理
一个简单的Python HTTP代理服务器,可以通过HTTP桥接任何MCP(模型上下文协议)服务器。
特性
- 通用:通过环境变量或JSON配置文件配置MCP命令和工作目录。
- 可配置端口:在任何端口上运行。
- 通过:转发
stdin和stdoutJSON-RPC消息。 - 通知处理:正确处理JSON-RPC通知(预期无响应)。
- 环境传承:将父环境变量传递给MCP进程。
- 承载令牌认证:通过以下方式进行可选身份验证
MCP_AUTH_TOKEN. - SSE支持:通过服务器发送事件(SSE)流式传输HTTP。
需求
- Python 3.8+
fastapiuvicorn
设置
- 安装依赖项:
pip install -r requirements.txt
用法
您可以使用环境变量或JSON配置文件(标准Anthropic格式)配置服务器。
选项1:使用配置文件(推荐)
创建JSON文件(例如。, mcp_config.json)使用标准MCP服务器配置:
{
"mcpServers": {
"my-security-server": {
"command": "node",
"args": ["dist/index.js"],
"env": {
"SIGMA_PATHS": "/path/to/sigma/rules"
}
}
}
}
运行代理,指定配置文件和服务器名称:
export MCP_CONFIG_FILE="mcp_config.json"
export MCP_SERVER_NAME="my-security-server"
export MCP_CWD="/path/to/mcp/project" # Optional
export MCP_PORT=8000 # Optional
uvicorn server:app --host 0.0.0.0 --port $MCP_PORT
选项2:使用环境变量
设置 MCP_COMMAND 环境变量直接。
export MCP_COMMAND="node dist/index.js"
export MCP_CWD="/path/to/mcp/project" # Optional
export MCP_PORT=8000 # Optional
uvicorn server:app --host 0.0.0.0 --port $MCP_PORT
API
-
POST /mcp:发送JSON-RPC正文。返回JSON-RPC响应。 -
GET /health:检查MCP进程是否正在运行。 -
GET /sse:连接到SSE流。正在接收来自MCP服务器的消息。 -
POST /messages:异步发送JSON-RPC主体。消息被发送到MCP服务器,响应通过SSE流式传输。 -
GET /health:检查MCP进程是否正在运行。
认证
您可以通过设置来保护MCP端点 MCP_AUTH_TOKEN 环境变量。
export MCP_AUTH_TOKEN="my-secret-token"
设置后,服务器将需要 Authorization 头球
Authorization: Bearer my-secret-token
如果 MCP_AUTH_TOKEN 如果未设置,服务器将在没有身份验证的情况下运行。
码头工人
您可以将此代理容器化:
FROM python:3.9-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY server.py .
ENV MCP_HOST=0.0.0.0
ENV MCP_PORT=8000
CMD ["uvicorn", "server:app", "--host", "0.0.0.0", "--port", "8000"]
