Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Description from the maker (original English)
AI infrastructure cartographer & MCP server: fingerprints, graphs & watches live infra for agents
These three are never merged into one score: opinions, measurements and popularity are different things.
We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.
Pick the AI app you use, then copy the settings.
You need
Which app do you use?
Pick your app above. We remember it, so next time the button says “Install in …”.
Open Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json
{
"mcpServers": {
"cirdan": {
"command": "npx",
"args": [
"-y",
"@cirdanops/cli",
"serve-mcp"
]
}
}
}Run this in your terminal
claude mcp add cirdan -- npx -y @cirdanops/cli serve-mcpPaste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"cirdan": {
"command": "npx",
"args": [
"-y",
"@cirdanops/cli",
"serve-mcp"
]
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
Paste into .vscode/mcp.json in your project
{
"servers": {
"cirdan": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@cirdanops/cli",
"serve-mcp"
]
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
This one runs on your computer, and ChatGPT can only connect to servers on the internet. Pick another app.
Your choice stays on this device in a cookie; no account needed.
These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
Runs on your computer; the tool list appears in your AI app after you install it.
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 7, 2026
The registry name was verified with the GitHub account adanb13, which owns the repo
We have not read this repo from GitHub yet
We have not read this repo from GitHub yet
This one runs on your computer; there is no internet endpoint
Runs on your computer and uses local settings instead
Runs on your computer; we can only read tool lists from internet endpoints
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
It passed 1 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
The registry does not list a required key, though some servers ask you to sign in on first use.
It runs on your computer. Your AI app starts it when needed, and data does not pass through the maker’s servers (unless it calls an online service itself).
The GitHub repo last changed –, and the latest version (0.9.0) reached the registry 5 months ago.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need Node.js, Python (uv) on your computer.
In the same category: Spec Driven Development, Remote Desktop Commander, FactLot
Servers in the same category from other makers, sorted by stars.
Reading a card:★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
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.
Cited CRE facts and deterministic calculators for agents: rent, CAM, debt sizing, IRR, parcel IDs.
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
Cirdan is an on-call software repair agent. A production alert fires — Grafana, Alertmanager, or Slack. Cirdan resolves the affected service and its repo from the explicit services: registry in cirdan.yaml, reproduces the failure in an isolated runner (Docker Compose or Kubernetes), has a coding agent fix the code — your own logged-in Claude Code / Codex CLI, or an API provider — re-verifies the fix against the pinned reproduction probe and the repo's test suite, and opens a verified pull request. When policy allows, it merges, deploys, and verifies production recovery, stopping at manual_required with full evidence when recovery fails.
alert ─▶ resolve service + repo (the services: registry) ─▶ reproduce in an isolated runner
─▶ coding agent fixes the code ─▶ verify (pinned repro probe + sandboxed test suite) ─▶ verified PR (@cirdan review loop; CI checks watched) ─▶ optional merge + deploy ─▶ verify recovery in production
The job it does: when an alert fires at 3am for a code-shaped failure, a verified fix PR (or a completed deploy plus recovery confirmation) is waiting instead of a page.
Cirdan is deliberately not an infrastructure mapper, a topology explorer, an observability dashboard, a generic agent launcher, or a ChatOps bot. It repairs the services you register — nothing is discovered, and nothing is repaired implicitly.
pipx install "cirdanops[all]" # or uv / pip / npm / brew / curl / docker — see Install
cirdan setup # opens the local, loopback-only setup UI
cirdan setup walks one short path and shows a readiness banner that flips to "Ready to repair" only when this install can actually fix something:
gh login can push to; pick which ones it may repair. Only selected repositories are ever repaired.cirdand serve --http
curl -X POST localhost:8090/v1/ingest/grafana -d @examples/demo/alert.firing.json
The runnable demo in examples/demo/ wires this end to end. The same checklist is available headlessly — cirdan status --checks prints the identical table and exits 1 until the install is ready. Useful setup flags:
cirdan setup --terminal — the text step flow instead of the UIcirdan setup --all — run every step without prompting (scripts / CI)cirdan setup --system — machine-level scope in ~/.cirdan instead of a repoFrom PyPI (recommended):
uv tool install "cirdanops[all]"
pipx install "cirdanops[all]" pip install "cirdanops[all]"
Without Python — npm / Homebrew / curl:
npx -y @cirdanops/cli serve-mcp # run the MCP server, zero install
npm install -g @cirdanops/cli # or put the cirdan command on your PATH brew install adanb13/tap/cirdan # macOS / Linux (Homebrew) curl -LsSf https://raw.githubusercontent.com/adanb13/cirdan/main/packaging/install.sh | sh
These ship a self-contained binary — no Python 3.11+ required. Supported: macOS (arm64), Linux x64/arm64 (glibc), Windows x64. On Intel Macs, Alpine/musl, or other platforms, use the PyPI install above.
Then set it up in one command (see Quickstart):
cirdan setup # inside a repo
cirdan setup --system
Both open the same guided setup: choose a pathway, connect an alert source + GitHub, select repair repositories, prove routing, and start the always-on daemon.
Targeted installs: cirdanops[mcp], cirdanops[api], cirdanops[slack], cirdanops[agent], cirdanops[github-app], cirdanops[secrets], or combinations like cirdanops[api,mcp]. The sandbox runners need no extras — they use the docker/kubectl CLIs already on your PATH.
Prerequisites by platform (Python 3.11+ and uv or pipx):
# macOS
brew install python@3.12 uv
winget install astral-sh.uv
sudo apt install python3.12 python3-pip pipx
curl -LsSf https://astral.sh/uv/install.sh | sh
Docker (no Python needed):
# run the always-on repair daemon: alert receiver + isolated repair runner,
docker run -d \ -v "$PWD":/workspace:ro \ -v /var/run/docker.sock:/var/run/docker.sock \ -p 127.0.0.1:8090:8090 \ ghcr.io/adanb13/cirdan
(or docker compose up with the provided docker-compose.yml)
From source (latest unreleased):
pip install "cirdanops[all] @ git+https://github.com/adanb13/cirdan.git"
Two commands are installed:
| Command | What it is |
|---|---|
cirdan | Human/agent CLI |
cirdand | Long-running Always ON daemon |
Contributors work from a clone with an editable virtualenv, so changes to the working tree take effect immediately — no reinstall between edits. make install creates .venv and installs the package (distribution name cirdanops) editable with the [all,dev] extras — every runtime feature plus the test toolchain:
git clone https://github.com/adanb13/cirdan.git
cd cirdan make install # ≈ python3 -m venv .venv && .venv/bin/pip install -e ".[all,dev]" make test # .venv/bin/python -m pytest tests/ -q
Requires Python 3.11+. The manual two-line equivalent works on a standard Python; make install additionally handles the pip-less-venv case (it falls back to python3 -m venv --without-pip and bootstraps pip into the venv).
The editable install puts both console scripts in .venv/bin, running working-tree code with no rebuild:
.venv/bin/cirdan setup # or: .venv/bin/python -m cirdan.cli.main setup
.venv/bin/cirdand serve --http .venv/bin/python -m pytest tests/test_slack_events.py -q # a single test module
Common Make targets (make help lists them all):
| target | what it does |
|---|---|
make install | create .venv + editable install with [all,dev] |
make test | run the full pytest suite |
make build | build the sdist + wheel into dist/ |
make setup-wipe DIR= [KEY=1] | reset a project's onboarding so cirdan setup restarts from step 0 (KEY=1 also drops the global master key) |
make demo-up … make demo-clean | build and drive the runnable stack in examples/demo/ |
On a headless box with no OS keyring, storing credentials during
cirdan setup
needs a master key in the environment first:
export CIRDAN_MASTER_KEY=$(.venv/bin/python -c 'import os,base64;print(base64.b64encode(os.urandom(32)).decode())').
The first setup screen picks a deployment posture (deployment_mode: in cirdan.yaml), which gates everything after it:
Use the CLI (cli, the default) — Cirdan runs with the tools already logged in on this machine. GitHub writes go through your gh auth login; the coding agent is a detected, logged-in Claude Code or Codex CLI, spawned headless inside the isolated repair workspace; the sandbox runner is your local Docker (or kubectl). The happy path needs no stored keys and no GitHub App — an env-var API key and a GitHub App remain available behind explicitly labeled "Advanced" toggles.
Use the API (api) — headless and managed, for shared/enterprise deployments. Provider API keys are stored encrypted (cirdan secret; AES-256-GCM), GitHub writes go through a GitHub App (guided manifest onboarding) with short-lived per-repo installation tokens, and the enterprise security profile is derived automatically: inherited gh auth and host-spawned CLI agents are refused at config load.
Both pathways end at the same readiness contract — the setup UI banner and cirdan status --checks render the same table: repair repositories selected (each with a resolvable repo) · an alert source connected · a routing proof (a sample or live alert demonstrably resolved to a selected repository and routed to a code pipeline) · remediation.mode ∈ {develop, deliver} · a live-probed coding agent · a verified GitHub write path including access to each selected repo · git on PATH · a working sandbox runner · the daemon running. Every red row shows the exact fix command or the setup step that resolves it.
Legacy configs load forever: deployment_mode: single-user reads as cli, business as api, and the file text migrates on the next setup save.
cirdan setup writes cirdan.yaml for you; everything is also hand-editable — see cirdan.yaml.example. The heart of the file is the `services:` registry: the explicit list of services Cirdan may repair, how alerts resolve to them, and where their code lives.
services:
Alerts resolve to a service by an explicit cirdan_node label, then match_labels, then a ladder of common labels (service, service_name, app, job, deployment, statefulset, pod, container, the host of instance, annotations.service, alertname) matched against names + aliases. There is no implicit default: an alert that matches nothing opens a triage incident and never auto-repairs "the only registered repo".
Routing policy. Every alert source
Only the beginning is shown; read the rest in the repo