AnchorDB について
AnchorDBは、AIコーディングエージェント向けのローカルコードメモリMCPサーバーです。ファイル、行範囲、シンボルにメモを結び付け、コード変更後も位置を再解決します。
主な機能
- 01ファイル、範囲、シンボルへのメモの紐付け
- 02コード移動やリファクタリング後の追跡
- 03古いアンカーの候補位置の検索
- 04アンカー履歴と移動理由の確認
- 05SQLiteへのローカル保存
活用シーン
- 01コード編集前に設計背景を確認
- 02エージェントのセッション間で知見を引き継ぐ
- 03関連コードにデバッグメモを残す
- 04リファクタリングで移動したメモを整理
MCP 対応
AnchorDBはコードコンテキストとアンカー管理のツールをMCPクライアントに公開し、古いアンカーの検索や移動にも対応します。サーバーはローカルのSQLiteデータベースを読み書きします。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
docker run -i --rm ghcr.io/jolovicdev/anchor-db:1.0.6ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ghcr.io/jolovicdev/anchor-db:1.0.6stdioツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
AnchorDB
AI コーディングエージェントのためのコードメモリーです。 AnchorDB は、特定のコード(ファイル、行範囲、シンボル)に紐づけたメモを保存し、コードが移動してもメモが紐づいたままになる MCP サーバーです。あるセッションでエージェントが蓄積したコンテキストは、次のセッションでもそのまま残ります。
Claude Code、Cursor、または任意の Model Context Protocol ホストから接続すると、エージェントは編集前に回避策が存在する 理由 を確認でき、次の担当者に向けてメモを残せます。すべてローカルに保たれます。SQLite ファイル 1 つと Git リポジトリだけで動作し、ネットワークへの接続もアカウントも不要です。
curl -fsSL https://raw.githubusercontent.com/jolovicdev/anchor-db/master/install.sh | sh
claude mcp add anchordb -- anchordb-mcp --db ~/.anchordb/anchor.db
アカウントも API キーも不要で、バックグラウンドで実行するものもありません。必要なのは git だけです。Linux、macOS、Windows 向けのビルド済みバイナリのほか、コンテナーイメージとGo でのインストールも利用できます。
同じデータにアクセスする 3 つの方法があります。
anchordb-mcp | コーディングエージェント向けの MCP サーバーです。SQLite と直接通信するため、デーモンは不要です。 |
anchorctl | シェル、スクリプト、CI 向けのコマンドラインクライアントです。 |
anchord | ブラウザーでコードとメモを読むための HTTP API とウェブビューアーです。 |
理由
チャット履歴は、コードベースについて学んだことを保存する場所として適していません。履歴は流れて消え、何にも紐づいておらず、次のセッションはまっさらな状態で始まります。
ソースコード内のコメントのほうが適していますが、どこにでもコメントを残せるわけではありません。また、重要なことの多くはファイルに書くべきではありません。修正しなかったバグの再現手順、明白に見えるリファクタリングが間違っている理由、誰かがこのリトライループに手を加えたときに起きた問題、作業を中断した場所などです。
AnchorDB は、コード内ではなくコードのそばにメモを保存し、コードが移動するとメモも追従させます。関数にピン留めしたメモは、関数名を変更したり、ファイル内の順序を入れ替えたり、別のパッケージに移動したりしても、その関数に紐づいたままです。
ユースケース
- ファイルやシンボルを編集する前にコンテキストを読むコーディングエージェント
- エージェントの引き継ぎ。ある実行で次の実行に向けた詳細なメモを残す場合
- 長時間にわたるデバッグセッションで、再現手順や調査結果をコードに紐づけて保存する場合
- 請求処理、認証、マイグレーション、リトライロジックなど、リスクの高い箇所のレビュー用メモ
- 判断の理由が、その判断を下した人より長く残るあらゆるコードベース
仕組み
AnchorDB は anchors を保存します。
各アンカーには、次の情報が含まれます。
- リポジトリのメタデータ
- メモ本文と種類
- ファイルパス
- 行と列の範囲
- 選択されたテキストとその周辺コンテキスト
- 任意のシンボルパス
ファイルが変更されると、AnchorDB は保存された範囲、テキストのコンテキスト、シンボル情報を使ってアンカーの位置を再解決します。Tree-sitter はシンボルの抽出と再配置の精度を高めますが、なくてもシステムは動作します。
位置の解決では、確度の高い方法から順に試し、妥当な結果が得られた時点で終了します。
- 完全一致の範囲 — 記録された行に、記録されたテキストがそのまま残っています。
- Git による行マッピング — 各アンカーには、行番号の基準となったコミットが記録されるため、
git diffから行の移動先を正確に特定できます。テキストマッチングでは推測しかできない場合でも、この方法なら確定的に特定できます。重複ブロックのうち正しいほうを見つけられるか、最初に見つかったブロックを選んでしまうかの違いもここにあります。適用前に必ず保存されたテキストと照合するため、誤った場所に紐づけることなく安全に精度が低下します。 - シンボルの一致 — 同じシンボルパスを探し、本文がどの程度残っているかに基づいて評価します。
- テキストとコンテキストの一致 — 記録されたテキストをファイル内の別の場所から探し、周辺のコンテキストに基づいて順位付けします。
どの方法でも位置を特定できないアンカーは stale としてマークされ、最後に判明している位置が保持されます。差分を利用できるため、古くなったアンカーは、コードが その場で書き換えられた のか、完全に削除された のかを示せます。解決処理はパスごとに行われ、失敗は個別に切り離されるため、位置を特定できないファイルがあっても、リポジトリの残りの同期は止まりません。
この機能が存在する前に書き込まれたアンカーには基準コミットが記録されていないため、Git の手順を省略し、テキストマッチングに進みます。
トリアージ
古いアンカーは行き止まりではなく、キューです。AnchorDB は、それぞれのアンカーが現在属している可能性のある場所を信頼度スコアとコードプレビューとともに順位付けし、候補の 1 つを承認できるようにします。
anchorctl anchor stale --repo-id repo_123
anchorctl anchor candidates --id anchor_123
anchorctl anchor relocate --id anchor_123 --candidate 0
再配置では、ファイルから該当範囲を再読み込みし、新しい位置でシンボルを再特定して、現在のコミットにアンカーを付け直します。これにより、次の自動処理で再び Git 上の移動を追跡できます。候補にない場所に付け直すには、明示的な範囲を指定します。
anchorctl anchor relocate --id anchor_123 --start-line 42 --end-line 58
同じ一連の操作は MCP(anchor_stale、anchor_candidates、anchor_relocate)を通じてエージェントからも利用できるため、コードをリファクタリングした実行で、残されたメモにアンカーを付け直せます。ウェブビューアでは、各古いアンカーのレビュー用パネルとして表示されます。
履歴
移動、古いアンカー化、更新はすべて理由と信頼度とともに記録され、その履歴はどこからでも確認できます。
anchorctl anchor events --id anchor_123
「このメモがここにあるのはなぜか?」に答えるものです。たとえば、created、続いて moved · git line mapping、そして stale · the anchored lines were deleted or restructured のように記録されます。変更のない解決処理は何も記録しないため、履歴には有用な情報だけが残ります。
パスは常にリポジトリ相対として解釈され、リポジトリ内に制限されます。ルートから抜け出そうとするリクエスト、リポジトリの外に出るシンボリックリンクをたどるリクエスト、.git を読み取ろうとするリクエストは拒否されます。同じ理由で、コマンドラインオプションとして解析される可能性のある Git の参照も拒否されます。
組み込みのシンボル抽出機能:
- Go
- Python
- JavaScript
- TypeScript
インストール
実行時に必要なのは git だけです。各リリースには Linux、macOS、Windows 用のビルド済みバイナリが含まれているため、Go のツールチェーンが必要なのはソースからビルドする場合のみです。
コーディングエージェントから AnchorDB を使うには、anchordb-mcp だけで十分です。anchorctl と anchord を追加すると、コマンドラインクライアントとウェブビューアを利用できます。
バイナリをダウンロードする
Linux と macOS:
curl -fsSL https://raw.githubusercontent.com/jolovicdev/anchor-db/master/install.sh | sh
このコマンドは、お使いのプラットフォーム用のアーカイブを取得し、リリースのチェックサムと照合して検証したうえで、~/.local/bin にインストールします。別の場所にインストールするには ANCHORDB_INSTALL_DIR を設定し、バージョンを固定するには ANCHORDB_VERSION を設定します。
手動で行う場合は、リリースページからお使いのプラットフォーム用のアーカイブを取得して展開し、バイナリを PATH 上に移動します。各リリースの checksums.txt には、すべてのアーカイブのチェックサムが記載されています。
Go を使う場合
Go 1.25 以降が必要です。
go install github.com/jolovicdev/anchor-db/cmd/anchordb-mcp@latest
go install github.com/jolovicdev/anchor-db/cmd/anchorctl@latest
go install github.com/jolovicdev/anchor-db/cmd/anchord@latest
ローカルのチェックアウトから:
go install ./cmd/anchordb-mcp ./cmd/anchorctl ./cmd/anchord
インストール後にコマンドが見つからない場合は、Go の bin ディレクトリが PATH に含まれていません。
go env GOBIN # if empty, binaries are in $(go env GOPATH)/bin
export PATH="$PATH:$(go env GOPATH)/bin"
Docker を使う場合
docker run --rm -i \
-v ~/.anchordb:/data \
-v /path/to/repo:/path/to/repo \
ghcr.io/jolovicdev/anchor-db:latest
アンカーにはリポジトリの絶対パスが記録されるため、各リポジトリはホスト上と同じパスにマウントしてください。そうしないと、データベースに保存されたパスがコンテナから参照できるものと一致しません。コンテナを使う価値があるのは CI やサンドボックスの場合だけです。それ以外では、ホストにバイナリを置くほうが簡単です。
検証
anchordb-mcp --version
データベースの保存場所
1 つのデータベースで複数のリポジトリを管理できます。ユーザーごとに固定の保存場所を用意すると便利です。
mkdir -p ~/.anchordb
以下のコマンドでは ~/.anchordb/anchor.db を使用します。リポジトリの外に置いてください。これはローカルの状態であり、ソースではないため、Git に含めるものではありません。
コーディングエージェントでインストールする
エージェントに作業を任せたい場合は、このリポジトリを指定して 「これをインストールして」と伝えてください。以下の手順は、そのまま実行できるように書かれています。
1. 前提条件を確認します。 go version(1.25 以降が必要です)と git --version を実行します。Go がインストールされていない場合は、ツールチェーンをインストールする前に作業を止めて確認してください。
2. MCP サーバーをインストールします。
go install github.com/jolovicdev/anchor-db/cmd/anchordb-mcp@latest
3. バイナリの場所を確認します。 go env GOBIN を実行します。空の場合は $(go env GOPATH)/bin を使います。シェルのプロファイルを編集する代わりに、手順 5 では絶対パスを使用してください。
4. データベースのパスを選びます。 mkdir -p ~/.anchordb を実行し、~/.anchordb/anchor.db を使用します。ユーザーのリポジトリ内には置かないでください。
5. サーバーを登録します。 Claude Code の場合:
claude mcp add anchordb -- /absolute/path/to/anchordb-mcp --db /absolute/path/to/anchor.db
mcpServers JSON を使用するホストでは、Claude Code のセットアップにある項目を上書きせずにマージしてください。絶対パスのみを使用してください。ほとんどのホストは ~ を展開しません。
6. 動作を確認します。 anchordb-mcp --version でバージョンが表示されるはずです。ホストを再起動し、ツール一覧に anchor_context が表示されることを確認してください。表示されない場合、設定が読み込まれていません。実行中のホストの設定を編集したことと、ホストが完全に再起動されたことを確認してください。
7. リポジトリを登録します。 repo_add ツールを使うか、次のコマンドを実行します。
anchorctl repo add --name <name> --path /path/to/repo
返されたリポジトリ ID をユーザーに伝えてください。ほとんどのコマンドでその ID が必要です。
効果的な使い方
編集する前に読みます。ファイルを変更する前に、リポジトリ ID とファイルパスを指定して anchor_context を呼び出してください。アンカーには、コードだけではわからない情報を記録します。たとえば、回避策が存在する理由、関数が維持する不変条件、前回何が壊れたかなどです。これを省くと、同じバグが再び入り込むことになります。
長く有用で、自明ではない情報を記録します。よいアンカーの例:型では強制されない制約、魅力的に見える単純化が誤りである理由、修正しなかったバグの再現手順、作業を途中で止める際の引き継ぎ情報などです。author には、たとえば agent://claude のように、自分を識別できる値を設定してください。
コードにすでに書かれている内容は省きます。関数シグネチャを言い換えただけのメモはノイズとなり、重要なアンカーを埋もれさせます。
壊したアンカーは再度紐付けます。リファクタリングの後、リポジトリに対して anchor_stale を呼び出してください。anchor_candidates で新しい配置候補を確認し、anchor_relocate で候補を採用するか、より適切な場所がわかる場合は行範囲を明示してください。古いアンカーを残しておくと、次回の実行が前回よりも悪くなります。
データベースをコミットしないでください。また、作成した本人でないアンカーを削除する場合は、事前に確認してください。
クイックスタート
サーバーを起動します。
anchord --db ~/.anchordb/anchor.db
リポジトリを登録します。
anchorctl repo add --name demo --path /path/to/repo
アンカーを作成します。
anchorctl anchor create \
--repo-id repo_123 \
--ref WORKTREE \
--path internal/service/run.go \
--start-line 42 \
--start-col 1 \
--end-line 49 \
--end-col 2 \
--kind warning \
--title "Retry must stay idempotent" \
--body "This path duplicated writes during incident 2026-02-14." \
--author human://alice
ビューアーを開きます。
http://127.0.0.1:7740/
MCP サーバーを起動します。
anchordb-mcp --db ~/.anchordb/anchor.db
CLI
anchorctl は、実行中の HTTP サーバーと通信します。
ベース URL は ANCHOR_DB_URL から読み取ります。デフォルト:
http://127.0.0.1:7740
リポジトリのコマンド
リポジトリを追加します。
anchorctl repo add --name demo --path /path/to/repo
リポジトリを一覧表示します。
anchorctl repo list
リポジトリを 1 件取得します。
anchorctl repo get --id repo_123
リポジトリを 1 件同期します。
anchorctl repo sync --id repo_123
リポジトリを 1 件削除します。
anchorctl repo remove --id repo_123
アンカーのコマンド
アンカーを一覧表示します。
anchorctl anchor list --repo-id repo_123 --path internal/api/server.go --limit 20 --offset 0
アンカーを 1 件取得します。
anchorctl anchor get --id anchor_123
アンカーを作成します。
anchorctl anchor create \
--repo-id repo_123 \
--ref WORKTREE \
--path internal/api/server.go \
--start-line 40 \
--start-col 1 \
--end-line 52 \
--end-col 2 \
--kind warning \
--title "Keep request validation strict" \
--body "This handler should reject empty repo_id values." \
--author human://alice
アンカーのメタデータを更新します。
anchorctl anchor update \
--id anchor_123 \
--kind handoff \
--title "Next step" \
--body "Trace the retry path before changing the timeout logic." \
--author agent://planner \
--tags billing,handoff
アンカーをアーカイブします。
anchorctl anchor close --id anchor_123
アンカーを再度開きます。
anchorctl anchor reopen --id anchor_123
アンカーの解決を再実行します。
anchorctl anchor resolve --id anchor_123
コンテキスト、コメント、検索
ファイルまたはシンボルのコンテキストを取得します。
anchorctl context --repo-id repo_123 --ref WORKTREE --path internal/api/server.go --symbol "*Server.handleRepos"
コメントを一覧表示します。
anchorctl comment list --anchor-id anchor_123
コメントを追加します。
anchorctl comment add --anchor-id anchor_123 --author human://alice --body "Confirmed in production replay."
全文検索:
anchorctl search --query retry --repo-id repo_123 --path internal/api/server.go
クエリはリテラルテキストとして扱われるため、C++、don't、retry (v2) のように句読点を多く含む語句も安全に検索できます。複数の語句は AND で結合され、末尾に * を付けると前方一致検索になります。
anchorctl search --query "retry idempot*" --repo-id repo_123
すべての CLI コマンドは JSON を返します。
HTTP API
デフォルトのリッスンアドレス:
http://127.0.0.1:7740
エンドポイント
GET /healthGET /v1/reposPOST /v1/reposGET /v1/repos/{repo_id}POST /v1/repos/{repo_id}/syncDELETE /v1/repos/{repo_id}GET /v1/anchorsPOST /v1/anchorsGET /v1/anchors/{anchor_id}PATCH /v1/anchors/{anchor_id}POST /v1/anchors/{anchor_id}/closePOST /v1/anchors/{anchor_id}/reopenPOST /v1/anchors/{anchor_id}/resolveGET /v1/anchors/{anchor_id}/commentsPOST /v1/anchors/{anchor_id}/commentsGET /v1/anchors/{anchor_id}/eventsGET /v1/anchors/{anchor_id}/candidatesPOST /v1/anchors/{anchor_id}/relocateGET /v1/staleGET /v1/contextGET /v1/searchGET /view
一般的なリクエスト
リポジトリを作成します:
POST /v1/repos
Content-Type: application/json
{
"name": "demo",
"path": "/path/to/repo"
}
レスポンス:
{
"id": "repo_123",
"name": "demo",
"root_path": "/path/to/repo",
"default_ref": "abc123...",
"created_at": "2026-03-11T10:00:00Z",
"updated_at": "2026-03-11T10:00:00Z"
}
アンカーを作成します:
POST /v1/anchors
Content-Type: application/json
{
"repo_id": "repo_123",
"ref": "WORKTREE",
"path": "internal/service/run.go",
"start_line": 42,
"start_col": 1,
"end_line": 49,
"end_col": 2,
"kind": "warning",
"title": "Retry must stay idempotent",
"body": "This path duplicated writes during incident 2026-02-14.",
"author": "human://alice",
"tags": ["billing", "warning"]
}
アンカーを更新します:
PATCH /v1/anchors/anchor_123
Content-Type: application/json
{
"kind": "handoff",
"title": "Next step",
"body": "Check the retry path before changing timeout handling.",
"author": "agent://planner",
"tags": ["billing", "handoff"]
}
アンカーを閉じる、再開する、または解決します:
POST /v1/anchors/anchor_123/close
POST /v1/anchors/anchor_123/reopen
POST /v1/anchors/anchor_123/resolve
ファイルのコンテキストを読み取ります:
GET /v1/context?repo_id=repo_123&ref=WORKTREE&path=internal/service/run.go&symbol=*Runner.Run
全文検索:
GET /v1/search?query=retry&repo_id=repo_123&path=internal/service/run.go&limit=20&offset=0
コメントを追加します:
POST /v1/anchors/anchor_123/comments
Content-Type: application/json
{
"author": "human://alice",
"body": "Confirmed in staging replay."
}
すべての API レスポンスは JSON です。検証に失敗した場合は、次の内容が返されます:
{
"error": "message"
}
MCP
anchordb-mcp は、MCP stdio 経由で同じデータを提供し、SQLite データベースを直接読み取ります。anchord の実行は不要です。
実行します:
anchordb-mcp --db ~/.anchordb/anchor.db
Claude Code のセットアップ
Linux または WSL では、Anthropic は現在、Claude Code の 2 つのインストール方法を案内しています:
- ネイティブインストーラー:
curl -fsSL https://claude.ai/install.sh | bash - npm インストーラー:
npm install -g @anthropic-ai/claude-code
Claude Code をインストールしたら、stdio MCP サーバーとして AnchorDB を追加します:
claude mcp add anchordb --scope project -- /absolute/path/to/anchordb-mcp --db /absolute/path/to/anchor.db
続けて実行する場合に便利なコマンド:
claude mcp list
claude mcp get anchordb
Claude Code 内で /mcp を使うと、設定済みの MCP サーバーとそのステータスを確認できます。
注意事項:
--scope projectは、現在のプロジェクトの.mcp.jsonに設定を保存します--scope localは、ローカルのプロジェクト設定内だけに保存します--scope userは、お使いのマシン上のすべてのプロジェクトで利用できるようにします--以降はすべて、実際のサーバーコマンドとその引数です
同等の .mcp.json エントリ:
{
"mcpServers": {
"anchordb": {
"command": "/absolute/path/to/anchordb-mcp",
"args": ["--db", "/absolute/path/to/anchor.db"]
}
}
}
接続すると、コーディングエージェントは次の操作を行えます:
- ファイルを編集する前にアンカーのコンテキストを読み取る
- 過去のメモやコメントを検索する
- デバッグ中にアンカーを作成または更新する
- 次回の実行に向けた引き継ぎメモを残す
MCP ツール
repo_addanchor_reposrepo_getrepo_syncrepo_removeanchor_contextanchor_createanchor_updateanchor_closeanchor_reopenanchor_resolveanchor_commentanchor_searchanchor_text_searchanchor_eventsanchor_staleanchor_candidatesanchor_relocateanchor_getanchor_commentsanchor_file_view
MCP リソース
anchordb://reposanchordb://repo/{repo_id}anchordb://context/{repo_id}{?ref,path,symbol}anchordb://search{?query,repo_id,path,symbol,kind,limit,offset}anchordb://anchors/{repo_id}{?path,symbol,status,limit,offset}anchordb://file/{repo_id}{?ref,path}anchordb://events/{anchor_id}anchordb://anchor/{anchor_id}anchordb://comments/{anchor_id}
ビューアー
ウェブビューアーには、次の内容が表示されます:
- リポジトリのファイル一覧
- アンカー範囲がハイライトされた選択中のファイル
- アンカーカードとスレッド形式のコメント
- そのファイルの Git ワーキングツリーの差分
ハイライトされた行は、アンカーが対象とする範囲を示します。差分パネルには、選択中のファイルの実際の Git 差分が表示されます。
ストレージ
アンカー、コメント、履歴、全文検索インデックスなど、すべてが 1 つの SQLite データベースに保存されます。サーバーも外部依存関係もなく、データがマシンの外に送信されることもありません。
3 つのバイナリはすべて同じファイルを読み取ります:
anchord --db ~/.anchordb/anchor.db
anchorctl repo list # via anchord
anchordb-mcp --db ~/.anchordb/anchor.db
リポジトリの外に保存してください。これはローカルの状態データであり、ソースではありません。
書き込みが行われていないときにファイルをコピーするか、sqlite3 anchor.db ".backup anchor-backup.db" を使ってバックアップしてください。
トラブルシューティング
| 症状 | 原因 | 対処方法 |
|---|---|---|
command not found: anchordb-mcp | Go の bin ディレクトリが PATH に含まれていません | export PATH="$PATH:$(go env GOPATH)/bin" を実行するか、絶対パスを使用してください |
| MCP ホストにサーバーが表示されない | 設定が再読み込みされていません | ホストを完全に再起動し、claude mcp list を確認してください |
not a git repository | パスが Git チェックアウトではありません | git init を実行するか、実際のリポジトリのルートを指定してください |
path escapes repository root | パスがリポジトリの外にあるか、シンボリックリンクがリポジトリの外を指しています | リポジトリ相対パスを使用してください |
invalid git ref | 参照名が - で始まっています | コミット SHA、ブランチ名、または WORKTREE を使用してください |
リファクタリング後、アンカーが stale と表示される | コードが自動照合できないほど移動しています | トリアージループを実行してください:anchorctl anchor stale |
anchorctl で connection refused が発生する | anchord が実行されていません | anchord を起動するか、デーモンが不要な MCP ツールを使用してください |
| 完全一致するフレーズで検索しても結果がない | 用語は AND 条件で検索されます | 検索語を減らすか、接頭辞を使用してください:retry idempot* |
バージョン管理
AnchorDB はセマンティックバージョニングに従います。3 つのバイナリはすべて同じ バージョンを報告します:
anchord --version
anchorctl version
anchordb-mcp --version
データベーススキーマは、開くと自動的に最新の状態へ移行します。以前のバージョンで作成されたアンカーも引き続き機能します。Git を考慮した解決機能が導入される前に書き込まれたアンカーは、正常に解決されるまではテキスト照合にフォールバックします。
タグ付きリリースごとに、対象プラットフォーム上でバイナリをビルドし、すべてのアーカイブを網羅する
checksums.txt を公開し、ghcr.io/jolovicdev/anchor-db に対応するマルチアーキテクチャイメージをプッシュします。
ライセンス
MIT。詳細は LICENSE を参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。