Integrations
Provides Bash command execution tools for Linux environments, allowing execution of shell commands through the MCP interface.
Offers Bash command execution capabilities for macOS, enabling shell command execution through the MCP interface.
Supports integration with Node.js-based MCP servers like Playwright MCP through the stdio connection type.
MCP 网关
English |简体中文
执照
该项目根据 GNU 通用公共许可证 v3.0 获得许可 - 有关更多详细信息,请参阅LICENSE文件。
项目概述
MCP 网关是一个使用 Python 构建的应用程序。它充当中央网关,连接并聚合来自多个后端 MCP 服务器的功能(无论它们通过 Stdio 还是 SSE 协议通信)。最终,它通过统一的SSE端点 ( /sse
) 将这些聚合的功能暴露给上游 MCP 客户端。
核心优势:
- 简化的客户端配置: MCP 客户端只需连接到 MCP 网关的单一地址即可访问所有后端服务的功能,无需单独配置每个后端服务器。
- **能力聚合与编排:**聚合来自不同来源的具有多种功能的 MCP 工具,为构建更强大、专注于特定任务领域的定制代理提供基础。
项目文件结构
内置 MCP 服务器
该项目附带四个后端 MCP 服务器工具,可直接使用并在config.json
中启用,无需额外配置:
- Bash 命令执行工具(
bash_server.py
) :在 Linux、macOS 或 WSL 环境中执行 Bash 命令。 - Windows CMD 命令执行工具(
cmd_server.py
) :在 Windows 环境中执行 CMD 命令。 - Windows PowerShell 命令执行工具(
powershell_server.py
) :在 Windows 环境中执行 PowerShell 命令。 - Windows WMI 查询工具(
wmi_server.py
) :在 Windows 环境中执行 WMI 查询。
如果你在Linux环境下遇到如下错误:
Copy请卸载
wmi
模块:uv remove wmi
安装和设置
本项目使用 Python 编写。建议使用uv
进行环境和依赖管理。
- 克隆存储库Copy
- 创建并激活虚拟环境Copy
- 安装依赖项Copy
完成这些步骤后,项目就可以运行了。
快速入门
获取项目帮助
您可以使用-h
或--help
参数查看所有可用的启动选项:
输出将类似于此:
启动项目
使用uv run python main.py
启动服务器。您可以指定host
、 port
和log-level
:
启动后,你会看到类似下图的丰富美化的控制台输出,显示了服务器状态、连接信息以及加载的工具:
MCP 客户端连接
启动 MCP 网关后,您可以使用任何与 MCP 兼容的客户端(例如 Cline、Cursor、Claude Desktop 或自定义客户端)连接到网关提供的 SSE 端点。
默认地址是http://<Server_IP_Address>:9000/sse
(如果使用默认端口)。
示例(使用 ChatWise Connect):
- 选择
SSE
连接类型。 - 输入网关的 SSE URL(例如,
http://127.0.0.1:9000/sse
)。 - 单击
Connect
。
连接成功后,您可以在客户端看到通过 Gateway 聚合的所有后端 MCP 工具:
日志
运行时日志会自动保存在项目根目录下的logs
文件夹中。日志文件名包含时间戳和日志级别,方便您追踪问题。
配置文件( config.json
)
核心配置文件config.json
位于项目根目录,它定义了 MCP 网关需要连接和管理的后端 MCP 服务器。
每个条目代表一个后端服务器。键是你分配给该后端服务器的唯一名称(此名称将用作其功能的前缀),值是一个包含服务器配置的对象。
支持两种类型的后端服务器连接:
stdio
:通过标准输入/输出(stdin/stdout)与本地启动的 MCP 服务器进程进行通信。sse
:通过服务器发送事件 (SSE) 协议与远程或本地运行的 MCP 服务器通信。
Stdio 类型配置
适用于生命周期需要由网关管理的本地 MCP 服务器进程。
配置字段:
type
(必需):必须是"stdio"
。command
(必需):用于启动服务器进程的可执行命令(例如,python
、uv
、node
或脚本/可执行文件的绝对路径)。args
(必需):传递给command
参数列表(字符串列表)。env
(可选):为子进程设置的环境变量字典(Dict[str, str])。如果省略,子进程将继承网关的环境变量。
例子:
工作原理: MCP 网关启动时,会使用指定的command
和args
(以及可选的env
)启动一个子进程。网关通过此子进程的标准输入和输出与后端 MCP 服务器通信。网关关闭时,会尝试终止这些子进程。
SSE类型配置
适用于连接已经运行的 MCP 服务器(本地或远程),或者网关在连接之前需要启动本地 SSE 服务器进程的情况。
配置字段:
type
(必需):必须是"sse"
。url
(必需):后端 MCP 服务器的 SSE 端点 URL(完整的 HTTP/HTTPS 地址)。command
(可选):如果指定,网关将在启动时运行此命令以启动本地 SSE 服务器。args
(可选,仅在指定command
时):传递给command
的参数列表。env
(可选,仅在指定command
时):为本地启动的子进程设置的环境变量。
示例 1:连接到已运行的远程 SSE 服务器
示例 2:网关启动本地 SSE 服务器并连接
工作原理:
- 仅提供
url
:网关直接尝试连接到指定的url
。 url
、command
、args
provided :网关首先使用command
和args
启动一个本地进程(期望此进程监听与url
对应的地址和端口)。然后,它会等待一小段时间(在client_manager.py
中定义的LOCAL_SSE_STARTUP_DELAY
),然后再尝试连接到url
。当网关关闭时,它会尝试终止此本地进程。
配置添加示例
以下是如何将第三方 MCP 服务器添加到config.json
示例。
Stdio 示例:Playwright MCP
假设您想要集成 Playwright 的 MCP 服务器( @playwright/mcp
)。
- 了解启动方法:Playwright MCP 通常使用
npx @playwright/mcp@latest
启动。这是一个通过npx
执行的 Node.js 包。 - 配置
config.json
:这里,Copycommand
是npx
,args
包含 Playwright MCP 包名称和版本。 - 重启网关:保存
config.json
并重启 MCP 网关。
启动后,您应该在控制台日志和客户端中看到名为playwright/...
(例如playwright/browse
)的工具。
SSE 示例:ENScan_GO(本地启动)
假设您想要集成 ENScan_GO,这是一个可以使用./enscan --mcp
启动并在http://localhost:8080
提供 SSE 服务的 Go 程序。
- 获取可执行文件:下载 ENScan_GO 可执行文件(例如,
enscan-v1.2.1-windows-amd64.exe
)并将其放在可访问的位置(例如,servers/
目录或系统 PATH)。 - 配置
config.json
:在这里,我们将Copytype
指定为sse
,提供它监听的url
,并使用command
和args
来告诉网关如何启动这个本地 SSE 服务器。 - 重启网关:保存
config.json
并重启 MCP 网关。
网关将首先启动 ENScan_GO 进程,然后连接到http://127.0.0.1:8080/sse
。启动后,您应该看到名为enscan/...
的工具。
This server cannot be installed
hybrid server
The server is able to function both locally and remotely, depending on the configuration or use case.
MCP网关
Related MCP Servers
- GoApache 2.0
- Python
- Python
- MIT License