Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Beschreibung vom Entwickler (englisches Original)
MCP server exposing Read, Write, Edit, Bash, Glob, Grep, and JS tools over stdio.
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.
Die .mcpb-Datei des Entwicklers herunterladen
Der Link führt zur Datei des Entwicklers selbst; wir hosten sie nicht und verpacken sie nicht neu. Öffne die Datei, dann installiert Claude Desktop sie.
Führe das in deinem Terminal aus
claude mcp add platter -- docker run -i --rm ghcr.io/hadriangateway/platter:2.0.3In .cursor/mcp.json in deinem Projekt oder in ~/.cursor/mcp.json einfügen
{
"mcpServers": {
"platter": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/hadriangateway/platter:2.0.3"
]
}
}
}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.
In .vscode/mcp.json in deinem Projekt einfügen
{
"servers": {
"platter": {
"type": "stdio",
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/hadriangateway/platter:2.0.3"
]
}
}
}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 hadriangateway 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 (2.0.3) kam vor 5 Monaten in die Registry.
Apps, die MCP unterstützen, etwa Claude Desktop, Claude Code, Cursor und VS Code. Außerdem brauchst du MCPB, Docker auf deinem Computer.
In derselben Kategorie: Spec Driven Development, Remote Desktop Commander, EmbeddedCI BenchPod
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.
Drive a BenchPod hardware-in-the-loop bench: power, flash, UART, I2C, CAN, analog and logic.
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.
*Your computer, served on a platter.*
MCP server that exposes Read, Write, Edit, Bash, Glob, Grep, and JS tools over Stdio and StreamableHTTP transports. Built with Bun, compiles to standalone executables.
Designed to be used by browser-based (or any MCP-compatible) agents, like Hadrian, to control a computer.
| Tool | Description |
|---|---|
| read | Read file contents with pagination (offset/limit). Detects image files (JPEG, PNG, GIF, WebP) and returns metadata. Truncates text to 2000 lines or 50KB. |
| write | Create or overwrite files. Auto-creates parent directories. |
| edit | Find-and-replace with exact or fuzzy matching (normalizes smart quotes, dashes, and Unicode whitespace). Requires a unique match, or use replace_all for every occurrence (exact matches only). Returns a unified diff. |
| bash | Execute shell commands with optional timeout. Output truncated to last 2000 lines or 50KB. |
| glob | Fast file pattern matching. Returns up to 500 paths matching a glob pattern (e.g. **/*.ts). |
| grep | Search file contents using ripgrep. Supports regex, file filtering, context lines, and multiple output modes. Requires rg to be installed. |
| js | Evaluate JavaScript/TypeScript in a persistent Node.js vm context. State persists across calls within a session. Supports await, console.log, and loading packages from unpkg.com via await load("package"). Auto-returns the last expression. Not a security sandbox — see Security below. |
Download the latest binary for your platform from Releases, or grab it with curl:
# Download (replace the filename for your platform)
curl -fsSL https://github.com/hadriangateway/platter/releases/latest/download/platter-linux-x64 -o platter chmod +x platter
./platter # stdio mode ./platter -t http # HTTP mode on :3100
docker run --rm -i ghcr.io/hadriangateway/platter # stdio mode
docker run --rm -p 3100:3100 ghcr.io/hadriangateway/platter -t http --host 0.0.0.0 # HTTP mode
See Docker below for mounting paths, networking, installing extra software, and building custom images.
bun install
bun run dev # run directly from TypeScript bun run compile # build standalone binary for current platform
platter v1.x.x
Your computer, served on a platter.
Usage: platter [options]
Options: -t, --transport Transport mode (default: stdio) --tray Run the HTTP server with a Linux system tray (implies --transport=http, persists state across restarts in ~/.config/platter) -p, --port HTTP port (default: 3100) --host HTTP bind address (default: 127.0.0.1) --cwd Working directory for tools (default: current directory) --cors-origin Allowed CORS origin (default: *) --auth Auth mode: oauth, bearer, jwks, none (default: oauth) --auth-token Bearer token for HTTP auth (auto-generated if omitted) --tls-cert TLS certificate file (PEM) — enables HTTPS --tls-key TLS private key file (PEM)
External JWKS / OIDC (--auth jwks — verify tokens from an external IdP): --oauth-issuer Issuer URL; OIDC-discovers the JWKS endpoint --jwks-url Explicit JWKS endpoint (overrides discovery) --oauth-audience Expected token audience (strongly recommended) --jwks-scope-grants Map tools: token scopes to tool access (fail closed: a token with no tools: scopes is granted no tools)
Process management: --max-processes Max concurrent bash processes per session (default: 20) --max-sessions Max concurrent HTTP sessions (default: unlimited)
Restrictions: --tools Comma-separated tools to enable (default: all) Valid: read, write, edit, bash, glob, grep, js --allow-path Restrict read/write/edit/glob/grep to this path (repeatable) Does not restrict bash or js --allow-command Allow bash commands matching this pattern (repeatable) Pattern must match the entire command string Applies to bash only; does not restrict js
Sandbox (applies to bash only; the js tool is never sandboxed): --sandbox Use just-bash sandbox instead of native bash --sandbox-fs Filesystem backend: memory, overlay, readwrite (default: readwrite) --sandbox-allow-url Allow network access to URL prefix (repeatable)
-h, --help Show this help message -v, --version Show version number
You can limit which tools are registered, which filesystem paths file tools can access, and which commands the bash tool can execute.
Only register specific tools. Unregistered tools are completely hidden from MCP clients:
platter --tools read,glob,grep # read-only server
platter --tools read,write,edit # no bash/search/js
Restrict file-accessing tools (read, write, edit, glob, grep) to one or more directory trees. Paths are resolved to absolute form and symlinks are resolved via realpath to prevent escaping:
platter --allow-path /home/user/project
platter --allow-path /home/user/project --allow-path /tmp
Only allow bash commands whose entire command string matches at least one regex pattern:
platter --allow-command "git( .*)?" # git only
platter --allow-command "git( .*)?" --allow-command "npm( .*)?" # git or npm platter --allow-command "ls( .*)?" --allow-command "cat .*" # ls or cat
Patterns are anchored: --allow-command "git( .*)?" compiles to ^(?:git( .*)?)$, so git status matches but rm -rf / && git status does not.
# Locked-down: read-only tools, scoped to one directory
platter --tools read,glob,grep --allow-path /home/user/project
platter --allow-path ./my-project --allow-command "git( .*)?" --allow-command "npm( .*)?"
Active restrictions are logged to stderr at startup.
Controlled by --auth :
| Mode | Description |
|---|---|
oauth (default) | OAuth 2.1 Authorization Code + PKCE, with a static bearer token as fallback |
bearer | Static bearer token only |
jwks | Resource-server mode: verifies JWT access tokens issued by an external OAuth/OIDC issuer (Auth0, Keycloak, Okta, Entra) via JWKS |
none | No authentication |
--auth oauth)MCP clients that support RFC 9728 (Protected Resource Metadata) can discover platter's OAuth endpoints automatically and authenticate without manual token copying.
The flow:
/.well-known/oauth-authorization-server and /.well-known/oauth-protected-resource/mcpPOST /register (RFC 7591 dynamic client registration)/authorize/tokenAuthorization: Bearer The confirmation code proves that the person approving the request has access to the platter process — a remote attacker who can reach the consent page cannot approve without it. Codes are single-use and expire after 5 minutes, with a maximum of 5 attempts.
Access tokens expire after 1 hour and can be refreshed. Client registrations are persisted to ~/.config/platter/clients.json. A static bearer token is also accepted as a fallback for clients that don't support OAuth.
--auth bearer)A random bearer token is generated at startup and printed to stderr (or stored in the system keyring in tray mode). Every request must include Authorization: Bearer . You can provide your own:
platter -t http --auth bearer --auth-token my-secret-token
--auth none)Disable authentication entirely (e.g. behind a reverse proxy that handles auth):
platter -t http --auth none
--auth jwks)In jwks mode platter acts as a pure resource server: it does not mint its own tokens. Instead it verifies JWT access tokens issued by an external OAuth/OIDC authorization server (Auth0, Keycloak, Okta, Microsoft Entra) — validating the signature against the issuer's JWKS, plus the iss, aud, and exp claims. This lets you put platter behind your existing IdP without a reverse proxy.
# Auth0 (root issuer)
platter -t http --auth jwks \ --oauth-issuer https://YOUR_TENANT.auth0.com/ \ --oauth-audience https://platter.example.com/mcp
platter -t http --auth jwks \ --oauth-issuer https://kc.example.com/realms/myrealm \ --oauth-audience platter-api
platter -t http --auth jwks \ --jwks-url https://idp.example.com/.well-known/jwks.json \ --oauth-audience platter-api
Audience validation (strongly recommended). Set --oauth-audience to the API identifier configured in your IdP. If you omit it, platter accepts *any* valid token from the issuer — including tokens minted for a different resource server (a confused-deputy risk). platter prints a warning at startup when audience validation is disabled.
Discovery. With --oauth-issuer, platter fetches the issuer's /.well-known/openid-configuration (falling back to /.well-known/oauth-authorization-server) at startup to find the jwks_uri and re-advertise the authorization server to RFC 9728-capable MCP clients (at /.well-known/oauth-protected-resource/mcp). Pass --jwks-url to skip discovery, or if the IdP isn't reachable at startup. If discovery fails but --jwks-url is set, token verification still works — only the RFC 9728 auto-advertisement is skipped.
Authorization (what a token can do). By default a verified token gets admin-level access, bounded only by the operator's CLI restrictions (--tools, --allow-path, --allow-command, --sandbox) — the IdP controls *who* gets in, the CLI flags control *what* they can do. Pass --jwks-scope-grants to additionally honor tools: scopes in the token (e.g. tools:read tools:bash), which further narrow the granted tools (they can only narrow, never widen the operator's ceiling). The scope claim and Entra-style scp claim are both supported. In this mode access is fail closed: a token carrying no tools:* scope is granted no tools at all, so a token must explicitly request the tools it needs.
No static fallback. Unlike oauth mode,
Nur der Anfang wird gezeigt; den Rest findest du im Repo