mcp-facade
mcp-facade
Eine generische MCP-Fassade: Ein stdio-Prozess läuft vor einem vorgelagerten MCP-Server und legt nur eine konfigurierte Teilmenge seiner Tools offen – mit kompaktierten Schemas – sowie drei Meta-Tools (discover, describe, call), die den Rest des Katalogs bei Bedarf erreichbar halten.
Warum
Jedes Tool, das ein MCP-Server bereitstellt, wird bei jeder Anfrage als JSON-Schema in den Kontext des Modells gespielt. Ein üppiger Server mit 40 Tools kann pro Sitzung Zehntausende von Tokens kosten, bevor überhaupt etwas passiert – der größte Teil davon für Tools, die du nie aufrufst.
Die Fassade dreht die Rechnung um: Volle Schema-Tokens zahlst du nur für die Tools, die du tatsächlich nutzt (in used aufgeführt), kompaktiert auf das Wesentliche. Alles andere bleibt über die Meta-Tools erreichbar, die zusammen nur drei kleine Schemas benötigen.
Related MCP server: @zhangzwd/mcp-gateway
Was die Fassade tut
Läuft als stdio-MCP-Server:
bun run facade.ts --server <name>. Ein Prozess für jeden vorgelagerten Server.Liest
facade.servers.json(nebenfacade.ts) und wählt den Eintrag<name>aus.Beim ersten
tools/listwird der Katalog des Upstream abgerufen und auf der Platte gecacht:~/.omp/agent/mcp-facade/catalogs/<name>.json, TTL: 7 Tage. Die Verbindung zum Upstream ist lazy aufgebaut – erst bei der tatsächlichen Nutzung wird eine Verbindung hergestellt.Stellt jedes in
usedgenannte Tool mit einem kompaktierten Schema bereit:Jede
description-Zeichenfolge wir mit einzelnen Sätzen gekürzt, maximal 140 Zeichen;$comment,examplesunddefaultwerden rekursiv verworfen;Struktur (type, properties, required, enums) bleibt unverändert;
Tool-Namen in Kleinbuchstaben; Suche unabhängig von Groß-/Kleinschreibung.
Hängt immer die drei Meta-Werkzeuge (siehe unten) an.
Falls der Katalog beim
tools/listnicht abgefragt werden kann, liefert die Fassade nur die Meta-Werkzeuge aus und protokolliert die Ursache auf stderr.Leitet Aufrufe an den Upstream weiter. Bei HTTP-Upstreams mit einem
credentialIdführt ein 401/unauthorized/expired-token Fehler zu einem erzwungenen Token-Refresh und einem weiteren Versuch.
Die Meta-Werkzeuge
Tool | Zweck |
| Sucht im vollständigen Upstream-Katalog nach Keywords (Name + Beschreibung, Teilstring, max. 10 Treffer). Gibt Zeilen der Form |
| Gibt das vollständige original Schema und die Dokumentation für ein Tool in Kleinbuchstaben an. Vor unbekannten Tools verwenden. |
| Ruft jedes Upstream-Tool namentlich mit einem |
Typischer Ablauf des Agenten: discover "werklog" → describe addworklog → call { tool: "addworklog", args: { ... } } (Quellcode-Original beibehalten).
Voraussetzungen
Bun (die Fassade führt TypeScript direkt aus).
Für OAuth-geschützte HTTP-Upstreams:
OMPCLI bei~/.bun/bin/omp, besagte Anmeldeinformationen bereits autorisiert. Die Fassade holt Tokens überomp token <credentialId>undomp token --force-refresh <credentialId>beim Retry; Secrets nie mit speichern.Für stdio-Upstreams mit Umgebungsvariablen (API-Keys, Tokens): bestehende Claude-Host-Konfiguration unter
~/.claude.jsonmit dem Env-Blockenvdes Servers (sieheenvFromunten).
Install
bun install
cp facade.servers.example.json facade.servers.json # then editfacade.servers.json wird nicht in die Versionskontrolle (.gitignore) aufgenommen – sie darf lokale Pfade enthalten.
Konfiguration
facade.servers.json ordnet einem Servernamen den Upstream und die Liste der verwendeten Tools-Tools zu:
{
"<name>": {
"upstream": {
// HTTP upstream (Streamable HTTP transport):
"url": "https://mcp.example.com/v1/mcp",
"credentialId": "mcp_oauth:profile:default:https://mcp.example.com/v1/mcp" // optional
// …or stdio upstream:
// "command": "/usr/local/bin/npx",
// "args": ["-y", "@example/mcp-server"],
// "envFrom": "claude:<server-name>", // optional: pull env from ~/.claude.json mcpServers.<server-name>.env
// "env": { "EXTRA": "value" } // optional: merged on top
},
"used": ["tool_one", "tool_two"] // exposed directly; everything else via meta-tools
}
}Hinweise:
used-Einträge werden fallweise zugeordnet und in Kleinbuchstaben gespeichert.envFromunterstützt aktuell nur das Präfixclaude:<name>.Eine leere
used-Liste ist gültig: Die Fassade offen dann nur Meta-Werkzeuge.
Beim Host registrieren
Weise die Host-MCP-Konfiguration dem Innenbereit der Fassade zu – ein Eintrag pro vorgelagerten Server:
{
"mcpServers": {
"acme": {
"command": "/path/to/bun",
"args": ["run", "/path/to/mcp-facade/facade.ts", "--server", "acme-http"]
}
}
}⚠️ stdout ist das Protokoll
Der stdio-Transport besitzt stdout. Schreiben Sie niemals Protokolle, Diagnostic- oder Debug-Daten dazu – was etwas auf stdout landet, zerstört den JSON-RPC-Stream und blockiert den Host (stdout). Die Fassade protokolliert nur auf stderr (console.error); in jedem Fork so beibehalten.
Einschränkungen
Feste Pfade: Katalog-Cache unter
~/.omp/agent/mcp-facade/catalogs/, OMP-BINARY in~/.bun/bin/omp;envFromnur für~/.claude.json.Der Katalog wird mit einzelnem
listTools-Aufruf geladen – keine Paginierung, keine Bearbeitung vontools/list_changed. Die Fassade neu starten oder die 7-Tage-TTL abwarten, um Upstream-Änderungen zu aktualisieren.discoverist ein einfacher Teilstring-Math, begrenzt auf 10 Treffer.Bei Auth-Fehlern ein einziger
Retry; andere Upstream-Fehler werden unverändert weitergegeben.Keine Unterstützung für
upstream-Aufforderung, Ressourcen oder Abtastung – nur Tools.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server for progressive tool usage at any scale (see https://klavis.ai)
Remote MCP server exposing SMI Aware tools, resources, and skills over Streamable HTTP.
Governed MCP gateway: one endpoint for your tools, with credential custody and audit log.
Search, inspect and invoke every public tool on Invokera through one MCP connection.
Related MCP Servers
- AlicenseAqualityDmaintenanceA stdio MCP proxy that connects to one or more upstream MCP servers and exposes their tools, resources, and prompts through a single endpoint with a configurable middleware pipeline.14163MIT
- AlicenseNot gradedqualityBmaintenanceA lightweight MCP gateway that aggregates multiple MCP services into a unified stdio interface, automatically prefixing tool names with the service name to avoid conflicts.18MIT
- AlicenseNot gradedqualityBmaintenanceServes any OpenAPI 3.x/Swagger 2.x API as a local MCP server over stdio, converting every operation into a tool that proxies requests to the upstream API with configurable headers and fixed parameters.11MIT
- AlicenseNot gradedqualityBmaintenanceA deterministic MCP tool-list relay that lets operators filter tools by include/exclude rules and exposes a filtered stdio MCP server to local clients.18MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Jardelvorpagel/mcp-facade'
If you have feedback or need assistance with the MCP directory API, please join our Discord server