Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Descripción del creador (original en inglés)
MCP server for Architectural Decision Records: navigate, author, validate, link, and analyze them.
Estos tres nunca se combinan en una sola puntuación: las opiniones, las mediciones y la popularidad son cosas distintas.
Todavía no escribimos un resumen sencillo para este. Abajo están los datos que leímos del registro.
Elige la app de IA que usas y copia la configuración.
¿Qué app usas?
Elige tu app arriba. La recordamos, así que la próxima vez el botón dirá “Instalar en …”.
Abre Claude Desktop → Settings → Developer → Edit Config y pega esto en claude_desktop_config.json
{
"mcpServers": {
"adr": {
"command": "dnx",
"args": [
"AdrMcp",
"--yes"
]
}
}
}Ejecuta esto en tu terminal
claude mcp add adr -- dnx AdrMcp --yesPégalo en .cursor/mcp.json de tu proyecto, o en ~/.cursor/mcp.json
{
"mcpServers": {
"adr": {
"command": "dnx",
"args": [
"AdrMcp",
"--yes"
]
}
}
}Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.
Pégalo en .vscode/mcp.json de tu proyecto
{
"servers": {
"adr": {
"type": "stdio",
"command": "dnx",
"args": [
"AdrMcp",
"--yes"
]
}
}
}Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.
Este se ejecuta en tu computadora, y ChatGPT solo puede conectarse a servidores en internet. Elige otra app.
Tu elección se guarda en una cookie en este dispositivo; no necesitas cuenta.
Esta configuración se genera a partir de la ficha del creador en el registro. Si el README dice otra cosa, sigue el README.
Se ejecuta en tu computadora; la lista de herramientas aparece en tu app de IA después de instalarlo.
Revisamos información que cualquiera puede ver; no hemos leído el código. Las revisiones que no aplican no se cuentan. · Revisado el 9 nov 2026
El nombre en el registro se verificó con la cuenta de GitHub Atypical-Consulting, dueña del repo
Todavía no hemos leído este repo en GitHub
Todavía no hemos leído este repo en GitHub
Este se ejecuta en tu computadora; no hay endpoint en internet
Se ejecuta en tu computadora y usa ajustes locales en su lugar
Se ejecuta en tu computadora; solo podemos leer listas de herramientas de endpoints en internet
Comparado con todos los servidores activos de esta categoría en el registro. Las estrellas solo cuentan cuando quien lo publica es dueño del repo.
Superó 1 de 1 revisiones básicas aplicables. No hemos leído el código. Antes de agregar una clave o un token, revisa qué acceso pide el servidor y usa una clave que tenga solo los permisos que necesitas.
El registro no indica ninguna clave obligatoria, aunque algunos servidores te piden iniciar sesión la primera vez que los usas.
Se ejecuta en tu computadora. Tu app de IA lo inicia cuando hace falta, y los datos no pasan por los servidores del creador (a menos que el propio servidor llame a un servicio en línea).
El repo de GitHub cambió por última vez –, y la última versión (0.2.1) llegó al registro hace 4 meses.
Las apps compatibles con MCP, como Claude Desktop, Claude Code, Cursor y VS Code. También necesitas .NET en tu computadora.
En la misma categoría: Spec Driven Development, Remote Desktop Commander, phylokit-mcp
Servidores de la misma categoría hechos por otros creadores, ordenados por estrellas.
Cómo leer una tarjeta:↓ Descargas por semanai★ Estrellas de GitHubiTres pilares: reseñas · revisiones · usoiActualizado = fecha en que se publicó la última versión en el registroi
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.
Phylogenetic inference via IQ-TREE 3 — never returns a topology without its support
Copiado tal cual del repo del creador. PopNx MCP no lo ha revisado ni lo respalda. Se quitaron HTML, imágenes y scripts. Los enlaces llevan fuera de este sitio.
git clone https://github.com/Atypical-Consulting/AdrMcp.git
cd AdrMcp dotnet restore dotnet build dotnet run --project AdrMcp/AdrMcp.csproj
Every architectural decision, on the record — an MCP server that turns a folder of Markdown ADRs into live tools your AI agent can use: search, author, validate, link, and trace decisions.
🌐 [atypical-consulting.github.io/AdrMcp](https://atypical-consulting.github.io/AdrMcp/)
list_adrs, get_adr, search_adrs (lexical or semantic), and get_adr_index for the full decision timeline.create_adr drafts MADR- or Nygard-format ADRs; update_adr replaces or appends a single section.set_status enforces the ADR lifecycle; supersede_adr creates the replacement and marks/links the old one superseded in a single call.find_related_adrs / get_adr_graph expose links and supersession chains; find_stale_adrs flags ADRs whose code_refs no longer resolve in the codebase.detect_conflicts surfaces contradictory accepted decisions; coverage_report highlights ADR coverage gaps by architectural area.previewOnly: true and returns a unified diff before anything touches disk.adr-author, adr-review, adr-supersede) for the judgment layer on top of the raw tools.Architectural decisions get made in Slack threads, PR comments, and someone's head — then the reasoning evaporates. Months later a teammate asks "why is it done this way?", nobody remembers, and the decision gets silently re-litigated or accidentally reversed. ADRs fix that — *if* they're written and kept honest. But a folder of Markdown files is inert: you can't ask it what's still accepted, trace what superseded what, or notice a decision that no longer matches the code.
It's worse with AI coding agents: the one collaborator that could keep decisions current has no way to read, write, or reason about them.
AdrMcp makes that folder a live surface any MCP client can work. It gives your agent tools to list and search decisions, draft new ones from a MADR template, validate structure and links, supersede a decision while preserving its history, and flag stale or conflicting ones — all preview-by-default, so nothing is written without you seeing the diff.
The records stay plain Markdown in git; AdrMcp adds the tools. Built as a .NET 10 stdio MCP server, architecturally modeled on RoselineMCP — layered Tools → Services, [McpServerTool] attributes, shipped as a dotnet tool + Docker image.
ADRs are markdown files under an ADR root (default docs/adr/), one file per decision named NNNN-kebab-title.md, using MADR 4.0 frontmatter + sections:
---
id: 1 title: Use PostgreSQL for persistence status: accepted # proposed | accepted | rejected | deprecated | superseded date: 2026-07-08 tags: [data] links:
code_refs:
...
...
...
Everything is git-native, human-readable, and diff-able — no database.
| Tool | Kind | Description |
|---|---|---|
list_adrs | read | List/filter ADRs (status, tag, date range) |
get_adr | read | Get one ADR; optionally only selected ## sections |
search_adrs | read | Lexical (default) or semantic term-vector search |
get_adr_index | read | The decision log / timeline |
find_related_adrs | read | Incoming/outgoing links + supersession chain |
get_adr_graph | read | Full relationship graph (nodes + typed edges) |
create_adr | write | Create an ADR from a template (madr or nygard) |
update_adr | write | Replace/append a single ## section |
set_status | write | Transition status (enforces the lifecycle) |
supersede_adr | write | Create replacement + mark old superseded + link, in one call |
link_adrs | write | Typed link between two ADRs (adds inverse) |
validate_adr | read | MADR compliance: sections, status, dangling links, duplicate ids |
detect_conflicts | read | Explicit conflicts-with + highly similar accepted ADRs |
find_stale_adrs | read | ADRs whose code_refs no longer resolve |
coverage_report | read | ADR coverage per architectural area (tag); surfaces gaps |
suggest_adr_from_change | read | Draft an ADR proposal from a unified diff |
render_index | write | Regenerate the browsable README.md decision index |
diff_adr | read | Diff two ADRs, or a file vs its canonical rendering |
Writes are preview-by-default. Every mutating tool takes previewOnly (default true) and returns a unified diff of the intended change; pass previewOnly=false to write to disk.
Resolved in order: CLI arg → env var → default.
| Setting | CLI | Env | Default |
|---|---|---|---|
| ADR root | --adr-root | ADR_ROOT | /docs/adr |
Repo root (for code_refs) | --repo-root | ADR_REPO_ROOT | current directory |
find_stale_adrs resolves code_refs through an ICodeLinkProvider. The default FileSystemCodeLinkProvider is language-agnostic (a ref resolves if the file exists and, when a symbol is given, that symbol's text is present). A Roslyn (.NET) or codebase-memory provider can be plugged in behind the same interface — deep symbol resolution stays the client's job.
# from source
dotnet run --project AdrMcp -- --adr-root ./docs/adr
dotnet tool install -g AdrMcp adr-mcp --adr-root ./docs/adr
{
"mcpServers": { "adr": { "command": "adr-mcp", "args": ["--adr-root", "/path/to/repo/docs/adr", "--repo-root", "/path/to/repo"] } } }
docker build -t adr-mcp .
docker run --rm -i -v "$PWD:/workspace" adr-mcp --adr-root /workspace/docs/adr
Once adr-mcp is registered as an MCP server, an agent calls its tools directly. A typical read-then-write flow:
// "What ADRs do we have about data storage?"
list_adrs({ "tag": "data" }) // → [{ "id": 5, "title": "Use PostgreSQL for persistence", "status": "accepted", "tags": ["data"] }]
// "Draft a decision for switching to gRPC internally" — nothing is written yet create_adr({ "title": "Adopt gRPC for internal services", "template": "madr", "previewOnly": true }) // → unified diff of the new docs/adr/0006-adopt-grpc-for-internal-services.md
// Once the content looks right, write it for real create_adr({ "title": "Adopt gRPC for internal services", "template": "madr", "previewOnly": false })
// Later, retire an old decision in favor of a new one, preserving history supersede_adr({ "oldId": 2, "newTitle": "Replace REST gateway with gRPC", "previewOnly": false })
Three project skills under .claude/skills/ add the judgment/workflow layer on top of the MCP tools (the server provides the mechanics; the skills provide the craft). They activate automatically in Claude Code when the connected AdrMcp server is available:
| Skill | Triggers on | What it does |
|---|---|---|
adr-author | "write an ADR", "record this decision" | Decide if a decision warrants an ADR, frame a sharp Context/Decision/Consequences, draft via create_adr + validate_adr |
adr-review | "review this ADR", "does this decision hold up" | Structural + substantive critique against a rubric, using validate_adr / detect_conflicts |
adr-supersede | "we changed our mind", "retire this decision" | Pick the right lifecycle move and drive supersede_adr / set_status with correct linking |
dotnet build AdrMcp.slnx
dotnet test AdrMcp.slnx # unit tests + MCP-over-stdio integration tests dotnet pack AdrMcp/AdrMcp.csproj -c Release -o ./artifacts
CI/CD runs on GitHub Actions, modeled on RoselineMCP:
| Workflow | Trigger | What it does |
|---|---|---|
ci.yml | push / PR to main/dev | Build + test matrix (ubuntu/windows/macos); 80% line-coverage gate on ubuntu |
codeql.yml | push / PR / weekly | CodeQL security analysis (C#) |
pages.yml | push to site/** on dev | Publish the landing page to GitHub Pages |
release-please.yml | push to dev | Maintain a release PR (Conventional Commits); on merge, publish NuGet + MCPB + MCP Registry + GHCR image |
Releases are automated with release-please: merge the release PR it opens to ship. See PUBLISH.md.
AdrMcp/
├── Interfaces/ service contracts (IAdrRepository, ICodeLinkProvider, …) ├── Services/ repository, templates, validation, graph, search, embeddings, code-links ├── Tools/ Navigation / Authoring / Intelligence / Utility MCP tools ├── Models/ Adr, AdrStatus, AdrLink, CodeRef, response DTOs └── Program.cs DI wiring + stdio MCP host
search_adrs / detect_conflicts (beyond term-vector similarity)ICodeLinkProvider for deep C# symbol resolution in find_stale_adrsSee the open issues for details and to propose new ideas.
Part of a suite of Model Context Protocol servers by Atypical Consulting:
Solo se muestra el principio; lee el resto en el repo