
AdrMcp
io.github.Atypical-ConsultingPublished by GitHub account Atypical-Consultingv0.2.1Updated Oct 24, 2026
MCP server for Architectural Decision Records: navigate, author, validate, link, and analyze them.
Overview
A local MCP server that turns a folder of Markdown Architectural Decision Records into tools an assistant can search, author, validate, link and analyze.
- What you can do
- List, read, search and index ADRs, including a decision timeline and lexical or semantic search, plus diffing two records or a file against its canonical rendering. Create ADRs from MADR or Nygard templates, update a single section, change status, supersede a decision, link records and regenerate the README index. Explore relationships through related-ADR lookups and a typed relationship graph. Validate MADR compliance, detect conflicting decisions, flag stale code references and report coverage gaps by architectural area. Draft an ADR proposal from a unified diff.
- When to use it
- Useful when a repository keeps its architecture decisions as Markdown ADRs and you want an assistant to answer questions about them, draft and review new records, or retire and supersede old ones while preserving history. Also helpful for spotting stale, conflicting or missing decisions.
- Requirements
- Runs locally over stdio as a .NET tool (dotnet tool install -g AdrMcp) or from source with the .NET SDK, or as a Docker image. Point it at an ADR root (default docs/adr) and a repository root via the --adr-root and --repo-root arguments or the ADR_ROOT and ADR_REPO_ROOT environment variables. No authentication or API keys are declared.
Installation
In SourceWeft
- Open AdrMcp in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
AdrMcp
Table of Contents
- Features
- The problem
- The solution
- Storage & format
- Tools
- Configuration
- Run
- Usage
- Claude skills
- Develop
- Continuous integration
- Project layout
- Tech Stack
- Roadmap
- Contributing
Getting Started
Prerequisites
Run
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.
[CI] [NuGet] [License: MIT] [.NET 10] [MCP server]
🌐 atypical-consulting.github.io/AdrMcp
[AdrMcp — Every architectural decision, on the record]
Features
- Read & search ADRs —
list_adrs,get_adr,search_adrs(lexical or semantic), andget_adr_indexfor the full decision timeline. - Author from a template —
create_adrdrafts MADR- or Nygard-format ADRs;update_adrreplaces or appends a single section. - Lifecycle-aware transitions —
set_statusenforces the ADR lifecycle;supersede_adrcreates the replacement and marks/links the old one superseded in a single call. - Relationship graph & staleness detection —
find_related_adrs/get_adr_graphexpose links and supersession chains;find_stale_adrsflags ADRs whosecode_refsno longer resolve in the codebase. - Conflict & coverage analysis —
detect_conflictssurfaces contradictory accepted decisions;coverage_reporthighlights ADR coverage gaps by architectural area. - Preview-by-default writes — every mutating tool defaults to
previewOnly: trueand returns a unified diff before anything touches disk. - Ships as a dotnet tool, NuGet package, and Docker image, plus three bundled Claude Code skills (
adr-author,adr-review,adr-supersede) for the judgment layer on top of the raw tools.
The problem
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.
The solution
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.
Storage & format
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:
Everything is git-native, human-readable, and diff-able — no database.
Tools
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.
Configuration
Resolved in order: CLI arg → env var → default.
Code-linking is provider-based
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.
Run
MCP client config
Docker
Usage
Once adr-mcp is registered as an MCP server, an agent calls its tools directly. A typical
read-then-write flow:
Claude skills
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:
Develop
Continuous integration
CI/CD runs on GitHub Actions, modeled on RoselineMCP:
Releases are automated with release-please: merge the release PR it opens to ship. See PUBLISH.md.
Project layout
Tech Stack
- .NET 10
- ModelContextProtocol
- xunit
- xunit.runner.visualstudio
- DiffPlex
- Markdig
- Microsoft.Extensions.Hosting
- YamlDotNet
Roadmap
- Real embedding-backed semantic search for
search_adrs/detect_conflicts(beyond term-vector similarity) - Roslyn-based
ICodeLinkProviderfor deep C# symbol resolution infind_stale_adrs - Additional ADR templates beyond MADR/Nygard (e.g. Y-statements)
- Editor extension (VS Code / JetBrains) to browse and visualize the decision graph
- Broaden the CI coverage gate and publish to additional package registries
See the open issues for details and to propose new ideas.
Atypical MCP servers
Part of a suite of Model Context Protocol servers by Atypical Consulting:
- RoselineMCP — Roslyn code intelligence for AI agents
- ASTral — structured code retrieval (tree-sitter)
- AdrMcp — Architecture Decision Records over MCP
- MarkdownInk — Markdown rendering for the terminal
Contributing
Contributions are welcome. Open an issue first to discuss any significant change.
- Fork the repository and create your branch (
git checkout -b feat/my-feature) - Commit your changes (
git commit -m 'feat: ...') - Push the branch and open a Pull Request
Built by Atypical Consulting. We also make NuGetKeep, a self-hosted NuGet server with supply-chain quarantine.
Source: README.md at commit 1f104ab
Tools
0Version history
1- v0.2.1LatestSep 16, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts