8000 【开源推荐/开源自荐】mcp-gateway —— 隐藏mcp上下文以避免不必要的tokens开销 · Issue #69 · eryajf/learning-weekly · GitHub
[go: up one dir, main page]

Skip to content

【开源推荐/开源自荐】mcp-gateway —— 隐藏mcp上下文以避免不必要的tokens开销 #69

@magic-cucumber

Description

@magic-cucumber
  • 语言类别:TypeScript
  • 项目标题:mcp-gateway —— 隐藏mcp上下文以避免不必要的tokens开销
  • 项目描述:

起因

今天上午刷到了 https://linux.do/t/topic/1409197 ,奈何该工具需要docker,而我又没有docker,遂造轮之。

叠甲:我是不会告诉你们我今天晚上搜gateway在npm上发现了很多同类工具。所以请不要说我重复造轮子,我只是看了帖子上头了手搓了几个小时搓出来的

技术细节

该mcp服务提供了3个工具以隐藏mcp服务。

  1. 获取全部的MCP服务以及其下属的工具摘要。

    放心,它只会返回MCP服务的名字以及 7C6A 属的全部工具名称以及经过处理的描述。
    不会占用太多上下文。

  2. 批量获取MCP服务及其下属工具
    该工具会返回要查询的全部MCP服务以及其下属工具的名称,描述以及调用参数约定

  3. 通过MCP服务名称和工具名称调用具体工具

安装

首先,确保您使用 NodeJS v16 及以上版本。

npm install -g @kagg886/mcp-gateway@latest

其次,打开您的AI工具,编辑MCP文件,进行配置:

{
  "mcpServers": {
    "mcp-gateway": {
      "isActive": true,
      "name": "mcp-gateway",
      "type": "stdio",
      "command": "mcp-gateway",
      "args": [
        "-f",
        "/path/to/your/json"
      ],
      "installSource": "unknown"
    }
  }
}

/path/to/your/json的配置如下:

{
  "mcpServers": {
    "chrome-devtools": {
      "command": "npx",
      "args": [
        "-y",
        "chrome-devtools-mcp@latest"
      ]
    },
    "mcp-server-time": {
      "command": "uvx",
      "args": [
        "mcp-server-time",
        "--local-timezone=Asia/Shanghai"
      ],
      "alwaysAllow": [
        "get_current_time",
        "convert_time"
      ]
    },
    "context7": {
      "command": "npx",
      "args": [
        "-y",
        "@upstash/context7-mcp@latest"
      ],
      "alwaysAllow": [
        "resolve-library-id",
        "query-docs"
      ],
      "disabled": true
    }
  }
}

最后,在AI工具中进行测试:

Image

优点

  • 不需要安装docker(除了我之外还有谁没安装docker呢)
  • 配置超级简单,只需要传递配置路径或配置字符串(使用 -s 参数)
  • web-ui,私认为这种工具不需要可视化配置,完全可以通过参数来隔离实例。

缺陷

虽然我在几个小时内匆忙地写完了这个工具,但是综合看来,还是有很多功能没有做,例如:

  • 现版本只能代理基于STDIO的MCP服务

  • 将部分MCP调用错误标记为error,以供Agent识别

  • 尽管我在MCP服务的description中给Agent添加了足够的提示。
    但是在能力有限的模型中,可能不会调用代理工具查询可用的Agent。
    此时需要您手动在聊天框或prompt中显式告知AI可用工具

  • 尽管配置了并发启动,但启动速度很明显受木桶效应影响。

开发计划

大概有人用我才会更新,否则我会基于我自己的需求迭代这个工具(x

未来可能会增加以下功能:

  1. 异步启动(而不是在程序启动阶段就初始化所有服务)
  2. 数据缓存(缓存调用规范以避免频繁启动)
  3. 自动清理(长时间不调用的mcp会自动关闭)功能。
  4. 代理基于SSE的MCP服务

我将永远不会制作以下功能:

  1. 可视化web页面

注意事项

  • 最好不要代理影响LLM行为的MCP服务,如sequential-thinking

  • 最佳实践是代理专业性较强,或者不常使用的MCP服务,如chrome-devtoolsgithub

开源地址

mcp-gateway 使用 MIT 协议发布。源码地址为:https://github.com/magic-cucumber/mcp-gateway/

写在最后

如果您喜欢这个重复的轮子,以及有建议,还请留言/收藏/标星,或者在原仓库提issue(仅接受英文issue,不过在这里反馈的话可以写中文)!

  • 截图: xxxxxxxxx

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      0