LuminariSoftwares/tool-guardian
An MCP router plus a native DSH bundle that hides dozens of MCP tool schemas behind four small generic tools (list, search, describe, call), fetching a schema only when the model asks — measured at 934 tokens instead of 20,005 for seven MCP servers. An output ladder also keeps large bash/grep/web_fetch results small, archiving the full original behind one call.
Tool Guardian sits in front of your other MCP servers and exposes four small generic tools — list, search, describe and call — instead of dozens of specific ones, discovering the rest on demand so tool definitions stop eating the context window. The README measures seven MCP servers on a 32K model at 20,005 tokens of schemas without it (61% of the window) versus 934 tokens (3%) with it, and a 50 KB shell result at 51,165 characters landed in the conversation versus 7,833 with the full original archived behind one call. Inside DSH it also registers the router tools natively so backend schemas never enter a request unless their group is activated (activeGroups, or the activate_group tool which quotes the token cost first), runs its output ladder on every tool result (bash, grep, web_fetch, all of them), and notices shell calls doing a router tool's job and logs, nudges or denies them (bypass.mode). It also surfaces a failing backend as status UNKNOWN with the real error instead of an empty tool list. In-session commands include /toolguardian (selftest), /toolguardian bypass (bypass summary) and /toolguardian restore.
Install
dsh plugin --profile web add dsh-tool-guardianCopied verbatim from the README's install steps, which add both companion bundles to the profile dsh web uses (dsh-tool-guardian and dsh-context-guardian); the README then has you cd into the plugin folder and run npm run setup to import existing MCP servers into ~/.tool-guardian/mcp.json. The native-DSH-bundle table documents the same command with <name> as the profile placeholder.
Compatibility
Ships two ways from one repo: a Python MCP server (pip install tool-guardian, for any MCP client) and a native DSH bundle. Inside DSH the bundle registers the router tools natively and runs its output ladder on every tool's result through tools/post-execute, so the README says not to mount dsh-trim beside it. It is the companion to LuminariSoftwares/context-guardian — Tool Guardian keeps tools from filling the window, Context Guardian compacts the conversation before the window fills. Configuration is the tool-guardian patch row or the DSH settings namespace, with TOOL_GUARDIAN_* env vars overriding both; Python is found via $TOOL_GUARDIAN_PYTHON, a .venv, then python/python3 on PATH.
Details
- Repo: LuminariSoftwares/tool-guardian
- Category: Tools & Capabilities
- Stars: 1
- Version: GitHub repo LuminariSoftwares/tool-guardian; npm package dsh-tool-guardian at 0.6.0-beta.1 (registry check 2026-10-10; registry repository field resolves back to this repo). MIT license; the Python router needs Python 3.9+ with no third-party dependencies.
Alternatives
1624318455/dsh-plugin-tavily · 6Mikao9/dsh-wsl-workspace · 863683348/dsh-plugin-academic-writing