使用说明
FastMCP代理服务器
构建的轻量级代理服务器 FastMCP 其通过各种传输协议公开一个或多个底层MCP(模型上下文协议)服务器,使其可供更广泛的客户端访问。
项目状态
⚠️ 此项目不再维护。
它构建于2025年中期,是一个基于FastMCP的轻量级代理,旨在减少多个本地AI客户端(如Claude Desktop、VS Code、Cursor)之间的MCP服务器配置重复。MCP生态系统此后发展迅速,此回购仅作为参考/原型保存在这里。
特性
- 多个传输:暴露MCP服务器
stdio,sse(服务器发送的事件),或http. - 灵活配置:通过编辑来轻松配置要代理的MCP服务器
servers.json文件。 - 轻量级:基于高效的FastMCP库构建,并在小型Alpine Linux容器中运行。
- MCP服务器支持:同时支持Node.js(
npx)Python(uvx)基于MCP服务器。
需求
- Docker和Docker Compose
如何跑步
此项目可以使用Docker Compose或直接使用Docker命令运行:
先决条件
- 克隆存储库:
git clone https://github.com/sokunmin/mcp-proxy.git cd mcp-proxy
方法一:使用Docker Compose(推荐)
使用预定义配置运行代理的最简单方法:
# Run with default settings (SSE transport, port 8000)
docker-compose up --build
# Run in background
docker-compose up -d --build
# Stop the service
docker-compose down
覆盖环境变量
您可以在不编辑文件的情况下覆盖默认传输:
# Run with HTTP transport
TRANSPORT=http PORT=8001 docker-compose up
# Run with custom port
PORT=9000 docker-compose up
# Run with multiple overrides
TRANSPORT=http PORT=8080 docker-compose up
方法2:使用Docker运行
要对容器配置进行更多控制:
第一步:塑造形象
docker build -t mcp-proxy .
步骤2:运行容器
选项A:直接使用环境变量
# SSE Transport (Default)
docker run -d --name mcp-proxy \
-p 8000:8000 \
-e TRANSPORT=sse \
-e HOST=0.0.0.0 \
-e PORT=8000 \
-e TZ=Etc/UTC \
mcp-proxy
# HTTP Transport
docker run -d --name mcp-proxy-http \
-p 8001:8001 \
-e TRANSPORT=http \
-e HOST=0.0.0.0 \
-e PORT=8001 \
-e TZ=Etc/UTC \
mcp-proxy
选项B:使用具有一致PORT变量的.env文件
# Load environment variables from .env file
source .env
# Run with loaded variables
docker run -d --name mcp-proxy \
-p ${PORT}:${PORT} \
-e TRANSPORT=${TRANSPORT} \
-e HOST=${HOST} \
-e PORT=${PORT} \
-e TZ=${TZ} \
mcp-proxy
# For HTTP transport, override specific variables
TRANSPORT=http PORT=8001 docker run -d --name mcp-proxy-http \
-p ${PORT}:${PORT} \
-e TRANSPORT=${TRANSPORT} \
-e HOST=${HOST} \
-e PORT=${PORT} \
-e TZ=${TZ} \
mcp-proxy
选项C:使用--env文件
# Use .env file directly
docker run -d --name mcp-proxy \
--env-file .env \
-p 8000:8000 \
mcp-proxy
# Override specific variables
docker run -d --name mcp-proxy-http \
--env-file .env \
-e TRANSPORT=http \
-e PORT=8001 \
-p 8001:8001 \
mcp-proxy
容器管理
# View logs
docker logs mcp-proxy
# Stop the container
docker stop mcp-proxy
# Remove the container
docker rm mcp-proxy
# View running containers
docker ps
环境变量
可以在中配置以下环境变量 .env 文件或直接传递:
TRANSPORT:传输协议(sse,http,stdio)-默认值:sseHOST:要绑定的主机-默认值:0.0.0.0PORT:服务的端口号-默认值:8000TZ:时区-默认值:Etc/UTC
快速入门示例
# Default SSE on port 8000
docker-compose up
# HTTP on port 8001
TRANSPORT=http PORT=8001 docker-compose up
# Custom port
PORT=9000 docker-compose up
# Run in background
docker-compose up -d
配置
要配置代理,请编辑 servers.json 文件。您可以添加、删除或修改要公开的MCP服务器。
{
"mcpServers": {
"context7": {
"transport": "stdio",
"command": "npx",
"args": ["-y", "@upstash/context7-mcp"]
},
"fetch": {
"command": "uvx",
"args": ["mcp-server-fetch"]
},
"time": {
"transport": "stdio",
"command": "uvx",
"args": ["mcp-server-time", "--local-timezone", "Etc/UTC"]
}
}
}
这 servers.json 文件作为卷装载,因此更改在容器重新启动时生效。
如何测试
您可以使用任何符合MCP的客户端或类似工具测试正在运行的代理 curl.
测试SSE传输(端口8000)
# Test the SSE endpoint
curl http://localhost:8000/sse/
# Check server health
curl http://localhost:8000/
测试HTTP传输(端口8001)
# Test the HTTP endpoint
curl http://localhost:8001/
# Check server health
curl http://localhost:8001/
使用不同服务进行测试
# Test SSE service
docker-compose up mcp-proxy-sse
curl http://localhost:8000/sse/
# Test HTTP service
docker-compose up mcp-proxy-http
curl http://localhost:8001/
测试MCP服务器
代理目前支持以下MCP服务器:
- 上下文7:文档搜索和上下文检索(Node.js通过
npx) - 获取:Web内容获取(Python通过
uvx) - 时间:时间和时区操作(Python通过
uvx)
需要时,代理会自动启动所有服务器。
故障排除
常见问题
- 端口冲突:确保端口8000/8001未被其他应用程序使用
- 容器构建问题:使用
docker-compose down和docker-compose up --build强制进行彻底的重建 - 配置错误:检查
servers.json语法,并确保所有必填字段都存在
监控
检查服务运行状况:
# View logs
docker-compose logs -f mcp-proxy-sse
# Check container status
docker-compose ps
# Access container shell (if needed)
docker-compose exec mcp-proxy-sse sh
