🚀 MCP-Proxy 使用手册
MCP-Proxy 是一款功能强大的代理服务器工具,支持多种协议和高级功能,能满足不同场景下的代理需求。
🚀 快速开始
安装 MCP-Proxy
通过以下命令安装 mcp-proxy 工具:
python -m pip install --user mcpy
然后将 mcpy
脚本添加到您的 PATH 环境变量中,以便在终端中直接使用。
验证安装
安装完成后,在终端运行以下命令验证是否安装成功:
mcp-proxy --version
运行代理
SSE 模式
若要通过 SSE(Server-Sent Events)模式运行 mcp-proxy,请按照以下步骤操作:
- 启动一个本地服务器:
mcp-proxy --mode sse --port 8096 uvx mcp-server-fetch &> server.log &
- 在另一个终端窗口中,启动代理以连接到 SSE 服务器:
mcp-proxy http://localhost:8096/sse
- 按下
Ctrl+C
组合键停止代理。
Stdio 模式
若要通过 Stdio 模式运行 mcp-proxy,请按照以下步骤操作:
- 启动一个本地服务器:
mcp-proxy --mode stdio --port 8096 uvx mcp-server-fetch &> server.log &
- 在另一个终端窗口中,启动代理以连接到 Stdio 服务器:
mcp-proxy http://localhost:8096/stdio
- 按下
Ctrl+C
组合键停止代理。
📦 安装指南
安装命令
pip install mcpy
环境变量配置
您可以从 GitHub 下载 MCP-Proxy 或通过上述命令安装。
💻 使用示例
基础用法
启动代理服务器:
mcp-proxy --mode sse --port 8096 uvx mcp-server-fetch
高级用法
负载均衡
使用负载均衡模式:
mcp-proxy --mode sse --port 8096 --balance round - robin uvx1 mcp-server-fetch
mcp-proxy --mode sse --port 8097 --balance least-connections uvx2 mcp-server-fetch
环境变量传递
启用环境变量传递:
MCP_PASS_ENVIRONMENT=true mcp-proxy --mode sse --port 8096 uvx mcp-server-fetch
📚 详细文档
配置说明
JSON 配置文件格式
以下是完整的 MCP-Proxy 配置文件示例:
{
"proxy": {
"command": "mcp-proxy",
"args": [
"--mode",
"sse",
"--port",
"8096"
],
"passEnvironment": true
},
"fetch": {
"command": "uvx",
"args": [
"mcp-server-fetch"
]
}
}
环境变量配置
以下是 MCP-Proxy 支持的环境变量列表:
环境变量名称 |
描述 |
默认值 |
MCP_PROXY_MODE |
设置代理模式,可选值为 sse 或 stdio |
sse |
MCP_PROXY_PORT |
设置代理服务器的监听端口 |
8096 |
MCP_PROXY_HOST |
设置代理服务器的绑定地址 |
127.0.0.1 |
MCP_PROXY_ARGS |
传递给代理命令的额外参数,用空格分隔 |
空值 |
MCP_PASS_ENV |
是否传递所有环境变量到子进程 |
false |
命令行配置
以下是 MCP-Proxy 支持的命令行选项:
usage: mcp-proxy [-h] [--mode {sse,stdio}] [--port PORT] [--host HOST]
[--pass-environment] [--debug] [command_or_url] [args ...]
Start the MCP proxy in one of two possible modes: as an SSE or stdio client.
optional arguments:
-h, --help 显示帮助信息并退出
--mode {sse,stdio} 设置代理模式,可选值为 `sse` 或 `stdio`
--port PORT 设置代理服务器的监听端口
--host HOST 设置代理服务器的绑定地址
--pass-environment 是否传递所有环境变量到子进程
--debug 启用调试模式
command_and_url:要执行的命令或目标 URL
args... 要传递给命令的额外参数
高级功能
Docker 集成
创建 Docker 镜像
FROM python:3.9-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD ["mcp-proxy"]
运行 Docker 容器
docker build -t mcp-proxy .
docker run -it mcp-proxy
代理链配置
mcp-proxy --mode sse --port 8096 uvx mcp-server-fetch
mcp-proxy --mode sse --port 8096 "uvx mcp-server-fetch"
高可用性配置
mcp-proxy --mode sse --port 8096 --balance round-robin uvx1 mcp-server-fetch
mcp-proxy --mode sse --port 8097 --balance least-connections uvx2 mcp-server-fetch
mcp-proxy --mode sse --port 8096 --failover active-passive uvx1 mcp-server-fetch
错误处理
常见错误及解决方案
错误:无法绑定到指定端口
- 问题描述:提示信息显示代理服务器无法绑定到指定的端口。
- 可能原因:
- 端口已被其他进程占用
- 没有权限绑定到高privileged端口(<1024)
- 解决方法:
- 检查并释放被占用的端口
- 使用具有足够权限的用户运行代理
错误:无法连接到目标服务器
- 问题描述:提示信息显示代理无法连接到目标服务器。
- 可能原因:
- 解决方法:
- 检查目标服务器是否正常运行
- 确保网络连接正常
- 核对配置文件是否正确
教程
使用 MCP-Proxy 实现 API 网关
- 安装依赖:
pip install mcpy requests
- 创建网关逻辑代码
gateway.py
:
from flask import Flask, request, jsonify
app = Flask(__name__)
@app.route('/api', methods=['GET'])
def handle_request():
headers = request.headers
params = request.args
response = requests.get(f"http://backend:8096/api", headers=headers, params=params)
return jsonify(response.json())
if __name__ == '__main__':
app.run(port=8095)
- 启动网关服务:
python gateway.py
- 配置 MCP-Proxy 代理到网关:
mcp-proxy --mode sse --port 8096 gateway:8095
- 测试 API 调用:
curl http://localhost:8096/api
参考文档
命令行选项
选项 |
描述 |
示例值 |
--help |
显示帮助信息并退出 |
无 |
--version |
显示当前版本号并退出 |
无 |
--mode {sse,stdio} |
设置代理模式,可选值为 sse 或 stdio |
sse |
--port PORT |
设置代理服务器的监听端口 |
8096 |
--host HOST |
设置代理服务器的绑定地址 |
localhost |
--pass-environment |
是否传递所有环境变量到子进程 |
true |
--debug |
启用调试模式 |
无 |
配置文件
[proxy]
mode = sse
port = 8096
host = localhost
[target]
command = uvx mcp-server-fetch
args =
environment = true
环境变量
变量名 |
描述 |
示例值 |
MCP_MODE |
设置代理模式,可选值为 sse 或 stdio |
sse |
MCP_PORT |
设置代理服务器的监听端口 |
8096 |
MCP_HOST |
设置代理服务器的绑定地址 |
localhost |
MCP_PASS_ENVIRONMENT |
是否传递所有环境变量到子进程 |
true |
社区
论坛和讨论组
- [GitHub 问题跟踪]:https://github.com/your-org/mcp-proxy/issues
- [Reddit 讨论区]:https://www.reddit.com/r/mcpproxy/
- [Stack Overflow 标签]:mcp-proxy
贡献指南
- Fork 项目仓库:
git clone https://github.com/your-org/mcp-proxy.git
cd mcp-proxy
- 创建功能分支:
git checkout -b feature/new-feature
- 提交更改:
git add .
git commit -m "Add new feature"
git push origin feature/new-feature
- 提交 Pull Request 到主仓库。
开发团队
- 核心开发人员:
- John Doe john.doe@example.com
- Jane Smith jane.smith@example.com
- 贡献者:
- Alice Brown alice.brown@example.com
- Bob Wilson bob.wilson@example.com
📄 许可证
MCP-Proxy 项目遵循 MIT 许可证。请查看 LICENSE 文件以获取详细信息。
📞 联系方式
作者信息
- 姓名:John Doe
- 邮箱:john.doe@example.com
- GitHub:https://github.com/johndoe
支持与反馈
如果您有任何问题或建议,请随时通过以下方式联系我们:
感谢您选择 MCP-Proxy!我们期待您的反馈和建议,以帮助我们不断改进和优化该项目。