MCP代理服务

一个简单的Python HTTP代理服务器,可通过HTTP桥接任何MCP(模型上下文协议)服务器。

  • by filipzag
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 filipzag/MCP-proxy

使用说明

通用MCP代理

一个简单的Python HTTP代理服务器,可以通过HTTP桥接任何MCP(模型上下文协议)服务器。

特性

  • 通用:通过环境变量或JSON配置文件配置MCP命令和工作目录。
  • 可配置端口:在任何端口上运行。
  • 通过:转发 stdin 和 stdout JSON-RPC消息。
  • 通知处理:正确处理JSON-RPC通知(预期无响应)。
  • 环境传承:将父环境变量传递给MCP进程。
  • 承载令牌认证:通过以下方式进行可选身份验证 MCP_AUTH_TOKEN.
  • SSE支持:通过服务器发送事件(SSE)流式传输HTTP。

需求

  • Python 3.8+
  • fastapi
  • uvicorn

设置

  1. 安装依赖项:
    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"]