标签 NodeJS 下的文章

起因

今天上午刷到了 One MCP 发布新功能 - 用 Skill 替代 MCP,省下 80% 的 Context 开销 ,奈何该工具需要 docker,而我又没有 docker,遂造轮之。

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

技术细节

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

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

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

  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 工具中进行测试:

优点

  • 不需要安装 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 协议发布。源码地址为:GitHub - magic-cucumber/mcp-gateway: an gateway to manage tools, keeping context clean and focused.

写在最后

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


📌 转载信息
原作者:
kagg886
转载时间:
2026/1/14 10:44:16

wispbyte 的网址:https://wispbyte.com/
有佬友发了在 wispbyte 跑 sing-box 的方法,因为其实它是一个容器,资源非常有限。
跑多了必然被 oom 杀掉。那提供一个直接 js 的方法建 vless 和 trojan,这样资源能得到有效控制。而且代码混淆,不容易被封杀。

出一篇手把手教程:

wispbyte.com , 是欧洲的一个厂家
它可以免费建立一个 server,准确的来说是一个容器,并且暴露一个端口出来

那先 Create Server,Server Name 和 Server Description 就都写 god01 好了

Server Type 当然选 Free Plan 的,运行环境就选 NodeJS

选完就按最下面的创建即可。

建好了那就去到 server manage 管理界面,下面有个 Startup:

分析红框中那句启动命令,意思很简单,如果配了 git,就去拉代码,如果有存在 npm 的 package.json,就先 npm install 安装,最后,运行主程序 index.js

下面选项是 Docker Image,本来以为是可以随便引用别处的镜像,结果是不能,只能选固定的,那就选不太激进的 nodejs_22 ,保存好

然后就什么都不用动了

然后去到左边的 Files 选项,缺省路径会是 /home/container/

上面图是已经装好运行的,如果是新服务器,是空无一物,没有任何文件

我们只需要准备 5 个文件和一个域名:

域名去免费搞一个,然后证书用大善人的let's encrypt搞定

tls.crt 证书文件,用let’s encrypt申请

tls.key 密钥文件,用let’s encrypt申请

index.html 用来装饰的环保单页面,如果不加,就会显示 hello world,太假了,可以让 gemini 给你生成一个,代码如下,注意改名 index.html:

index.txt

package.json 文件,index.js 运行时需要依赖的安装包文件,安装了 2 个包,axios 和 ws,注意改名 package.txt

package.txt (291 Bytes)

index.js 主文件,所有东西都在这里面,注意改名 index.js,上传的时候不知道为啥变成 indexjsp.txt 了

indexjsp..txt

这样就齐活了,index.js 需要修改的地方

const DOMAIN = process.env.DOMAIN || '1234.abc.com';       // 填写域名 const SUB_PATH = process.env.SUB_PATH || 'sub';            // 获取节点的订阅路径 const PORT = process.env.PORT || 7860;                     // 端口 
  • 域名我们要填写自己的域名

  • 路径要换掉,缺省是 sub,也就是订阅地址是 https://xxx.aaa.com/sub , 最好换成自己独特的地址

  • 端口也选这个服务器给你开的端口,我的是 10407, 看下图

然后改好了,别急着贴进去

打开: https://obfuscator.io/legacy-playground

贴进去代码,混淆一下,弄成谁也认不得的模样,然后 Copy,再贴进去

最后运行

看到 Online 就好了

那域名解析到这个 IP,打开 https 看看:

那再打开 https://www.bbb.com/sub , 如果改了 sub,那就是设置的别的路径,会显示一堆 base64 加密的字符串

从 v2rayN 导入,有两个代理,一个是 vless,一个是 trojan,就可以用了

关键是这么做的原理,就是用 index.js 完整实现了 vless 和 trojan 的功能,加了证书,并且做了混淆和伪装

这样很自然,比在容器里直接 sing-box 安全占用资源少,不容易被扫描到

当然,这个网站的速度不太行,所以只是一个玩具,没有套大善人 Cloudflare 的 CDN

自己用的是 huggingface.co + CF worker,速度还是可以的。

代码放在: GitHub - zhangrr/js-server: nodejs server

大家自行取用吧

也放到博客了:wispbyte.com 薅羊毛记 | 八戒的技术博客


📌 转载信息
原作者:
defunct9
转载时间:
2026/1/4 12:14:47