LivingDocs について
LivingDocsは、ソフトウェアチーム向けのドキュメント健全性監視MCPサーバーです。古いコメントや文書の不足、重要ファイルの知識集中リスクを検出し、コード文書やチームの会話を索引化して、Claudeによる更新案を作成できます。
主な機能
- 01古いドキュメントのスキャン
- 02コード文書の検索
- 03コメント更新案の生成と書き戻し
- 04文書不足と知識集中リスクの検出
- 05Slack、Teams、メールの索引化
活用シーン
- 01更新が必要なコードコメントの特定
- 02コードベース内の文書の検索
- 03未文書化ファイルや知識集中の発見
- 04技術的決定に関するチームの議論の検索
MCP 対応
MCPを通じて文書のスキャン、検索、索引化、更新のツールを公開し、Claude Desktop、Claude Code、GitHub Copilotなどのクライアントから利用できます。一部のツールは生成した内容をソースファイルやConfluenceに書き戻せます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
AI を活用したドキュメントの健全性モニターです。古くなったコードコメントを検出し、ナレッジの不足を見つけ、退職リスクを通知し、Slack、Teams、メールの会話を取り込みます。組織全体のナレッジを、検索可能で最新の状態に保ちます。
インストール
.NET 10 SDK が必要です。
dotnet tool install -g LivingDocs.Mcp
ツール
| ツール | ティア | 説明 |
|---|---|---|
scan_repo | 無料 | リポジトリをスキャンし、古くなったドキュメントファイルを陳腐化率(0~100%)とともに一覧表示します |
query_docs | 無料 | コードコメントのドキュメントを使って、コードベースに関する自然言語の質問に回答します |
index_repo | 無料 | リポジトリのセマンティック検索インデックスを作成または更新します |
suggest_doc_update | 無料 | Claude に古くなったドキュメントコメントの書き換えを依頼します |
write_back | 無料 | Claude が生成したドキュメントの更新内容をソースファイルに直接書き込みます |
detect_gaps | 無料 | ドキュメントがまったくないファイルを、コミットの頻度順に特定します |
departure_risk | 無料 | 重要なファイルへの貢献者が一人だけの作成者を特定します(バス係数) |
write_docs | Pro | 更新したドキュメントを docs/<File>.md に UTC タイムスタンプ付きで書き込み、完全な監査証跡を残します |
sync_confluence | Pro | 更新したドキュメントを Confluence ページに書き戻します |
scan_org | Pro | GitHub 組織内のすべてのリポジトリをスキャンし、組織全体のレポートを返します |
index_slack | Pro | Slack チャンネルをナレッジベースにインデックス登録し、query_docs で検索できるようにします |
index_teams | Pro | Microsoft Teams チャンネルをナレッジベースにインデックス登録します |
index_email | Pro | IMAP メールフォルダーをナレッジベースにインデックス登録します |
クイックテスト
livingdocs-mcp scan /path/to/your/repo
Scanning /path/to/repo ...
Files examined : 12
Stale docs : 2
[██████████] 100% src/Tax.cs
doc updated : 2024-09-01
code changed: 2025-01-15
[████░░░░░░] 40% src/Auth.cs
doc updated : 2024-12-01
code changed: 2025-01-28
セットアップ — Claude Desktop
~/Library/Application Support/Claude/claude_desktop_config.json を編集します。
{
"mcpServers": {
"livingdocs": {
"command": "livingdocs-mcp",
"env": {
"ANTHROPIC_API_KEY": "sk-ant-..."
}
}
}
}
Claude Desktop を再起動します。ツールは + メニューに表示されます。
セットアップ — Claude Code
プロジェクトのルートに .mcp.json ファイルを追加します。
{
"mcpServers": {
"livingdocs": {
"command": "livingdocs-mcp",
"env": {
"ANTHROPIC_API_KEY": "sk-ant-..."
}
}
}
}
または、グローバルに登録します。
claude mcp add livingdocs -s user -- livingdocs-mcp
その後、Claude Code のチャットで次を実行します。
scan this repo for stale docs → uses scan_repo
what does the Auth module do? → uses query_docs
suggest a fix for src/Tax.cs → uses suggest_doc_update
find undocumented files → uses detect_gaps
who owns the payments module? → uses departure_risk
セットアップ — GitHub Copilot(VS Code)
VS Code 1.99+ は、Copilot のエージェントモードで MCP サーバーをサポートしています。プロジェクトに .vscode/mcp.json ファイルを追加します。
{
"servers": {
"livingdocs": {
"type": "stdio",
"command": "livingdocs-mcp",
"env": {
"ANTHROPIC_API_KEY": "sk-ant-..."
}
}
}
}
Copilot のチャットパネルを開き、Agent mode に切り替えると、ツールを利用できます。
注記:
@livingdocsCopilot Extension エージェントはビルドおよびデプロイ済みですが、エージェント URL の登録に利用できる GitHub Copilot プランの提供待ちです。それまでは、上記の MCP サーバーパスを完全に利用できます。
セットアップ — GitHub Webhook
Webhook インテグレーションは、リポジトリ内でのすべての PR マージを監視し、古くなったドキュメントのレポートを PR コメントとして自動投稿します。オプションで Slack 通知を送信し、自動ドラフトボタンからワンクリックでドキュメントの修正案を生成できます。
1. LivingDocs.CopilotExt をデプロイする
Webhook ハンドラーは Web サービスとして動作します。任意のホスト(Railway、Fly.io、VPS など)にデプロイしてください。
# Docker
docker build -t livingdocs-ext .
docker run -p 8080:8080 \
-e ANTHROPIC_API_KEY=sk-ant-... \
-e GITHUB_WEBHOOK_SECRET=your-secret \
-e LIVINGDOCS_REPO_PATH=/path/to/local/repo \
livingdocs-ext
2. GitHub に webhook を登録する
リポジトリに移動し、Settings → Webhooks → Add webhook を選択します。
| フィールド | 値 |
|---|---|
| ペイロード URL | https://your-server/api/github/webhook |
| コンテンツタイプ | application/json |
| シークレット | 任意のランダムな文字列。GITHUB_WEBHOOK_SECRET として設定します |
| イベント | 個別のイベントを選択 → Pull requests のみチェック |
3. 必須の環境変数を設定する
| 変数 | 必須 | 説明 |
|---|---|---|
GITHUB_WEBHOOK_SECRET | はい | GitHub に入力したシークレットと一致させる必要があります |
LIVINGDOCS_REPO_PATH | はい | リポジトリのローカルクローンへの絶対パス |
GITHUB_TOKEN | 推奨 | repo スコープを持つ PAT。PR コメントの投稿と差分の取得に必要です |
ANTHROPIC_API_KEY | はい | AI による影響分析とセマンティックなドキュメントのマッピングに使用します |
SLACK_WEBHOOK_URL | 任意 | Slack の古いドキュメントに関するアラート用の受信 webhook URL |
SLACK_SIGNING_SECRET | 任意 | Auto-draft Slack ボタンを有効にします(Slack App → Basic Information) |
4. PR がマージされるたびに行われる処理
- GitHub が
action: closed, merged: trueを含むpull_requestイベントを送信します - LivingDocs が HMAC-SHA256 署名を検証します
- GitHub API から変更されたファイルを取得します
- ローカルリポジトリに対して古いドキュメントの検出を実行します
- Claude を呼び出して差分を分析し、影響を受ける
.mdドキュメントを特定します - レポートを PR コメントとして投稿します
- Auto-draft top doc ボタン付きの Slack 通知を送信します(設定されている場合)
Pro プラン
7 日間の無料トライアルをご利用いただけます — 開始時にクレジットカードは不要です。
Pro ツールにはライセンスキーが必要です。
export LIVINGDOCS_LICENSE_KEY=LD-xxxx-xxxx-xxxx
または、MCP 設定の env ブロックに追加します。
{
"mcpServers": {
"livingdocs": {
"command": "livingdocs-mcp",
"env": {
"ANTHROPIC_API_KEY": "sk-ant-...",
"LIVINGDOCS_LICENSE_KEY": "LD-xxxx-xxxx-xxxx"
}
}
}
}
7 日間の無料トライアル — LivingDocs Pro を開始できます(その後は月額 10 ドル)。
無料ツール — detect_gaps
ドキュメントコメントがまったくないソースファイルを見つけ、コミットのアクティビティに基づいて順位付けします。ドキュメント化されていないファイルの中で最も頻繁に変更されるものは、優先度の高いナレッジギャップです。つまり、頻繁に変更されるものの、説明が一度も追加されていないコードです。
Claude での使用方法:
detect_gaps on /path/to/repo
出力例:
Knowledge gaps in '/path/to/repo'
Files scanned: 42 | Documented: 28 | Undocumented: 14 (33%)
Top undocumented files by activity:
src/payments/retry.ts 42 commits last changed 2024-11-03 by Alice
src/auth/session.ts 31 commits last changed 2025-01-08 by Bob
To add docs to the highest-priority file, run:
suggest_doc_update on /path/to/repo src/payments/retry.ts
無料ツール — departure_risk
重要なファイルへの唯一または主要な貢献者である作成者を特定します。これは典型的な「バス係数 1」の問題です。1 人の貢献者がコミットの 60% 以上を占め、合計コミット数が 5 回以上のファイルは、知識が一人に集中している箇所としてフラグ付けされます。
Claude での使用方法:
departure_risk on /path/to/repo
出力例:
Departure risk analysis for '/path/to/repo'
Files analysed: 42 | High-risk files: 8
Authors with exclusive knowledge:
Alice Chen (6 files)
• src/auth/session.ts 12 commits (83% by Alice Chen)
• src/payments/retry.ts 9 commits (75% by Alice Chen)
Bob Smith (2 files)
• src/core/engine.go 22 commits (91% by Bob Smith)
To generate a handover doc for the riskiest file:
suggest_doc_update on /path/to/repo src/auth/session.ts
Pro ツール — write_docs
ファイル内の古いドキュメントコメントを検出し、Claude を使ってドキュメントを更新して、その結果をリポジトリ内の docs/<FileName>.md に追記します。実行するたびに UTC タイムスタンプが付与されます。実行ごとに日付付きのセクションが追加され、ドキュメントがどのように変化したかを完全に記録できます。
Claude での使用方法:
write_docs on /path/to/repo for src/Tax.cs
docs/Tax.md を作成するか、既存のファイルに追記します。
# Tax.cs — LivingDocs Documentation
## 2026-05-19
### TaxCalculator.Calculate
Calculates net tax payable given gross income, deductions, and the current financial year slab rates...
*Confidence: 92%*
---
Pro ツール — sync_confluence
ファイル内の古いドキュメントコメントを検出し、Claude を使ってドキュメントを更新して、対応する Confluence ページに書き込みます(存在しない場合は作成します)。
必須の環境変数:
| 変数 | 説明 |
|---|---|
CONFLUENCE_BASE_URL | Confluence Cloud の URL。例:https://mycompany.atlassian.net/wiki |
CONFLUENCE_EMAIL | Atlassian アカウントのメールアドレス |
CONFLUENCE_API_TOKEN | id.atlassian.com/manage-profile/security/api-tokens で取得した API トークン |
CONFLUENCE_SPACE_KEY | 対象スペースのキー。例:DEV(スペースの URL に表示されます) |
Claude での使用方法:
sync_confluence on /path/to/repo for src/Tax.cs
Pro ツール — scan_org
GitHub 組織内のすべてのリポジトリをスキャンし、組織全体の陳腐化レポートを返します。各リポジトリをシャロークローンし、古くなったドキュメントを検出してから、クリーンアップします。
必須の環境変数:
| 変数 | 説明 |
|---|---|
GITHUB_TOKEN | repo と read:org スコープを持つパーソナルアクセストークン |
Claude での使用方法:
scan_org on my-company
出力例:
Org: my-company — 8 repos scanned | 142 files | 5 stale docs
⚠️ Repos with stale docs
api-service — 3 stale / 48 files
- src/Auth.cs (100%)
- src/Tax.cs (80%)
✅ Clean repos (6)
frontend, user-service, admin-api, ...
Pro ツール — index_slack
Slack チャンネルからメッセージを取得し、リポジトリのナレッジインデックスに追加します。インデックス作成後は、query_docs がコードのドキュメントとともにSlack のディスカッションからも結果を返すため、「なぜ Postgres を選んだのか」を検索すると、コードコメントと、その決定が行われた Slack スレッドの両方が見つかります。
コンテキストを維持するため、スレッドはまとめて扱われます。ボットのメッセージ、参加・退出イベント、30 文字未満のメッセージは自動的に除外されます。
必須の環境変数:
| 変数 | 説明 |
|---|---|
SLACK_BOT_TOKEN | ボットトークン(xoxb-...)— Slack App → OAuth & Permissions |
必要なボットの OAuth スコープ: channels:history、channels:read
Claude での使用方法:
index_slack on /path/to/repo C1234ABCD
コードと Slack を横断して検索するには:
query_docs on /path/to/repo "how does the auth flow work?"
Pro ツール — index_teams
Graph API を介して Microsoft Teams チャンネルからメッセージを取得し、ナレッジインデックスに追加します。クライアント資格情報 OAuth を使用するため、ユーザーによるサインインは不要です。
必須の環境変数:
| 変数 | 説明 |
|---|---|
TEAMS_TENANT_ID | Azure AD テナント ID |
TEAMS_CLIENT_ID | Azure AD アプリのクライアント ID |
TEAMS_CLIENT_SECRET | Azure AD クライアントシークレット |
Azure AD アプリのセットアップ:
- Azure portal → App registrations でアプリを登録します
- アプリケーションのアクセス許可として
ChannelMessage.Read.Allを追加します - 管理者の同意を付与します
- クライアントシークレットを作成します
- Graph Explorer でチーム ID とチャンネル ID を取得します
Claude での使用方法:
index_teams on /path/to/repo <teamId> <channelId>
Pro ツール — index_email
IMAP メールボックスのフォルダーからメールを取得し、ナレッジインデックスに追加します。メールでのエンジニアリングに関する議論、インシデントレポート、アーキテクチャ上の決定を、コードのドキュメントとともに検索できるようになります。メールの引用(> で始まる行)は自動的に削除されます。
Gmail のアプリパスワード、Microsoft 365、その他の標準的な IMAP プロバイダーで動作します。
必須の環境変数:
| 変数 | 説明 |
|---|---|
IMAP_HOST | IMAP サーバーのホスト名(例:imap.gmail.com) |
IMAP_USERNAME | メールアドレス |
IMAP_PASSWORD | パスワードまたはアプリパスワード |
IMAP_PORT | ポート(デフォルトは 993) |
Gmail のセットアップ: アカウントのパスワードではなく、アプリパスワードを使用してください。2 段階認証プロセスが必要です。
Claude での使用方法:
index_email on /path/to/repo folder=Engineering
最良の結果を得るには、専用のフォルダー(例:Engineering/Architecture)を作成し、関連するメールをそのフォルダーに振り分けてください。
Enterprise ティア
Enterprise ライセンスは完全なオフライン環境で動作し、ライセンスの検証にインターネット接続は必要ありません。エアギャップ環境や規制対象の業界に最適です。
仕組み:
- 会社名とチームの規模を記載して、[[email protected]](mailto:[email protected]?subject=LivingDocs Enterprise) にお問い合わせください
- 署名済みの JWT ライセンスキーと請求書を受け取ります
LIVINGDOCS_LICENSE_KEY=<jwt>を設定します。検証はローカルで行われ、外部 API は呼び出されません
Enterprise の機能:
- オフラインでの JWT ライセンス検証(RSA-256 署名 — エアギャップネットワークで動作)
- Azure OpenAI のサポート — Anthropic の代わりに独自の Azure デプロイを使用できます
- 自己完結型バイナリ — .NET SDK は不要です。GitHub Releases からダウンロードできます
- 優先サポートとカスタム請求(年次または一括)
Azure OpenAI のセットアップ:
{
"mcpServers": {
"livingdocs": {
"command": "livingdocs-mcp",
"env": {
"LIVINGDOCS_LICENSE_KEY": "<enterprise-jwt>",
"AZURE_OPENAI_ENDPOINT": "https://your-resource.openai.azure.com",
"AZURE_OPENAI_API_KEY": "your-azure-key",
"AZURE_OPENAI_DEPLOYMENT": "gpt-4o"
}
}
}
}
環境変数
| 変数 | 必須 | 説明 |
|---|---|---|
ANTHROPIC_API_KEY | はい(AI 機能) | Anthropic API キー — Azure OpenAI を使用する場合は不要です |
LIVINGDOCS_LICENSE_KEY | はい(Pro/Enterprise) | Polar.sh の LD-xxxx キー、または Novaders LLP の JWT |
AZURE_OPENAI_ENDPOINT | Enterprise | Azure OpenAI リソースのエンドポイント |
AZURE_OPENAI_API_KEY | Enterprise | Azure OpenAI API キー |
AZURE_OPENAI_DEPLOYMENT | Enterprise | Azure OpenAI のデプロイ名。例:gpt-4o |
GITHUB_TOKEN | 推奨 | repo と read:org スコープを持つ PAT — scan_org、PR コメント、プライベートリポジトリで使用します |
GITHUB_WEBHOOK_SECRET | Webhook | HMAC シークレット — GitHub リポジトリの Webhook 設定に指定したシークレットと一致させる必要があります |
LIVINGDOCS_REPO_PATH | Webhook | Webhook ハンドラーがスキャンするローカルリポジトリのクローンの絶対パス |
CONFLUENCE_BASE_URL | sync_confluence | Confluence Cloud の URL。例:https://mycompany.atlassian.net/wiki |
CONFLUENCE_EMAIL | sync_confluence | Atlassian アカウントのメールアドレス |
CONFLUENCE_API_TOKEN | sync_confluence | Atlassian API トークン |
CONFLUENCE_SPACE_KEY | sync_confluence | Confluence のスペースキー。例:DEV |
SLACK_WEBHOOK_URL | 任意 | PR マージ後に古いドキュメントに関する Slack アラートを送信するための受信 Webhook URL |
SLACK_SIGNING_SECRET | 任意 | Slack 通知に「自動下書き」ボタンを表示します(Slack App → Basic Information) |
SLACK_BOT_TOKEN | index_slack | channels:history と channels:read スコープを持つボットトークン(xoxb-...) |
TEAMS_TENANT_ID | index_teams | Azure AD テナント ID |
TEAMS_CLIENT_ID | index_teams | Azure AD アプリ(クライアント)ID |
TEAMS_CLIENT_SECRET | index_teams | Azure AD クライアントシークレット |
IMAP_HOST | index_email | IMAP サーバーのホスト名。例:imap.gmail.com |
IMAP_USERNAME | index_email | メールアドレス/IMAP ログイン名 |
IMAP_PASSWORD | index_email | パスワードまたはアプリパスワード |
IMAP_PORT | index_email | IMAP ポート — 既定値は 993(SSL)です |
DO_NOT_TRACK | 任意 | 匿名テレメトリを無効にするには 1 を設定します(下記参照) |
LIVINGDOCS_TELEMETRY | 任意 | 匿名テレメトリを無効にするには off を設定します(下記参照) |
テレメトリ
LivingDocs は、ユーザーがどのセットアップ手順(インストール、サーバーの起動、最初のインデックス作成の成功、アップグレードの案内が表示されたタイミング)を完了したかを把握するため、少量の匿名使用状況データを送信します。各イベントに含まれるのはランダムなインストール ID、アプリのバージョン、OS のみです。コード、ファイルパス、リポジトリ名、個人データが送信されることはありません。
オプトアウトするには、次のいずれかの環境変数を設定します。
DO_NOT_TRACK=1
# or
LIVINGDOCS_TELEMETRY=off
サポート対象の言語
C#、TypeScript、JavaScript、Python、Go
ソースからビルドする
git clone https://github.com/dinesh-mys/livingdocs
cd livingdocs
make build
make test
make scan REPO=/path/to/your/repo
アーキテクチャ
┌──────────────────────────────────────────────────────────────┐
│ Interfaces │
│ Claude Desktop │ Claude Code │ VS Copilot │ GitHub Webhook │
└───────┬──────────────────────────────────────┬───────────────┘
│ │
livingdocs-mcp LivingDocs.CopilotExt
(MCP server) /api/github/webhook
│ /api/slack/actions
│ /api/copilot/chat (SSE)
└──────────────────┬─────────┘
LivingDocs.Core
┌────────────────────────┴────────────────────────────────┐
GitScanner DocExtractor StaleDocDetector ClaudeService
GapDetector DepartureRisk IndexService DocWriterService
SlackConnector TeamsConnector EmailConnector ConfluenceService
プロジェクト
| プロジェクト | 用途 |
|---|---|
LivingDocs.Core | 共通エンジン — git スキャン、ドキュメント抽出、古いドキュメントの検出、Claude API、ナレッジギャップと離職リスクの分析、Slack/Teams/Email コネクター、Confluence 同期、組織スキャン |
LivingDocs.McpServer | CLI + MCP サーバー — NuGet で LivingDocs.Mcp として公開 |
LivingDocs.CopilotExt | GitHub Webhook ハンドラー、Slack 通知と承認フロー、Copilot Extension SSE エンドポイント |
LivingDocs.Tests | xUnit テストスイート(94 件のテスト) |
フィードバックとサポート
- バグ報告 → GitHub Issues
- 機能リクエスト → GitHub Issues
- 質問とアイデア → GitHub Discussions
ライセンス
MIT — LICENSE を参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。