Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Beschreibung vom Entwickler (englisches Original)
Local MCP access to Unix pass/GPG with read-only defaults, path scopes, and TOTP.
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.
PASS_MCP_ALLOWED_PATHS, PASSWORD_STORE_DIRDu 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": {
"unix-pass": {
"command": "uvx",
"args": [
"unix-pass-mcp"
],
"env": {
"PASS_MCP_ALLOWED_PATHS": "your-value",
"PASSWORD_STORE_DIR": "your-value"
}
}
}
}Führe das in deinem Terminal aus
claude mcp add unix-pass --env PASS_MCP_ALLOWED_PATHS=your-value --env PASSWORD_STORE_DIR=your-value -- uvx unix-pass-mcpTrag die leeren Werte ein, bevor du ihn startest.
In .cursor/mcp.json in deinem Projekt oder in ~/.cursor/mcp.json einfügen
{
"mcpServers": {
"unix-pass": {
"command": "uvx",
"args": [
"unix-pass-mcp"
],
"env": {
"PASS_MCP_ALLOWED_PATHS": "your-value",
"PASSWORD_STORE_DIR": "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.
In .vscode/mcp.json in deinem Projekt einfügen
{
"servers": {
"unix-pass": {
"type": "stdio",
"command": "uvx",
"args": [
"unix-pass-mcp"
],
"env": {
"PASS_MCP_ALLOWED_PATHS": "your-value",
"PASSWORD_STORE_DIR": "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.
PASS_MCP_ALLOWED_PATHS envPASSWORD_STORE_DIR envDiese 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 9. Nov. 2026
Der Registry-Name wurde mit dem GitHub-Konto Neanderthal 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.2.1) kam vor 5 Tagen in die Registry.
Apps, die MCP unterstützen, etwa Claude Desktop, Claude Code, Cursor und VS Code. Außerdem brauchst du Python (uv) auf deinem Computer.
In derselben Kategorie: Spec Driven Development, Remote Desktop Commander, Bestax
Server derselben Kategorie von anderen Entwicklern, sortiert nach Sternen.
So liest du eine Karte:↓ Downloads pro Wochei★ 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.
Props, examples, CSS variables and Agent Skills for bestax-bulma React components (Bulma v1)
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.
██╗ ██╗███╗ ██╗██╗██╗ ██╗ ██████╗ █████╗ ███████╗███████╗ ███╗ ███╗ ██████╗██████╗
██║ ██║████╗ ██║██║╚██╗██╔╝ ██╔══██╗██╔══██╗██╔════╝██╔════╝ ████╗ ████║██╔════╝██╔══██╗ ██║ ██║██╔██╗ ██║██║ ╚███╔╝ ██████╔╝███████║███████╗███████╗ ██╔████╔██║██║ ██████╔╝ ██║ ██║██║╚██╗██║██║ ██╔██╗ ██╔═══╝ ██╔══██║╚════██║╚════██║ ██║╚██╔╝██║██║ ██╔═══╝ ╚██████╔╝██║ ╚████║██║██╔╝ ██╗ ██║ ██║ ██║███████║███████║ ██║ ╚═╝ ██║╚██████╗██║ ╚═════╝ ╚═╝ ╚═══╝╚═╝╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝╚══════╝╚══════╝ ╚═╝ ╚═╝ ╚═════╝╚═╝
Connect your existing Unix [`pass`](https://www.passwordstore.org/)/GPG store to AI tools.
Read-only by default. Writes, key administration, and network ops behind explicit env opt-ins. Single-chokepoint subprocess. Strict input validation. No shell, no clipboard, no secrets in logs.
Status — M5 complete. Read · safe-write · key administration · TOTP/OTP · git · hardening surfaces all shipped.
24 tools with unit, real-GPG integration, and stdio protocol regression suites.
See installation examples, the demo, and
release/publishing instructions.
83-second MP4 · How it was recorded
Trying the beta? Report installation feedback. Launch status tracks package and directory publication separately.
pass is a thin wrapper around gpg(1) and the filesystem. Anything that can shell out can use it — but exposing it raw to an LLM is a recipe for rm -rf regret. This server provides:
pass.See .claude/rules/architecture.md for the full design and security model.
Requires Python 3.11+, uv, pass, GnuPG, and an initialized store. Install the published PyPI release:
claude mcp add unix-pass -e 'PASS_MCP_ALLOWED_PATHS=web/*' -- \
uvx --from unix-pass-mcp==0.2.1 unix-pass-mcp
Copy-paste configurations: Codex, Claude Code, Claude Desktop. For source-checkout development and other client setup details, see installation.
That gets you the read-only surface. To enable mutations:
PASS_MCP_ALLOW_WRITES=1 \
PASS_MCP_ALLOWED_PATHS=web/* \ uv run unix-pass-mcp
| Component | Why | Notes |
|---|---|---|
| Python ≥ 3.11 | Runtime | 3.11 / 3.12 / 3.13 tested in CI |
pass on PATH | The wrapped binary | pass --version must work |
gpg (GnuPG ≥ 2.2) on PATH | Decryption | Used directly only by unlock_agent |
gpg-agent | Passphrase caching | The server probes gpg-connect-agent /bye at startup and refuses to decrypt if no agent is reachable. Started automatically by GnuPG on first use. |
| A configured GPG key | Required for decryption / pass init | Must have its trust level set to "ultimate" — see Arch wiki |
| An initialized password store | The thing being managed | pass init if you don't have one |
The server can never serve an interactive passphrase prompt itself — pass/gpg will hang. You need one of:
~/.gnupg/gpg-agent.conf — pinentry-gnome3, pinentry-qt, pinentry-qt5, or pinentry-gtk-2. The first decrypt of each cache window pops a desktop dialog. *Recommended.*unlock_agent MCP tool once per cache window to warm gpg-agent. Use this if you can't change gpg-agent.conf.pass show in a real terminal before talking to the MCP. Cache expires per default-cache-ttl (default 600s).# Arch / Manjaro
sudo pacman -S pass gnupg pinentry zenity # zenity optional, for unlock_agent
sudo apt install pass gnupg pinentry-gnome3 zenity
sudo dnf install pass gnupg2 pinentry-gnome3 zenity
brew install pass gnupg pinentry-mac
| Component | Enables |
|---|---|
pass-otp | Cross-tool compatibility for otp (the server has a native RFC 6238 implementation, no runtime dependency) |
git | Auto-commit on writes if your store is a git repo, plus git_status / git_log / git_pull / git_push |
| Component | Why |
|---|---|
uv | Recommended installer / runner |
gpg with key-generation support | Integration tests mint throwaway keys in an ephemeral GNUPGHOME |
uv sync --locked --extra dev # for development
uv pip install . # for use
Add to ~/.config/Claude/claude_desktop_config.json (or the platform equivalent):
{
"mcpServers": { "pass": { "command": "uv", "args": ["run", "--directory", "/absolute/path/to/unix-pass-mcp", "unix-pass-mcp"], "env": { "PASSWORD_STORE_DIR": "/home/you/.password-store" } } } }
# Read-only
claude mcp add pass -- uv run --directory /absolute/path/to/unix-pass-mcp unix-pass-mcp
claude mcp add pass -s user \ -e PASS_MCP_ALLOW_WRITES=1 \ -e PASS_MCP_ALLOWED_PATHS='web/*' \ -- uv run --directory /absolute/path/to/unix-pass-mcp unix-pass-mcp
Each -e KEY=VALUE flag sets one env var on the spawned server. To change env on an existing server, claude mcp remove pass -s user then re-add — the CLI has no in-place edit. Verify with claude mcp get pass.
For account creation / profile filling workflows that combine unix-pass-mcp with a browser-controlling MCP, load .claude/rules/agent-workflow.md into the agent's system prompt. It defines the canonical naming convention (web/ / ), body format, and signup/login/rotation loops.
24 tools, grouped by capability gate.
| Tool | Description |
|---|---|
store_info | Inspect the store: path, recipients per subdir, git/agent/pinentry/signing status, warnings. No decryption. |
list | List pass-names (optionally scoped to a subfolder). No decryption. |
find | Substring search over leaf names. No decryption. |
show | Decrypt and return one line of an entry (default = line 1 = password). Marked sensitive. |
show_field | Decrypt and return one named metadata field (URL, Username, otpauth, …). Case-insensitive. |
show_metadata | Decrypt and return only the entry shape (field names, password presence, and line count). Password value is never returned. |
unlock_agent | Pop a desktop password dialog (zenity/kdialog) and warm gpg-agent's cache via loopback pinentry. Optional target for multi-recipient stores — pass an explicit pass-name if a no-arg call returns wrong_passphrase_or_decrypt_failed, which can happen on legacy stores where the smallest entry is encrypted to a rotated subkey. The LLM never sees the passphrase. |
grep | Search inside the decrypted body of permitted entries. Slow + costly (decrypts permitted entries) — requires confirm_decrypt_all=true. Marked sensitive. Honours PASS_MCP_ALLOWED_PATHS. |
otp | Compute the current TOTP code from an entry's otpauth:// line. Returns code + seconds_remaining. Marked sensitive. Native RFC 6238 — no pass-otp runtime dependency. |
otp_uri | Return the raw otpauth:// URI (contains the secret). Use only when re-enrolling the same secret elsewhere. |
PASS_MCP_ALLOW_WRITES=1| Tool | Description |
|---|---|
insert | Create or overwrite a single-line entry. Password via stdin (never argv). Refuses overwrite without force=true. |
insert_multiline | Create or overwrite a full-body entry (line 1 = password, rest = Key: value metadata). |
set_field | Update one Key: value field; preserves password and other lines. simulate=true returns the would-be body without writing. |
unset_field | Remove all lines matching a field key (case-insensitive). No-op if absent. simulate=true for dry-run. |
generate | Generate a new password (length 1–1024, optional no_symbols). in_place=true keeps metadata; force=true overwrites everything. Returns the generated value (sensitive). |
mv | Rename or move an entry/subfolder. Re-encrypts to the destination subfolder's recipients if they differ. |
cp | Copy an entry/subfolder, with the same re-encryption semantics. |
otp_set | Append or replace the otpauth:// URI on an existing entry. Validates the URI before writing. |
git_status and git_log always; git_pull and git_push need PASS_MCP_ALLOW_NETWORK=1| Tool | Description |
|---|---|
git_status | Structured status: {clean, branch, upstream, ahead, behind, dirty_files}. Refuses if the store isn't a git repo. |
git_log | Recent commits as [{hash, subject}, …]. limit defaults to 20 (max 200). |
git_pull | git pull --ff-only — refuses divergence, no merge commits, no rebase. |
git_push | git push — never --force. |
PASS_MCP_ALLOW_DESTRUCTIVE=1| Tool | Description |
|---|---|
init | Initialize the store (or a subfolder) with new GPG recipients. Re-encrypts every entry in scope. Refuses if the user has no secret key for any of the new recipients, unless force=true. Empty gpg_ids list removes a subfolder's .gpg-id. |
reencrypt | Re-run init with the *current* recipients. Useful after subkey rotation. No-op when recipients haven't changed. |
Full machine-readable surface — every arg, every error code — lives in
.claude/rules/api.md.
Server-specific env vars:
| Var | Default | Effect |
|---|---|---|
PASS_MCP_ALLOW_WRITES | unset | Required for any mutating tool |
PASS_MCP_ALLOW_DESTRUCTIVE | unset | Required for init / reencrypt |
PASS_MCP_ALLOW_NETWORK | unset | Required for git_pull / git_push |
PASS_MCP_ALLOW_UNSAFE | unset | Bypass strict startup checks (world-readable store, weak umask). Don't. |
| PASS_MCP_ALLOWED_PATHS | unset (= all) | C
Nur der Anfang wird gezeigt; den Rest findest du im Repo