📡 MCP Radar

3265807971-cloud/mcp-toolpacks

Group MCP tools by purpose, not by server — one switch per pack. Reference implementation + the seven design notes that only show up after you ship it.

⭐ 3 stars
⑂ 0 forks
TypeScript
momentum ▲ 30.0
created 2026-10-13
on radar since 2026-10-13
ai-agentscontext-windowllmllm-toolsmcpmodel-context-protocol
View on GitHub ↗

About mcp-toolpacks

你此刻只想问一个关于代码的问题。但客户端给你的开关只有一个:整台开,或者整台关。

工具定义(名字 + 描述 + 参数 schema)是每一轮请求都原样重发的。它们不是「用的时候再取」,是常驻在上下文里的。

------ 一个工具的定义 约 150–300 token 一个 46 个工具的服务器 约 7,000–14,000 token 你每天发 200 轮 那就是每天上百万 token

这就是全部的把戏:你按工具名引用,而不按服务器引用 —— 因为服务器那个分组,一开始就是错的。

于是「只开 issue、不开 PR」变成了一件能表达的事。而且同一个 github 上可以同时挂好几个包,互不打架。

完整格式见 SPEC.md,能跑的示例见 examples/packs.example.json。

真实情况是:服务器上的工具默认几乎全是开着的,真正的总闸是「这台服务器挂没挂上」。所以「把成员打开」只是把本来就开着的又打开了一遍,什么都没改变 —— 你打开「邮件包」,结果同事塞在同一台服务器上的那个小游戏也跟着来了,因为它俩本来就都是 enable: true。

第 2 条不能省。少了它,「开邮件包」会顺手把别的服务器也关了 —— 那不是用户按的那个键该干的事。

第 3 条有个必须知道的副作用:因为是按并集覆盖,所以被包盖住的服务器上,没被任何包点名的工具会被强制关掉。用户要是在别的设置页里手工开过某个工具,碰一下这个包就没了。

- 该开的没开 → 用户觉得「这功能怎么不好使」。 - 该关的没关 → 每一轮请求都在多花钱,而且没有任何一个界面会告诉他。

- 名字对不上 → 什么都不动(见第 3 条) - 服务器找不到 → 画在卡片上 - 工具没被任何包认领 → 有测试专门盯着

客户端的工具清单是个缓存 —— 是它上一次 tools/list 抄下来的,不是实时的。服务器上新加了工具,而客户端还没同步的时候:

- 包点名的工具名字,一个都对不上 - 第 1 条的算法只认名字 ⇒ 并集算出来是空的 - ⇒ 那台服务器上的工具全被关掉,连服务器一起被摘下来

用户看到的是「开关点了没反应」。实际发生的是那台服务器上的所有功能当场失灵,而且是在对话中途。

只拦开启方向。 关闭方向必须永远可用 —— 万一服务器以后真的永久删掉了某个工具,那是用户唯一的退路。

用户拨开关 → 先跟服务器同步一次工具清单 → 再复检 → 名字还是对不上 → 中止,并告诉他缺哪几个 —— 不是静默放过,也不是硬着头皮算

存一个布尔值,就是「开关说有、实际没有」这类账的源头 —— 而你通常要等到几个月后查账单才发现。

⚠️ 没有「部分开」这个状态。只要有一个成员没满足,就算关着。 好处同样是:不另存状态,就不会对不上账。

顺带一提,这个判据是按包的:同一个服务器上挂着两个包,两个各自都算「开着」,它们不争抢共用的那个工具。

所以必须把判据钉成测试,尤其是「并集」那条 —— 同时开两个包时谁也不能把谁挤掉。

test/resolve.test.ts 里那 22 条就是干这个的。每一条都以它防的那个 bug 命名,不是以它调用的那个函数命名。

分开写的话,中间会有一个「工具开了、但服务器还没挂上」的瞬间。用户不幸正好在那时候发消息,就会拿到一个说不清的结果。

所以 resolve() 不返回增量,它返回一整份新的 AppState。调用的那一边只负责落一次盘。

From the project README.

Maintaining this server?

Add the radar badge to your README — it shows your project was picked up by MCP Radar and links to this page:

[![On MCP Radar](https://mcp.liqiwa.com/badge.svg)](https://mcp.liqiwa.com/s/3265807971-cloud--mcp-toolpacks.html)

Related MCP servers

Vangardo/unity-mcp-efficient

Token-efficient facade and Codex skill for MCP for Unity: 96% smaller measured tool-schema surface, compact results, batching, and recovery.

⭐ 12Python
00200200/usagetrim

Keep the signal. Cut the noise. Local CLI + MCP — fold verbose tool output for Claude Code, Codex, Cursor & Desktop.

⭐ 11Python
wahyunuriman999/Muse-Skill-Hub

Open-source, LLM-agnostic capability runtime for AI agents — 97 skills as typed, permission-enforced MCP tools. Final certification: 23/23 gates PASS.

⭐ 7Python
PerryLink/jevcore

TypeSafe Jev for DeepSeek Harness, the Model Context Protocol, and plain Node: typed judgments instead of prose, offline by default.

⭐ 38TypeScript
LilithGames/a2wave

Turn the agent CLIs you already use into shared services your whole team can call. Natural-language-driven agent orchestration for Claude Code, Cursor Agent, and OpenAI Codex.

⭐ 18TypeScript
doeixd/foldkit-plus

A Schema-first agent layer for Foldkit: project an application's Model and Message union into one contract, then expose it through WebMCP, MCP, or in-app agents.

⭐ 16TypeScript

📬 Get the weekly radar in your inbox

The top new MCP servers of the week, every Monday. No spam, unsubscribe anytime.