• Joined on 2026-07-21

@bpos/mcp-bridge (1.0.0)

Published 2026-09-15 01:04:02 +08:00 by ChaiHao

Installation

@bpos:registry=https://gitea.akhr-ai.com/api/packages/ChaiHao/npm/
npm install @bpos/mcp-bridge@1.0.0
"@bpos/mcp-bridge": "1.0.0"

About this package

stdio ⇄ HTTP 的薄桥 —— 只会起本地进程的 MCP host 用它连 BPOS 的 MCP 面。纯转发,不含任何业务逻辑。

@bpos/mcp-bridge —— stdio ⇄ HTTP 的薄桥

只会起本地进程的 MCP host 用它连 BPOS 的 MCP 面。(系统设计 §10.8 最后一条)

多数 host 直接配「一个 URL + 一枚 Bearer」就能连,用不着这个包。有的 host 只会起一个 本地 stdio 进程——给它这一条命令:

BPOS_MCP_TOKEN=<接入令牌> npx @bpos/mcp-bridge --url https://<系统基址>/mcp/v1/desk

地址在「系统 › MCP 服务」的服务卡上复制;令牌由管理者造好当面交给你。

它做什么

host 那一侧是 stdio,系统那一侧是 Streamable HTTP,中间纯转发:

host ──stdio── 桥 ──HTTP(Bearer)── BPOS /mcp/v1/<服务>

连上来的那一刻现问一趟远端的 tools/list 与 resources/templates/list,逐件挂一个转发; serverInfo 与 instructions 也用远端那一份——桥是一根线,不是一台服务器,host 的界面上 摆的该是「bpos」。

它不做什么

  • 不含业务逻辑,也不引 @bpos/mcp-contract。工具表从远端现问,不从契约包里读: 桥装在别人的机器上、升级节奏与系统不同步,照包里那一份注册的话,系统加了一件工具而桥没升版, 那一件在 host 里就是「不存在」——而不存在与「调用被拒」完全不同:前者根本没人会去调它, 也没有任何东西说得出少了什么。
  • 不收 --token。命令行会被复制进聊天记录、贴进工单、截图发出去,进程表上也看得见它。 地址可以公开,令牌不行——所以它只走 BPOS_MCP_TOKEN。
  • 一个字都不写 stdout。那是协议本身的管子;报错走 stderr。
读的是 哪儿来
--url <地址> 或 BPOS_MCP_URL 服务卡上「连接地址」那一格(命令行压过环境变量)
BPOS_MCP_TOKEN 管理者造好当面交给你的明文

两样缺哪一样都逐条报并说清怎么给,然后退 1。

包里发的是 TS 源

与另外两个包同一条理由(见 contract/README.md),加一条自己的:bin/mcp-bridge.mjs 是一行 JS,把 src/bridge.ts import 进来,由 Node 24 的类型擦除直接跑。所以 src/ 里 不许出现不可擦除的语法——参数属性、enum、namespace。tsc --noEmit 与 tsx 跑的用例 对这几样一律全绿,而 host 那一侧 npx 起它时 Node 当场 ERR_UNSUPPORTED_TYPESCRIPT_SYNTAX, 症状是「桥起不来」,离原因很远。tests/bridge.test.ts 最后一条真的起一趟那个入口,就为了钉住它。

跑

npm install
npm run typecheck && npm test

用例里有一趟真的:起一台 node:http 的假「系统」,让桥连上去,再让一个 Client 从桥的 stdio 那一侧进来,工具表、一次调用、一份资源各走一遍,并核每一条请求都带上了令牌。

Dependencies

Dependencies

ID Version
@modelcontextprotocol/client 2.0.0
@modelcontextprotocol/server 2.0.0

Development Dependencies

ID Version
@modelcontextprotocol/node 2.0.0
@types/node ^24.0.0
tsx ^4.19.0
typescript ^5.6.0
zod 4.4.3
Details
npm
2026-09-15 01:04:02 +08:00
1
UNLICENSED
latest
6.4 KiB
Assets (1)
Versions (1) View all
1.0.0 2026-09-15