项目简介
'mcpproxy' 是一个基于 Server-Sent Events (SSE) 构建的 Model Context Protocol (MCP) 代理服务器。它的核心功能是允许 LLM 客户端通过稳定的 SSE 连接,远程启动并与任何符合 MCP 标准的服务器进行交互。这个代理层负责管理客户端连接、将会话映射到后端的 MCP 服务器进程,并处理 JSON-RPC 消息的转发和通知。
主要功能点
- SSE 长连接支持: 利用 SSE 实现客户端与代理服务器之间的稳定长连接,支持服务器向客户端推送消息。
- JSON-RPC 2.0 通信: 遵循 JSON-RPC 2.0 标准格式处理客户端发来的请求。
- 会话模式: 支持多客户端共享一个后端 MCP 服务器进程(共享模式),或每个客户端连接启动独立的 MCP 服务器进程(独立模式)。
- 动态配置: 允许客户端通过连接参数向后端 MCP 服务器传递环境变量,实现会话级别的动态配置。
- 进程管理: 内建支持使用 NPX 或 UVX 启动基于 STDIO 协议的 MCP 服务器进程。
- 连接心跳: 自动发送心跳消息保持连接活跃。
安装步骤
该项目可以通过 Python 或 Docker 运行。
使用 Python:
- 确保已安装 Python 环境。
- 克隆仓库到本地。
- 安装依赖:参考仓库中的 'requirements.txt' 或使用 'pip install -r requirements.txt' (如果文件存在)。
- 设置必要的环境变量(见下方服务器配置)。
- 运行主文件:'python main.py'
使用 Docker:
- 确保已安装 Docker。
- 拉取 Docker 镜像:'docker pull codefriday123/mcpproxy:1.0'
- 运行容器,并设置端口映射和环境变量:
根据需要修改 '-e' 参数设置环境变量。docker run -d \ -p 8000:8000 \ -e AUTH_KEY=你的密钥 \ -e SHARED_SESSION=true \ -e MCP_SERVER_CONFIG="npx -y @modelcontextprotocol/server-filesystem ." \ codefriday123/mcpproxy:1.0
服务器配置 (代理服务器运行时的配置)
代理服务器通过环境变量进行配置:
- 'AUTH_KEY': (可选) 设置服务器访问密钥。如果设置,客户端连接时必须通过 URL 参数 'auth_key' 提供正确的密钥。
- 'SHARED_SESSION': (可选) 设置会话模式。'true' 为共享模式 (默认),所有客户端共享一个后端 MCP 进程;'false' 为独立模式,每个客户端连接启动独立的后端 MCP 进程。
- 'MCP_SERVER_CONFIG': (必需) 定义要启动的后端 MCP 服务器进程的命令。例如:
- 运行 Node.js 文件系统服务器: '"npx -y @modelcontextprotocol/server-filesystem ."'
- 运行 Python Fetch 服务器: '"uvx mcp-server-fetch"' 需要确保运行代理服务器的环境能够执行这个命令(例如,安装了 Node.js/npm/npx 或 Python/uvx)。
客户端连接配置 (用于 MCP 客户端连接此代理服务器):
MCP 客户端(例如 Cursor 或其他 MCP 客户端库)需要知道如何连接到这个代理服务器。典型的客户端配置文件(如 '.cursor/mcp.json')会包含类似以下结构的条目(请注意,以下是描述客户端配置文件的结构和字段,而不是可直接运行的代码):
- 'url': string 类型,填写此代理服务器的 SSE 连接地址,例如 '"http://你的服务器地址:8000/sse?auth_key=你的密钥"'。如果代理服务器设置了 'AUTH_KEY',则需要在此处通过 'auth_key' URL 参数提供。
- 'env': object 类型,(可选) 在独立会话模式下,可以在此对象中设置键值对,这些键值对将作为环境变量传递给为该客户端连接启动的后端 MCP 服务器进程。例如,设置 GitHub Token:'{"GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_xxxxxxxxxxxx"}'。
基本使用方法
- 按照安装步骤启动 'mcpproxy' 代理服务器,并设置 'MCP_SERVER_CONFIG' 指向你想要使用的后端 MCP 服务器。
- 在你的 MCP 客户端(如 Cursor)的配置中,添加一个指向此代理服务器 SSE 地址的条目,包含正确的 URL 和可能的认证密钥、动态环境变量等。
- 客户端即可通过代理服务器与后端 MCP 服务器进行通信,调用其提供的工具、访问资源等。
信息
分类
网页与API