Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Beschreibung vom Entwickler (englisches Original)
Local MCP proxy: collapses N servers' tools into 4 meta-tools and compresses large tool outputs.
Diese drei werden nie zu einer Punktzahl zusammengefasst: Meinungen, Messungen und Beliebtheit sind verschiedene Dinge.
Für diesen Server haben wir noch keine Zusammenfassung in einfacher Sprache geschrieben. Unten stehen die Fakten, die wir aus der Registry gelesen haben.
Wähle die KI-App, die du nutzt, und kopiere die Einstellungen.
Du brauchst
Welche App nutzt du?
Wähle oben deine App. Wir merken sie uns, damit der Button beim nächsten Mal „In … installieren“ anzeigt.
Öffne Claude Desktop → Settings → Developer → Edit Config und füge dies in claude_desktop_config.json ein
{
"mcpServers": {
"context-firewall": {
"command": "npx",
"args": [
"-y",
"context-firewall",
"--config",
"your-value"
]
}
}
}Führe das in deinem Terminal aus
claude mcp add context-firewall -- npx -y context-firewall --config your-valueDieser Server braucht Werte in seiner Befehlszeile, also kopier die Einstellungen und trag sie ein.
In .cursor/mcp.json in deinem Projekt oder in ~/.cursor/mcp.json einfügen
{
"mcpServers": {
"context-firewall": {
"command": "npx",
"args": [
"-y",
"context-firewall",
"--config",
"your-value"
]
}
}
}Dein Browser fragt, ob er die App öffnen darf, dann zeigt die App die Einstellungen und bittet dich um Bestätigung. Schlüsselwerte bleiben leer, damit du sie selbst einträgst.
Dieser Server braucht Werte in seiner Befehlszeile, also kopier die Einstellungen und trag sie ein.
In .vscode/mcp.json in deinem Projekt einfügen
{
"servers": {
"context-firewall": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"context-firewall",
"--config",
"your-value"
]
}
}
}Dein Browser fragt, ob er die App öffnen darf, dann zeigt die App die Einstellungen und bittet dich um Bestätigung. Schlüsselwerte bleiben leer, damit du sie selbst einträgst.
Dieser Server läuft auf deinem Computer, und ChatGPT kann sich nur mit Servern im Internet verbinden. Wähle eine andere App.
Deine Auswahl bleibt in einem Cookie auf diesem Gerät; kein Konto nötig.
Diese Einstellungen werden aus dem Registry-Eintrag des Entwicklers erzeugt. Wenn in der README etwas anderes steht, folge der README.
Läuft auf deinem Computer; die Tool-Liste erscheint nach der Installation in deiner KI-App.
Wir prüfen Informationen, die jeder sehen kann; den Code haben wir nicht gelesen. Checks, die nicht zutreffen, werden nicht mitgezählt. · Geprüft am 7. Nov. 2026
Der Registry-Name wurde mit dem GitHub-Konto Alepha188838884 bestätigt, dem das Repo gehört
Dieses Repo haben wir noch nicht von GitHub gelesen
Dieses Repo haben wir noch nicht von GitHub gelesen
Dieser Server läuft auf deinem Computer; es gibt keinen Endpunkt im Internet
Läuft auf deinem Computer und nutzt stattdessen lokale Einstellungen
Läuft auf deinem Computer; Tool-Listen können wir nur von Endpunkten im Internet lesen
Verglichen mit allen aktiven Servern dieser Kategorie in der Registry. Sterne zählen nur, wenn dem Herausgeber das Repo gehört.
Er hat 1 von 1 zutreffenden Basischecks bestanden. Den Code haben wir nicht gelesen. Bevor du einen Schlüssel oder Token hinzufügst, sieh nach, welche Zugriffe der Server verlangt, und nutze einen Schlüssel, der nur die Berechtigungen hat, die du brauchst.
Die Registry nennt keinen erforderlichen Schlüssel, manche Server bitten dich aber bei der ersten Nutzung, dich anzumelden.
Er läuft auf deinem Computer. Deine KI-App startet ihn bei Bedarf, und die Daten laufen nicht über die Server des Entwicklers (außer der Server ruft selbst einen Onlinedienst auf).
Das GitHub-Repo wurde zuletzt – geändert, und die neueste Version (0.1.1) kam vor 3 Monaten in die Registry.
Apps, die MCP unterstützen, etwa Claude Desktop, Claude Code, Cursor und VS Code. Außerdem brauchst du Node.js auf deinem Computer.
In derselben Kategorie: Spec Driven Development, Remote Desktop Commander, OpenTakeoff
Server derselben Kategorie von anderen Entwicklern, sortiert nach Sternen.
So liest du eine Karte:★ GitHub-SterneiDrei Säulen: Bewertungen · Checks · NutzungiAktualisiert = neueste Version in der Registry veröffentlichti
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Construction takeoff for AI agents: load plans, set scale, measure, count, export with provenance.
Unverändert aus dem Repo des Entwicklers übernommen. PopNx MCP hat den Inhalt weder geprüft noch empfiehlt es ihn. HTML, Bilder und Skripte wurden entfernt. Links führen von dieser Website weg.
中文文档
Shrink large MCP tool outputs by 60–95% before they reach your model's context window — and collapse 50+ tool definitions into 4. Real HTML/JSON, measured — see benchmarks. Works with any MCP client, any model. Anything still over your configured token budget after compression is hard-truncated to that budget, with the full original always retrievable via read_more.
*The session report printed on shutdown — this one from a real 3-call session (two large file reads, one echo). Every number measured, none simulated.*
Context Firewall is a local MCP proxy that sits between your AI agent (Claude Code, Claude Desktop, Cursor, Cline, ...) and every downstream MCP server you've configured. Large tool outputs (raw HTML, base64 blobs, giant JSON) are compressed before they ever reach the model's context window, and the client sees exactly 4 tools no matter how many the downstream servers actually have.
| Metric | Result |
|---|---|
| Output compression | 70–94% on real HTML pages, ~97% on large structured JSON (smart stages alone, before budget truncation) — e.g. a live Wikipedia page via the fetch tool: 232,391 → 6,907 chars (97.0%, measured); a GitHub issues JSON payload via the jsonSummary stage: 186,810 → 3,480 chars (98.1%, measured) |
| Tool collapse | 122 → 4 exposed meta-tools (5 real downstream servers incl. official GitHub github-mcp-server, 85 tools) |
| Tool-definition savings | ~28,600 tokens *(estimated, chars ÷ 3.5)* — 102,158 raw definition chars vs. 2,146 exposed |
All figures measured against real downstream MCP servers, not synthetic data — full methodology and tables in docs/BENCHMARKS.md.
list_tool_categories, search_tools, invoke_tool, read_more) and only pays the token cost of a tool's full schema when it actually searches for it.read_more(handle, offset, length).npx context-firewall --config context-firewall.json
Minimal context-firewall.json (the downstreams block mirrors the mcpServers format you already know):
{
"downstreams": { "filesystem": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/project"] }, "github": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-github"], "env": { "GITHUB_PERSONAL_ACCESS_TOKEN": "${GITHUB_TOKEN}" } } } }
(${GITHUB_TOKEN} above is just this example's environment variable *name* — pick whatever's already set in your shell; it gets expanded into GITHUB_PERSONAL_ACCESS_TOKEN, the env var name the downstream server itself actually reads.)
Which GitHub server? Two options, different tool counts:
npx -y line, zero extra setup. Archived/no longer maintained upstream, but still functional.GITHUB_TOOLSETS=all). Ships as a Go binary or Docker image, not an npm package: "github": {
"command": "docker", "args": ["run", "-i", "--rm", "-e", "GITHUB_PERSONAL_ACCESS_TOKEN", "ghcr.io/github/github-mcp-server"], "env": { "GITHUB_PERSONAL_ACCESS_TOKEN": "${GITHUB_TOKEN}" } }
or, running a locally-built/downloaded binary directly: "command": "/path/to/github-mcp-server", "args": ["stdio"] (same env block; add GITHUB_TOOLSETS to scope which of the 85 tools are exposed).
Per-tool allow/deny policy. Add allowTools/denyTools (array of exact names or * globs) to any downstream entry to restrict which of its tools can be invoked:
"github": {
"command": "npx", "args": ["-y", "@modelcontextprotocol/server-github"], "denyTools": ["delete_*"] }
Deny always wins over allow. When allowTools is set, only matching tools are permitted; everything else on that server is blocked. An empty allowTools: [] is treated the same as omitting it (allow everything), not "deny everything". Blocked tools are hidden from search_tools results, and invoke_tool rejects them before dispatching to the downstream server. Tool counts in list_tool_categories and in the meta-tool descriptions are unfiltered totals — the policy is only enforced at search_tools/invoke_tool time.
Set Context Firewall as your only MCP server — move every downstream server you currently configure directly (filesystem, github, everything, ...) into context-firewall.json's downstreams block instead. Your agent then sees 4 tools instead of the sum of every downstream server's tool count; pointing the client at Context Firewall *alongside* your existing servers doesn't give you the tool-collapse or compression benefit.
Each client below takes the same server entry:
{
"mcpServers": { "context-firewall": { "command": "npx", "args": ["-y", "context-firewall", "--config", "/absolute/path/to/context-firewall.json"] } } }
Project-scoped .mcp.json in your repo root (shown above), or via the CLI:
claude mcp add --transport stdio context-firewall -- npx -y context-firewall --config /absolute/path/to/context-firewall.json
claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/claude_desktop_config.json; Windows: %APPDATA%\Claude\claude_desktop_config.json) — same mcpServers block as above.
.cursor/mcp.json (project-scoped) or ~/.cursor/mcp.json (global) — same mcpServers block as above.
cline_mcp_settings.json (VS Code extension storage; macOS: ~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json) — same mcpServers block as above.
| Client | Status |
|---|---|
| Claude Code | tested in real agent sessions — autonomous list → search → invoke → read_more workflow verified end-to-end |
| Claude Desktop | protocol-verified* |
| Cursor | config format documented, community testing welcome |
| Cline | config format documented, community testing welcome |
\* Verified via MCP protocol integration tests (236 automated tests, including full stdio protocol round-trips against real downstream servers, run in CI on every push). Real-client reports welcome.
downstreamsEach entry is either a stdio server (same shape as mcpServers) or a Streamable HTTP server:
{
"downstreams": { "local-tool": { "command": "npx", "args": ["-y", "some-mcp-server"], "env": { "TOKEN": "${TOKEN}" } }, "remote-tool": { "url": "https://mcp.example.com/mcp", "transport": "streamable-http" } } }
${VAR_NAME} in any string value is expanded from the environment; a missing variable fails config load with a readable error.
compressionPolicy resolution order is default < perServer < perTool (later overrides earlier, field by field):
{
"compression": { "default": { "maxOutputTokens": 2000, "htmlToMarkdown": true, "stripBase64": true, "jsonSummary": true, "llmSummary": false, "bypass": false }, "perServer": { "github": { "maxOutputTokens": 4000 } }, "perTool": { "filesystem/read_file": { "maxOutputTokens": 8000 } } } }
| Field | Type | Default | Meaning |
|---|---|---|---|
maxOutputTokens | number | 2000 | Soft budget (chars ≈ tokens × 3.5) a compressed output is truncated to as a last resort. |
htmlToMarkdown | boolean | true | Convert detected HTML to Markdown, extracting the main content region (nav/header/footer chrome stripped) when one is recognizable. |
stripBase64 | boolean | true | Replace base64 blobs (data URIs and bare blocks) with a read_more handle. |
jsonSummary | boolean | true | Collapse homogeneous JSON arrays and trim long string fields, keeping valid JSON. |
llmSummary | boolean | false | Semantically summarize over-budget outputs with an LLM of your choice. Requires the top-level llm block - see LLM summarization (opt-in). |
bypass | boolean | false | Skip the whole pipeline for this server/tool - output passes through untouched. |
report{
"report": { "enabled": true, "markdownPath": "./context-firewall-report.md" } }
| Field | Type | Default | Meaning |
|---|---|---|---|
enabled | boolean | true | Print the session report to stderr on shutdown. |
markdownPath | string | *(none)* | If set, also write the report as a Markdown file at this path. |
callToolTimeoutMsTop-level (not nested under compression). Per-invoke_tool timeout in milliseconds passed to the downstream MCP SDK client; a downstream that hangs without responding causes invoke_tool to return an isError result once this elapses, instead of blocking. Defaults to the SDK's own default (60,000ms) when unset.
{ "callToolTimeoutMs": 30000 }
The client calls list_tool_categories() to see what's connected and what it's roughly capable of, search_tools(query) to pull the full input schema for candidate tools, invoke_tool(server, tool, args) to actually run one (compressed on the way back), and read_more(handle, offset, length) to page through anything that got compressed. Compression, when it runs, always applies in the same order: strip base64 → main-content extraction + HTML to Markdown → JSON structure summary → truncate to budget (if the opt-in LLM summarization stage below is enabled, it runs right before truncation). Content extraction is conservative by design: it only strips chrome when a semantic content region ( / ) is recognizable or the removal clearly isn't the page's actual content, and falls back to whole
Nur der Anfang wird gezeigt; den Rest findest du im Repo