mcpField
A
AdrMcp

AdrMcp

ローカル
atypical-consulting.github.io開発ツール15 日前に更新

AdrMcp について

AdrMcpは、Markdown形式のアーキテクチャ決定記録をAIエージェントやMCPクライアント向けのツールにします。決定の検索、ライフサイクル管理、関連や古い参照の分析に対応し、変更はデフォルトで事前確認できます。

主な機能

  1. 01ADRの一覧表示、取得、検索
  2. 02テンプレートからADRを作成・更新
  3. 03ライフサイクル遷移と置き換えの管理
  4. 04関連の確認と古い参照の検出
  5. 05統一差分で書き込み内容を事前表示

活用シーン

  1. 01特定テーマの承認済み決定を検索
  2. 02レビュー用の決定記録を起草
  3. 03コード参照が無効な決定を特定
  4. 04履歴を保ってADRを置き換え

MCP 対応

AdrMcpは.NET stdio MCPサーバーで、Markdown ADRの読み取り、検索、作成、検証、リンク、分析を行うツールを提供します。変更ツールはデフォルトで差分を返し、プレビューを無効にした場合にのみ書き込みます。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ
パッケージ
nugetAdrMcp0.2.1

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

AdrMcp バナー

AdrMcp

目次

はじめに

前提条件
実行
git clone https://github.com/Atypical-Consulting/AdrMcp.git
cd AdrMcp
dotnet restore
dotnet build
dotnet run --project AdrMcp/AdrMcp.csproj

すべてのアーキテクチャ上の決定を記録に残す — Markdown の ADR が保存されたフォルダーを、AI エージェントが利用できるライブツールに変換する MCP サーバーです。決定の検索、作成、検証、リンク、追跡ができます。

CI NuGet License: MIT .NET 10 MCP server

🌐 atypical-consulting.github.io/AdrMcp

AdrMcp — すべてのアーキテクチャ上の決定を記録に残す

機能

  • ADR の読み取りと検索 — list_adrs、get_adr、search_adrs(語彙検索またはセマンティック検索)、そして決定の全履歴を確認できる get_adr_index。
  • テンプレートから作成 — create_adr は MADR または Nygard 形式の ADR を作成し、update_adr は単一セクションを置換または追記します。
  • ライフサイクルに応じた遷移 — set_status は ADR のライフサイクルを適用します。supersede_adr は置き換え先を作成するとともに、1 回の呼び出しで旧 ADR を廃止済みに設定し、リンクします。
  • 関連グラフと陳腐化の検出 — find_related_adrs/get_adr_graph はリンクと置き換えの連鎖を公開します。find_stale_adrs は、code_refs がコードベース内で解決できなくなった ADR を検出します。
  • 競合と網羅性の分析 — detect_conflicts は矛盾する採用済みの決定を明らかにし、coverage_report はアーキテクチャ領域ごとの ADR の不足箇所を示します。
  • 既定でプレビューして書き込み — 変更を伴うすべてのツールは、既定で previewOnly: true となり、ディスクに書き込む前に統一 diff を返します。
  • dotnet ツール、NuGet パッケージ、Docker イメージとして提供されるほか、基本ツールの上位にある判断レイヤーとして、Claude Code スキルが 3 つ同梱されています(adr-author、adr-review、adr-supersede)。

課題

アーキテクチャ上の決定は Slack のスレッドや PR のコメント、誰かの頭の中で行われ、その根拠はやがて消えてしまいます。数か月後、チームメイトが「なぜこのようになっているのか」と尋ねても、誰も覚えておらず、決定はいつの間にか再検討されたり、誤って覆されたりします。ADR はこの問題を解決します。ただし、作成され、内容が正確に保たれていればの話です。しかし、Markdown ファイルのフォルダーは、それだけでは何もできません。現在も accepted である決定を尋ねたり、何が何に置き換えられたかを追跡したり、コードと一致しなくなった決定に気づいたりすることはできません。

AI コーディングエージェントが関わると、状況はさらに悪化します。決定を最新の状態に保てる唯一の協力者であるにもかかわらず、決定を読み取ることも、書き込むことも、それについて推論することもできません。

解決策

AdrMcp は、どの MCP クライアントからでも利用できるライブな窓口として、そのフォルダーを機能させます。エージェントが決定の一覧表示や検索、MADR テンプレートを使った新しい決定の作成、構造とリンクの検証、履歴を保ったままの決定の置き換え、陳腐化や競合の検出を行うツールを提供します。すべて既定でプレビューされるため、diff を確認せずに書き込まれることはありません。

記録は Git 内のプレーンな Markdown のままです。AdrMcp がツールを追加します。.NET 10 の stdio MCP サーバーとして構築され、RoselineMCP をアーキテクチャ上のモデルとしています。レイヤー構成は Tools → Services、属性は [McpServerTool] で、dotnet tool と Docker イメージとして提供されます。

ストレージと形式

ADR は ADR ルート(デフォルトは docs/adr/)配下に Markdown ファイルとして保存され、意思決定ごとに NNNN-kebab-title.md という名前のファイルを1つ作成します。MADR 4.0 のフロントマターとセクションを使用します。

---
id: 1
title: Use PostgreSQL for persistence
status: accepted          # proposed | accepted | rejected | deprecated | superseded
date: 2026-07-08
tags: [data]
links:
  - { type: superseded-by, target: 5 }
code_refs:
  - { path: src/Data/Repository.cs, symbol: PostgresRepository }
---

# Use PostgreSQL for persistence

## Context and Problem Statement
...
## Decision Outcome
...
## Consequences
...

すべて Git ネイティブで、人が読みやすく、差分を確認できます。データベースは必要ありません。

ツール

ツール種類説明
list_adrs読み取りADR の一覧表示/フィルタリング(ステータス、タグ、日付範囲)
get_adr読み取りADR を1件取得します。選択した ## セクションのみを取得することもできます
search_adrs読み取り用語ベクトル検索。字句検索(デフォルト)または semantic を使用します
get_adr_index読み取り意思決定ログ/タイムライン
find_related_adrs読み取り受信/送信リンクと置き換えの連鎖
get_adr_graph読み取り関係性の完全なグラフ(ノードと型付きエッジ)
create_adr書き込みテンプレート(madr または nygard)から ADR を作成します
update_adr書き込み単一の ## セクションを置換/追記します
set_status書き込みステータスを遷移します(ライフサイクルを適用)
supersede_adr書き込み置き換えとなる ADR を作成し、古い ADR を置き換え済みにしてリンクします(1回の呼び出しで実行)
link_adrs書き込み2件の ADR 間に型付きリンクを作成します(逆リンクも追加)
validate_adr読み取りMADR 準拠状況を検証します。セクション、ステータス、リンク切れ、ID の重複を確認します
detect_conflicts読み取り明示的な conflicts-with と、内容が非常に類似する採択済み ADR を検出します
find_stale_adrs読み取りcode_refs の参照先が解決できなくなった ADR を検索します
coverage_report読み取りアーキテクチャ領域(タグ)ごとの ADR カバレッジをレポートし、抜けを明らかにします
suggest_adr_from_change読み取りunified diff から ADR の提案を下書きします
render_index書き込み閲覧可能な意思決定インデックス README.md を再生成します
diff_adr読み取り2件の ADR 間、またはファイルと正規レンダリング版との間の差分を表示します

書き込みはデフォルトでプレビューされます。 変更を加える各ツールは previewOnly(デフォルトは true)を受け取り、予定されている変更の unified diff を返します。ディスクに書き込むには previewOnly=false を指定します。

設定

次の順に解決されます:CLI 引数 → 環境変数 → デフォルト値。

設定CLI環境変数デフォルト
ADR ルート--adr-root <path>ADR_ROOT<repo>/docs/adr
リポジトリルート(code_refs 用)--repo-root <path>ADR_REPO_ROOT現在のディレクトリ
コードリンクはプロバイダーベースです

find_stale_adrs は ICodeLinkProvider を通じて code_refs を解決します。デフォルトの FileSystemCodeLinkProvider は言語に依存しません(ファイルが存在し、シンボルが指定されている場合はそのシンボルのテキストが存在すれば、参照は解決されます)。同じインターフェースの背後に Roslyn(.NET)や codebase-memory プロバイダーを接続できます。詳細なシンボル解決はクライアント側の役割です。

実行

# from source
dotnet run --project AdrMcp -- --adr-root ./docs/adr

# as a global tool
dotnet tool install -g AdrMcp
adr-mcp --adr-root ./docs/adr
MCP クライアント設定
{
  "mcpServers": {
    "adr": {
      "command": "adr-mcp",
      "args": ["--adr-root", "/path/to/repo/docs/adr", "--repo-root", "/path/to/repo"]
    }
  }
}
Docker
docker build -t adr-mcp .
docker run --rm -i -v "$PWD:/workspace" adr-mcp --adr-root /workspace/docs/adr

使い方

adr-mcp が MCP サーバーとして登録されると、エージェントはそのツールを直接呼び出します。一般的な読み取り後に書き込むワークフローは次のとおりです。

// "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 })

Claude スキル

.claude/skills/ 配下にある3つのプロジェクトスキルが、MCP ツールに判断/ワークフローのレイヤーを加えます(サーバーが仕組みを提供し、スキルが実践知を提供します)。接続された AdrMcp サーバーが利用可能になると、Claude Code で自動的に有効になります。

スキル起動条件機能
adr-author「ADR を書く」、「この意思決定を記録する」意思決定を ADR に記録する価値があるか判断し、明確な Context/Decision/Consequences を構成して、create_adr と validate_adr を使って下書きします
adr-review「この ADR をレビューする」、「この意思決定は妥当か」評価基準に基づき、validate_adr/detect_conflicts を使用して、構造面と内容面から批評します
adr-supersede「考えが変わった」、「この意思決定を取り下げる」適切なライフサイクル上の操作を選び、正しくリンクしながら supersede_adr/set_status を実行します

開発

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 は、RoselineMCP を参考に、GitHub Actions で実行されます。

ワークフロートリガー内容
ci.ymlmain/dev への push / PRビルド+テストのマトリックス(ubuntu/windows/macos)。ubuntu で行カバレッジ 80% のゲートを適用
codeql.ymlpush / PR / 毎週CodeQL によるセキュリティ分析(C#)
pages.ymldev 上の site/** への pushランディングページを GitHub Pages に公開
release-please.ymldev への pushリリース PR を維持(Conventional Commits)。マージ時に NuGet + MCPB + MCP Registry + GHCR イメージを公開

リリースは release-please で自動化されています。作成されたリリース PR をマージしてリリースしてください。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

技術スタック

  • .NET 10
  • ModelContextProtocol
  • xunit
  • xunit.runner.visualstudio
  • DiffPlex
  • Markdig
  • Microsoft.Extensions.Hosting
  • YamlDotNet

ロードマップ

  • search_adrs / detect_conflicts のための、実際の埋め込みベースのセマンティック検索(用語ベクトルの類似度を超えるもの)
  • find_stale_adrs で C# シンボルを詳細に解決する、Roslyn ベースの ICodeLinkProvider
  • MADR/Nygard 以外の ADR テンプレートの追加(例:Y ステートメント)
  • 意思決定グラフを閲覧・視覚化するエディター拡張機能(VS Code / JetBrains)
  • CI カバレッジゲートを拡大し、追加のパッケージレジストリに公開

詳細の確認や新しいアイデアの提案については、オープンイシューをご覧ください。

Atypical MCP サーバー

Atypical Consulting による Model Context Protocol サーバー群の一部です。

  • RoselineMCP — AI エージェント向けの Roslyn コードインテリジェンス
  • ASTral — 構造化コード検索(tree-sitter)
  • AdrMcp — MCP によるアーキテクチャ決定記録
  • MarkdownInk — ターミナル向け Markdown レンダリング

コントリビューション

コントリビューションを歓迎します。大きな変更については、まずイシューを作成して相談してください。

  1. リポジトリをフォークし、ブランチを作成します(git checkout -b feat/my-feature)
  2. 変更をコミットします(git commit -m 'feat: ...')
  3. ブランチをプッシュし、プルリクエストを作成します

Atypical Consulting が開発しました。また、サプライチェーン隔離機能を備えたセルフホスト可能な NuGet サーバー、 NuGetKeep も提供しています。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。