工具过滤代理

mcp-toolgate 是一个轻量级代理,用于过滤基于 stdio 的 MCP 服务器注册的工具,仅暴露指定工具给客户端,适用于需要控制 AI 代理工具访问的场景。

  • by nokamoto
  • Go
  • 本地部署
  • 更新于
在 GitHub 查看 nokamoto/mcp-toolgate

使用说明

“mcp-toolgate”可以翻译为“MCP工具网关”或“MCP工具入口”,具体取决于上下文和该术语在特定领域中的常用表达。在这里,“MCP”可能代表某个特定的系统、平台或项目名称,“toolgate”或“工具入口”则指的是与该系统、平台或项目相关的工具或接口的访问点

一个基于stdio的MCP服务器的轻量级代理,用于过滤并暴露给客户端的已注册工具。

动机

当使用配备AI代理的MCP服务器时,注册过多工具可能会导致不可预测的行为——
代理可能会感到困惑或无法使用预期的工具。

为了解决这一问题, mcp-toolgate 提供了一种简单的方法来限制暴露给代理的工具。
通过环境变量允许使用工具,有助于创建一个更受控且可预测的工具环境。

示例配置

你可以参考 .vscode/mcp.json(可翻译为:“VSCode中的MCP配置文件”) 文件示例设置。
这个配置展示了如何通过(某种方式)运行一个MCP服务器 mcp-toolgate 控制哪些工具暴露给客户端。

{
    "servers": {
        "github": {
            "command": "bash",
            "args": [
                "-lc",
                "docker run -i --rm -e GITHUB_PERSONAL_ACCESS_TOKEN ghcr.io/github/github-mcp-server | go run ./cmd/mcp-toolgate"
            ],
            "env": {
                "ALLOWED_TOOL_NAMES": "add_issue_comment",
                "DEBUG": "",
                "GITHUB_PERSONAL_ACCESS_TOKEN": "${env:GITHUB_TOKEN}",
            }
        }
    }
}

行为

当如上所示使用时, mcp-toolgate 它作为一个代理,拦截MCP服务器的工具注册,并根据环境变量对其进行过滤。
它从标准输入(stdin)读取数据并写入标准输出(stdout),因此可以轻松地插入到现有的数据处理流程中(例如。, mcp-server | mcp-toolgate)而无需修改原始的MCP服务器。

环境变量

  • ALLOWED_TOOL_NAMES允许使用的工具列表,以逗号分隔。仅这些工具将被注册并暴露给客户端。
  • DEBUG当设置此参数时(即使设置为空字符串),启用调试日志记录。对故障排除很有用。