Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Beschreibung vom Entwickler (englisches Original)
Zsh for Claude Code. PTY mode lets Claude type passwords. NEVERHANG + A.L.A.N.
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.
ALAN_DB_PATHDu 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": {
"zsh-tool": {
"command": "uvx",
"args": [
"zsh-tool-mcp"
],
"env": {
"ALAN_DB_PATH": "your-value"
}
}
}
}Führe das in deinem Terminal aus
claude mcp add zsh-tool --env ALAN_DB_PATH=your-value -- uvx zsh-tool-mcpTrag die leeren Werte ein, bevor du ihn startest.
In .cursor/mcp.json in deinem Projekt oder in ~/.cursor/mcp.json einfügen
{
"mcpServers": {
"zsh-tool": {
"command": "uvx",
"args": [
"zsh-tool-mcp"
],
"env": {
"ALAN_DB_PATH": "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": {
"zsh-tool": {
"type": "stdio",
"command": "uvx",
"args": [
"zsh-tool-mcp"
],
"env": {
"ALAN_DB_PATH": "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.
ALAN_DB_PATH 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 7. Nov. 2026
Der Registry-Name wurde mit dem GitHub-Konto ArkTechNWA 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 10 Monaten 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, FlyDocs
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.
Spec-driven development workflow: your agent works issues, sessions and the status lifecycle.
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.
Zsh execution tool for Claude Code with full Bash parity, yield-based oversight, PTY mode, NEVERHANG circuit breaker, and A.L.A.N. short-term learning.
Status: Beta (v0.7.2)
Author: Claude + Meldrey
License: MIT
Organization: ArkTechNWA
*Built with obsessive attention to reliability.*
The #1 reason: If you use zsh, Claude Code's Bash tool causes quotation mismatches and shell confusion. Every debug loop costs tokens. zsh-tool eliminates this instantly and permanently.
The token math: One avoided debug spiral = 30+ seconds saved, hundreds of tokens preserved.
zsh-tool is intelligent shell execution:
| Problem | zsh-tool Solution |
|---|---|
| Bash/zsh quotation confusion | Native zsh — no shell mismatch, no debug loops |
| Commands hang forever | Yield-based execution — always get control back |
| No visibility into running commands | zsh_poll — incremental output collection |
| Can't interact with prompts | PTY mode + zsh_send — full interactive support |
| Can't type passwords | PTY mode — let Claude Code type its own passwords |
| Timeouts cascade | NEVERHANG circuit breaker — fail fast, auto-recover |
| No memory between calls | A.L.A.N. 2.0 — retry detection, streak tracking, proactive insights |
| Polling wastes tokens | Intelligent polling — 2s listen window, adaptive suggestions, duration estimates |
| Blind kills, no learning | Kill-aware A.L.A.N. — classifies impatience vs genuine hangs |
| Retrying with wrong flags | manopt — auto-surfaces command options on repeated failures |
| No task management | zsh_tasks, zsh_kill — full control |
This is the difference between "run commands" and "intelligent shell integration."
Commands return after yield_after seconds with partial output if still running:
zsh_pollzsh_sendzsh_kill and zsh_tasksFull pseudo-terminal emulation for interactive programs:
# Enable with pty: true
zsh(command="pass insert mypass", pty=true)
- Proper handling of interactive prompts
Prevents hanging commands from blocking sessions:
CLOSED (normal) → OPEN (blocking) → HALF_OPEN (testing)Intelligent short-term learning — *"Maybe you're fuckin' up, maybe you're doing it right."*
git push origin feature-1 → git push origin *cat foo | grep -badopts | sort fails, A.L.A.N. knows *which* segment failedzsh_poll returns only new output since the last poll, prefixed with global line numbers. No more dumping 800 lines every poll call.
801: Installing package foo...
802: Compiling module bar... 803: Done.
| Field | What it tells you |
|---|---|
from_line / to_line | Line range in this delta (e.g., 801-803) |
new_bytes | Byte count of new output since last poll |
full_output (param) | Pass true to get entire buffer with line numbers |
First poll returns all output from line 1. Subsequent polls continue where the last left off. Completed tasks return the final delta, then empty on re-poll.
zsh_poll performs a 2-second listen window before returning. If output arrives within 2s, it comes back immediately. If not, poll metadata tells the agent what's happening:
| Field | What it tells you |
|---|---|
polls_since_output | How many empty polls in a row |
elapsed_since_last_output_s | Idle time since last output |
alan_estimate | A.L.A.N.'s duration prediction based on command history |
suggestion | Adaptive advice: space out polls, check soon, or consider killing |
Suggestions are advisory only — the agent always decides. A 2-minute pip install no longer generates 40 empty round-trips.
When the agent kills a command, A.L.A.N. records it as a KILLED outcome and classifies *why*:
| Category | Meaning | Example |
|---|---|---|
EARLY_KILL | Killed well before median completion | *"Killed at 30s. Median is 120s. Needs more time."* |
LATE_KILL | Ran way past expected duration | *"Killed after 180s. Median is 45s. Something is wrong."* |
PATTERN_PROBLEM | Template gets killed >50% of the time | *"This pattern may need a different approach entirely."* |
Kill classification compares kill_elapsed / median_duration to distinguish impatience from genuine hangs.
When a command fails repeatedly, A.L.A.N. surfaces its available options:
manopt lookup in background (2s timeout)Parsed from local man pages. Cached in SQLite. On by default (ALAN_MANOPT_ENABLED=1).
A.L.A.N. treats SSH commands specially, recording two separate observations:
| Observation | What it tracks | Example insight |
|---|---|---|
| Host connectivity | Can we connect to this host? | *"Host 'vps' has 67% connection failure rate"* |
| Remote command | Does this command work across hosts? | *"Remote command 'git pull' reliable across 3 hosts"* |
Exit code classification:
0 — Success (connected AND command succeeded)255 — Connection failed (SSH couldn't connect)1-254 — Command failed (connected but remote command failed)This means when ssh host3 'git pull' fails with exit 255, A.L.A.N. knows the *host* was unreachable—not that git pull is broken.
| Tool | Purpose |
|---|---|
zsh | Execute command with yield-based oversight |
zsh_poll | Get new output (delta) from running task with line numbers |
zsh_send | Send input to task's stdin |
zsh_kill | Kill a running task |
zsh_tasks | List all active tasks |
zsh_health | Overall health status |
zsh_alan_stats | A.L.A.N. database statistics |
zsh_alan_query | Query pattern insights for a command |
zsh_neverhang_status | Circuit breaker state |
zsh_neverhang_reset | Reset circuit to CLOSED |
Add the ArkTechNWA marketplace to Claude Code:
ArkTechNWA/claude-plugins
Then install: /plugin install arktechnwa/zsh-tool
That's it. The plugin auto-installs dependencies on first run.
git clone https://github.com/ArkTechNWA/zsh-tool.git ~/.claude/plugins/zsh-tool
Enable in ~/.claude/settings.json:
{
"enabledPlugins": { "zsh-tool": true } }
The bundled scripts/run-mcp.sh builds the Rust binary on first run and launches the MCP server.
For local development/testing, the wrapper script automatically detects when CLAUDE_PLUGIN_ROOT isn't expanded and uses the calculated plugin root directory instead. No configuration changes needed.
Alternatively, create a .mcp.local.json with absolute paths:
{
"mcpServers": { "zsh-tool": { "type": "stdio", "command": "/path/to/zsh-tool/scripts/run-mcp.sh", "env": { "NEVERHANG_TIMEOUT_DEFAULT": "120", "NEVERHANG_TIMEOUT_MAX": "600" } } } }
The ALAN_DB_PATH will be automatically set to {plugin_root}/data/alan.db if not explicitly provided.
Requirements: Rust toolchain (cargo) and zsh must be installed.
zsh-tool/
├── .claude-plugin/ │ ├── plugin.json │ └── CLAUDE.md ├── .mcp.json ├── zsh-tool-rs/ │ ├── Cargo.toml │ └── src/ │ ├── main.rs # CLI entry point │ ├── lib.rs # Module exports │ ├── executor.rs # Pipe/PTY command execution │ ├── config.rs # User config (~/.config/zsh-tool/) │ ├── circuit.rs # NEVERHANG circuit breaker │ ├── meta.rs # Task metadata (exit code, pipestatus) │ ├── alan/ # A.L.A.N. 2.0 learning engine │ │ ├── mod.rs # Recording + insights │ │ ├── hash.rs # Fuzzy command hashing │ │ ├── insights.rs # Proactive feedback │ │ ├── manopt.rs # Man-page option parsing │ │ ├── ssh.rs # SSH host/command tracking │ │ ├── streak.rs # Success/failure streaks │ │ ├── pipeline.rs # Pipeline segment tracking │ │ ├── prune.rs # Temporal decay + pruning │ │ └── stats.rs # Database statistics │ └── serve/ # MCP JSON-RPC server │ ├── mod.rs # Request dispatch + tool handlers │ ├── format.rs # Rich output formatting │ ├── protocol.rs # JSON-RPC framing │ └── tools.rs # Tool schema definitions ├── scripts/ │ └── run-mcp.sh # Build + launch wrapper ├── data/ │ └── alan.db # A.L.A.N. SQLite database └── README.md
Environment variables (set in .mcp.json):
ALAN_DB_PATH — A.L.A.N. database locationNEVERHANG_TIMEOUT_DEFAULT — Default timeout (120s)NEVERHANG_TIMEOUT_MAX — Maximum timeout (600s)ALAN_MANOPT_ENABLED — Enable man-page option hints on failure (default: 1)ALAN_MANOPT_TIMEOUT — Max seconds to wait for manopt parsing (default: 2.0)ALAN_MANOPT_FAIL_TRIGGER — Fail count to trigger async lookup (default: 2)ALAN_MANOPT_FAIL_PRESENT — Fail count to present cached options (default: 3)To use zsh as the only shell, add to ~/.claude/settings.json:
{
"permissions": { "deny": ["Bash"] } }
User-Visible Output — *Tell the model to show its work*
Stale Binary Fix — *Actually deliver the new format*
run-mcp.sh now runs cargo clean -p before rebuild when source changes, preventing Cargo's incremental build from serving a stale binaryCargo.toml (version bumps were invisible to the old find -newer check)**Rich
Nur der Anfang wird gezeigt; den Rest findest du im Repo