Whetstone について
Whetstoneは、AIシステムの評価と改善に取り組む研究者や開発者向けの、検証器に基づく研究フレームワーク兼昇格ゲートです。非公開試験、漏洩対策、厳密な採点証拠、署名付きの PASS/HOLD/BLOCK レシートを備えています。
主な機能
- 01検証器による採点と昇格ゲート
- 02進化する試験バンクと漏洩隔離
- 03CLI、アダプター、プラグ可能な検証器
- 04検証可能な証拠付き署名レシート
- 05評価・分析向けのステートレスツール
活用シーン
- 01モデルやエージェントのバージョン昇格判定
- 02採点前の評価データ漏洩検出
- 03候補システムとベースラインの比較
- 04署名レシートによる採点結果の監査
MCP 対応
公開 HTTP MCP エンドポイントから、セッションレス方式と初期化方式のプロトコルに対応した Whetstone のツールを MCP クライアントに提供します。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://whetstone.cyberelf.link/mcpclaude mcp add --transport http link-cyberelf-whetstone-tools https://whetstone.cyberelf.link/mcp{"mcpServers":{"link-cyberelf-whetstone-tools":{"type":"http","url":"https://whetstone.cyberelf.link/mcp"}}}Cursor で開く{"servers":{"link-cyberelf-whetstone-tools":{"type":"http","url":"https://whetstone.cyberelf.link/mcp"}}}VS Code で開く{"mcpServers":{"link-cyberelf-whetstone-tools":{"type":"http","url":"https://whetstone.cyberelf.link/mcp"}}}{"mcpServers":{"link-cyberelf-whetstone-tools":{"serverUrl":"https://whetstone.cyberelf.link/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
14| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| exam | array | はい | 試験行。各行には item_id(または id)と、prompt/content/input/task/question/expression のいずれかが必要です。 |
| policy | object | いいえ | 明示的な昇格ポリシー。省略したフィールドには、ドキュメントに記載されたデフォルト値が適用されます。 |
| policy.min_gains | integer | いいえ | |
| policy.max_regressions | integer | いいえ | |
| policy.confidence_alpha | number | いいえ | |
| policy.require_retained_probe | boolean | いいえ | |
| domains | object | いいえ | 任意の item_id -> ドメインラベルのマッピング。 |
| baseline | object | はい | ベースラインシステムの item_id -> 真偽値の合格/不合格結果。 |
| exposure | array | いいえ | 申告された漏えい行。識別情報/内容フィールドと、任意の source または path を含みます。 |
| candidate | object | はい | 候補システムの item_id -> 真偽値の合格/不合格結果。 |
| baseline_name | string | いいえ | |
| candidate_name | string | いいえ | |
| retained_probe | object | いいえ | ペアのコホートと併せて確認する、任意の保持能力の結果。 |
| retained_probe.items | integer | はい | |
| retained_probe.base_verified | integer | はい | |
| retained_probe.candidate_verified | integer | はい | |
| fingerprint_max_n | integer | いいえ | |
| similarity_threshold | number | いいえ | |
| enable_text_similarity | boolean | いいえ | |
| enable_behavioral_fingerprint | boolean | いいえ |
詳細
whetstone
互いを研ぎ合う二人の学習者:昇格のたびに実力を証明しなければならない生徒と、判定する資格を得るために実力を証明しなければならない試験官 — すべてのラベルは、実質的に誤り得ないオラクルに裏付けられています。
whetstone は、ひとつのルールを中心に構築された自己改善型の研究ハーネスです。厳密な何かが反証を試みるまでは、何も信じません。 検証器の審査を通過した生徒(ローカルの4Bモデル上のQLoRAアダプター)は、根本的なオラクルから作られた経験で学習します。オラクルには、グラフの全数列挙、シミュレーテッドアニーリングによる反例探索、厳密なゲームシミュレーター、モンテカルロ合意、Stockfish、KataGoがあります。そして、生徒が学習に使った項目を隔離し、どの項目が識別力を持つかを学習し、飽和した項目を廃止し、廃止した試験を学習用の燃料として戻す、進化する試験バンクで評価されます。
主な結果(手法、帰無結果、証拠を含む全記録は FINDINGS.md、成果物は results/ を参照):
- 未解決だった有限予想を決着させました。次数の降順に基づく貪欲彩色は、連結な三角形を含まない非二部グラフでは最適ではありません(最小反例:頂点11個、辺13本 — アニーリングで発見し、最小化して厳密に検証)。
- 検証器の適用範囲による後退を定量化しました。n<=6で精度1.0だった予想121件のうち99件は、n=7/8では誤りです。受け入れ範囲はストレステスト範囲より厳密に内側に置く必要があります。そうしなければ、自己学習ループは成果物で学習してしまいます。
- 顕著性と関連性を測定しました。反実仮想的に有用な記憶が最も顕著な記憶である割合は4%にすぎませんが、クエリに応じた関連性スコアでは81%です。
- 完全無人の継続学習ループを実行しました。ゲートを通過した1ラウンドで、コールドスタートの0/8から8/8に到達しました。複数ドメインでの生成では、試験官自身が明らかにしたドメイン横断の最前線を突破しました(ベースの1/33から第2世代の4/33へ、MISで初の合格)。
- 同一試験バンクを使ったローカルでのスケール比較を完了しました。標準のQwen2.5 1.5B->32Bは8->20/48に上昇しましたが、標準モデルはすべてグラフ修復で0/24でした。タスク別ルーティングを行う検証器学習済みのFastContext-4Bは28/48を記録し、ベースの22/48を上回ってPASSを獲得しました(改善6件、後退0件、厳密なp=.03125)。同じ結果が3回連続で再現されました。
- 新規Stockfish/KataGoの例1,313件で、軌跡が重複しない初のGen-4エンジン生徒を学習しました。新規ロードを3回行った結果は7/69から8/69へ向上しましたが、項目単位のゲートは昇格を正しくBLOCKEDと判定しました。改善3件、後退2件、厳密なp=1.0で、過去に安定していた項目の後退も1件含まれます。昇格は主張していません。
- 非公開の昇格試験バンクは、意図的にこのリポジトリに含めていません。公開すれば、将来のモデルがそれを学習に使えるためです — これはインターネット規模での漏洩防止ルールです。
AGPL-3.0でライセンスされています。商用ライセンスは作者から取得できます。
依存関係を最小限に抑えたコア(CLIとステートレスなツールボックス)は
pip install . でインストールできます。オプションの統合機能は agents、engines、local-models にまとめられています。すべての統合機能をインストールするには、pip install ".[all]" を実行してください。
公開HTTP MCPエンドポイントは、セッションレスの 2026-07-28
プロトコル(server/discover に加え、リクエストごとのメタデータとヘッダー)と、initializeベースの 2025-06-18、2025-03-26、2024-11-05 リビジョンの両方に対応しています。stdlibサーバーは引き続き依存関係なしで動作します。mcp>=2,<3 が必要なのは、SDKクライアントとstdioアダプターのみです。
タグ付きリリースには、アーカイブからビルドしたwheel、ソースアーカイブ、SPDX 2.3 SBOM、SHA256SUMS が含まれます。GitHub Actionsは、すべてのリリース成果物にビルド来歴のアテステーションを付与します。v0.8.0については、次のコマンドでwheelをリポジトリと照合してください。
gh release download v0.8.0 -R CarlSR9001/whetstone -p "*.whl" -p "*.spdx.json" -p "SHA256SUMS"
gh attestation verify .\branching_continual_verification-0.8.0-py3-none-any.whl -R CarlSR9001/whetstone
プロダクト層
上記の研究用ハーネスは、1つの CLI、評価対象となるあらゆるシステム向けのアダプター、プラグイン可能な検証器、CI 契約、エージェントネイティブなインターフェースを備えたプロダクトとして運用できます。詳細なガイドはdocs/product.mdをご覧ください。
$env:PYTHONPATH='src'
python -m bcv.cli init # bank + whetstone.toml
python -m bcv.cli mint --domain code --max-items 8 # hidden-check exam items
python -m bcv.cli grade --system v2 --command "python my_agent.py"
python -m bcv.cli grade --system v2 --acp "my-acp-agent" # any Agent Client Protocol agent
python -m bcv.cli gate --baseline v1 --candidate v2 # exit code IS the verdict: 0 PASS, 2 HOLD, 3 BLOCK
python -m bcv.cli sweep # retire saturated items downward
python -m bcv.cli redteam # hostile self-test; nonzero exit on escape
python -m bcv.cli serve --port 8977 # localhost JSON service
python -m bcv.cli mcp # MCP server (also in .mcp.json)
python -m bcv.cli inspect --exam exam.jsonl --exposure exposure.jsonl --baseline v1.json --candidate v2.json
python -m bcv.cli hosted-report-card --command "python my_agent.py" --out report-card.json
python -m bcv.cli open-bench-run --baseline-command "python v1.py" --candidate-command "python v2.py"
python -m bcv.cli verify-receipt --receipt report-card.json
python -m bcv.cli toolbox --port 8988 # eight stateless tools on localhost
外部エンドポイントの評価では、バンクの露出量管理により、公開された項目がすべて永久に消費されます。昇格レポートには、対になった証拠、正確な McNemar p 値、バンク独自の解決声明、バンクの状態に対する SHA-256 コミットメントが含まれます。人間向け、エージェント向けを問わず、どのインターフェースからも試験項目の内容が提供されることはありません。
ステートレスなツールボックスは、リポジトリにすでにある8つの仕組みを、ファイル入力・レシート出力の実用的なインターフェースに変えます。Whetstone Inspector、Eval Leak Auditor、Promotion Gate、Bank Health、SafePatch、Counterexample Hunter、Memory Relevance Debugger、Agent Replay Consoleです。実行のたびに、判定経路、検査可能な視覚的証明書、SHA-256 レシート、タスク固有のダウンロード可能な成果物が提供されます。漏洩分析では、厳密な同一性、有限コーパスにおける動作上の等価性、テキスト類似性のレビューを、それぞれ独立した証拠レベルとして扱います。自動的に隔離されるのは最初の2つのみです。公開インスタンスのwhetstone.cyberelf.linkで受け付けるのは、呼び出し元が提供する使い捨てデータのみです。検査用バンク、アカウント、Cookie、アップロードデータの永続化はありません。非公開試験には CLI または顧客管理のインスタンスをご利用ください。
同じ公開サービスには、ペア比較によるスコープ完全性トラックのOpen Promotion Benchも加わりました。open_bench_startは、ベースラインと候補に、手続き的に変化する6つの仮想リポジトリータスクを同一条件で割り当てます。open_bench_submitは、要求された状態と編集スコープの維持を確認し、改善、悪化、引き分けの件数を集計してから、PASS/HOLD/BLOCKを発行します。提出者は、自己申告でサニタイズ済みのレシートを明示的に公開できます。台帳に保存されるのはマニフェスト、状態遷移、件数、ハッシュのみで、タスクの内容や回答パッチは保存されません。そのため、既存のワークベンチ/レポートカードのデータ非保持境界は維持されます。
ホスト型のレポートカードと Open Bench のレシートは、チャレンジに結び付けられ、Ed25519 SSHSIG キーで署名されます。上記のワンコマンドランナーは HTTPS キーバンドルを取得し、発行者、チャレンジ、コンテンツコミットメント、署名、有効期限を検証してからレシートを書き込みます。有効な署名によって認証されるのは、Whetstone の評価結果とデプロイ済みビルドです。呼び出し元が指定したモデル名やハーネス名は認証されません。--allow-unsignedをローカル開発サービスで明示的に使わない限り、ランナーは未署名のレシートを拒否します。レポートカードの送信が混雑している場合は、セッションを消費せずに再試行できます。
現在、サポートパネルの生成はデフォルトでフェイルクローズします。語彙チェッカーは正常なスモークテスト用コーパスには合格しましたが、敵対的なケースでは13件すべてに失敗したため、独立してレビューされた厳格な較正データが明示的に提供されない限り、昇格に利用可能なサポート項目を生成できません。
60秒のデモ
昇格ゲート全体を、CPU上でライブ実行して約10秒で確認できます。
$env:PYTHONPATH='src'; python -m bcv.demo_investor
検証器との境界で試験項目を生成し、おもちゃの学生が学習した項目を隔離し(ディスク上の実データバッファを用いた行識別による漏洩チェック)、チェッカー仕様を使って2つのシステムを評価します。対象は、学習データをそのまま返す記憶型システムと、修正を提案する候補システムです。項目ごとの識別力を算出し、改善と悪化を比較して昇格を判定し、飽和した項目を下方向のみの学習フローに移し、追記専用の台帳に書き込みます。2つのシステムは保存された回答ポリシーです(デモで GPU を使わないためです)。項目の生成、隔離、評価はすべて本番のコードパスを使い、ライブで計算されます。正規のトランスクリプトはresults/demo_investor_transcript.txtにあります。
研究の背景
文献と照らし合わせる読者(人間かどうかを問いません)向けに説明すると、whetstone は、通常はこのようなループを破綻させる失敗モードに抗うよう設計された、継続学習と自己改善のための実験です。対象は小規模言語モデルで、一般向けハードウェア上での QLoRA/パラメーター効率の高いファインチューニングを用います。FINDINGS §1-6 で定量化した検証器の地平線の後退は、自己学習における報酬ハッキング/グッドハート化と仕様の抜け穴を突く行為を、具体的に測定した事例です。昇格ゲートとリプレイテスト済みのアダプター更新は、スケーラブルな監督とプロセス監督に関する実用的な小規模研究です。進化する試験問題バンクは、ベンチマークの飽和、データ汚染/評価データの漏洩(訓練データとテストデータの分離はコードで徹底されており、まさにその理由から非公開テストセットをこの公開リポジトリには含めていません)、そして LLM 評価のための項目応答の較正に取り組みます。プレイグラウンドとアーケードは、自動カリキュラム生成とオープンエンド性(メタ検証器によるゲートを設けたゲームの発明を実装しており、POET/ペア型オープンエンドの開拓や AI 生成アルゴリズムに隣接するものです)を実現し、自己対戦オラクル(モンテカルロ・ラダー、Stockfish、KataGo)が AlphaZero の流れをくむ教師信号を提供します。推論エミュレーターは、テスト時コンピュート、探索拡張生成、バックトラッキングの研究です(メモ付き巻き戻しを、ガベージコレクションされる思考の連鎖として扱います)。サリエンス/関連性の取り組みでは、注意の経済学とメモリー拡張エージェント(検索をクエリではなく割り込みとして扱い、反事実的に検証します)を形式化します。リファイナリーと焼きなましによる反例探索は、自動予想生成/自動数学的発見(Graffiti、Wagner 2021)の系譜に位置付けられ、確定した有限予想が存在証明を与えます。全体を通して、アーキテクチャはニューロシンボリックです。コンパクトな DSL と厳密な組合せ検証器をローカル LLM の周囲に配置し、完全な来歴情報と、否定的な結果も正直に記録した台帳を備えています。
このリポジトリは BLUEPRINT.md の設計図から発展しました。以下に、元の足場に関するメモを示します。
現在あるもの:
- JSONL を基盤とする認知ブランチストア。
- 来歴情報を含む型付きコミット/イベント。
- ブランチの作成、チェックアウト、マージ、差分、ブレーム、二分探索。
- 保存フックを備えた、パッチのみを編集する Markdown エディター。
- 長文書の破損を注入し、フックがそれを検出することを検証するベンチマークハーネス。
- 検証器が受け入れたパッチのみを書き込む、ローカル Ollama 対応の Markdown 編集エージェント。
テストを実行します:
python -m pytest
テストと、現在のすべての実験を実行します:
.\scripts\run_all.ps1
サンプル契約書に対して、実際のローカルモデルによる Markdown 編集を実行します:
.\scripts\run_sample_edit.ps1
受け入れ/再試行/ブロックの有用性ベンチマークを実行します:
$env:PYTHONPATH='src'; python -m bcv.usefulness
複数文書の逐次編集ベンチマークを実行します:
$env:PYTHONPATH='src'; python -m bcv.corpus_benchmark
Cognitive Git の想起ベンチマークとコーディングベンチマークを実行します:
$env:PYTHONPATH='src'; python -m bcv.recall_benchmark
$env:PYTHONPATH='src'; python -m bcv.coding_benchmark --quick
$env:PYTHONPATH='src'; python -m bcv.coding_benchmark
シード Taste-RL の選好データセットと SFT データセットをエクスポートします:
$env:PYTHONPATH='src'; python -m bcv.taste
拡張規模の合成 Taste-RL データセットを生成します:
$env:PYTHONPATH='src'; python -m bcv.taste_data --variants-per-prompt 40
最初の検証器対応グラフ発見ループを実行します:
$env:PYTHONPATH='src'; python -m bcv.discovery --max-n 6
提案ファイル内の、解析可能なグラフ予想を評価します:
$env:PYTHONPATH='src'; python -m bcv.graph_agent --max-n 6 --proposal-file sample_docs/graph_proposals.json
ローカルの Ollama/LM Studio モデルにグラフ予想を提案させ、その後検証します:
$env:PYTHONPATH='src'; python -m bcv.graph_agent --max-n 6 --use-model --max-rules 6
前回の検証器による失敗を条件に、2 回目のモデル提案パスを実行します:
$env:PYTHONPATH='src'; python -m bcv.graph_agent --max-n 6 --use-model --max-rules 6 --feedback-file .bcv_runs/graph_agent/proposal_evaluation.json
より大規模なリサーチ・ファウンドリー比較を実行します。ステートレスな提案ループと、受け入れ済みの予想、反例、修正、SFT データを蓄積する内部 Git フィードバックループを比較します:
$env:PYTHONPATH='src'; python -m bcv.research_foundry --mode scripted --rounds 3 --max-n 6
ローカルの Ollama/LM Studio モデルを通じて、同じファウンドリーを実行します:
$env:PYTHONPATH='src'; python -m bcv.research_foundry --mode model --rounds 3 --max-n 6 --max-rules 4
実行後のスケールチェックを伴うファウンドリーを実行します。受け入れ済みのすべての規則と修正を、より大きな n でストレステストし、スケールによる反証を台帳にコミットします:
$env:PYTHONPATH='src'; python -m bcv.research_foundry --mode scripted --rounds 3 --max-n 6 --stress-ns 7 8
自己完結型のフロンティアループを実行します。FastContext 4B が GPU 上で提案し、CPU の検証器が棄却します。各ラウンドのスケールによる反証は次回の提案プロンプトにフィードバックされ、各提案はマイナーの 2 原子ハルに対する意味的な新規性で評価されます:
$env:PYTHONPATH='src'; python -m bcv.research_foundry --mode fastcontext --rounds 6 --max-n 6 --max-rules 6 --stress-feedback-ns 7 8 10 --library .bcv_runs/adversary_library.jsonl
予想の述語クラス内でシミュレーテッドアニーリングを行い、反例を探索します
(見つかった反例は敵対例ライブラリに保存されます。どのプールも --library で読み込めます):
$env:PYTHONPATH='src'; python -m bcv.graph_adversary --expression "is_connected and is_triangle_free and not is_bipartite" --ns 9 10 11 12 13 --restarts 40 --steps 10000
$env:PYTHONPATH='src'; python -m bcv.graph_adversary --report-file .bcv_runs/graph_generalize_rich/generalization_report.json
モデル対アニーラーの反例対決を実行します:
$env:PYTHONPATH='src'; python scripts/run_duel.py
推論エミュレータのベンチマークを実行します(モデルから呼び出し可能な制御としての save/load/rewind-with-notes/verifier-check と、線形 CoT を比較し、検証器でスコアを付けます):
$env:PYTHONPATH='src'; python -m bcv.emulator --dataset-path .bcv_runs/graph_repair_hard_rich/hard_heldout.jsonl --model Qwen/Qwen3-1.7B --limit 6
Pro Action Replay MCP サーバーを起動します(外部エージェントは実行中の推論セッションをステップ実行、ダンプ、操作できます。.mcp.json では reasoning-emulator として登録されています):
$env:PYTHONPATH='src'; python -m bcv.emulator_mcp
ドメインの予想精製プロセス全体を実行します(列挙 -> 検証 -> ストレステスト -> アニーリング攻撃 -> ライブラリの閉包展開 -> THEOREMS 台帳 + 反証博物館):
$env:PYTHONPATH='src'; python -m bcv.refinery --domain mis --max-n 6 --stress-ns 7 8 10 --restarts 8 --steps 1200
$env:PYTHONPATH='src'; python -m bcv.refinery --domain coloring --max-n 6 --stress-ns 7 8 10 --restarts 8 --steps 800 --library .bcv_runs/adversary_library.jsonl
発見場に蓄積された検証器修復データから FastContext QLoRA スモークアダプターをトレーニングします:
$env:PYTHONPATH='src'; python -m bcv.research_foundry --mode model --rounds 3 --max-n 6 --max-rules 4 --train-adapter
グラフ予想修復用の、より大規模な検証器修復データセットを生成します:
$env:PYTHONPATH='src'; python -m bcv.graph_repair_data --max-n 6 --max-proposals 48 --root .bcv_runs/graph_repair_data_full
JSON のみの検証器ターゲットで、グラフ修復用 FastContext QLoRA アダプターをトレーニングします:
$env:PYTHONPATH='src'; python -m bcv.graph_lora --dataset-path .bcv_runs/graph_repair_data_full/repair_json_sft.jsonl --output-dir .bcv_runs/graph_lora_json_24_r4 --max-train-examples 24 --heldout-examples 8 --epochs 1 --max-length 256 --lora-r 4 --lora-alpha 8 --max-n 6 --train-only
難易度の高い修復データセットを生成します(プロンプトには反例の証拠が含まれますが、答えの制約は含まれません。また、ホールドアウトのグループは、学習データと元の式が重複しません):
$env:PYTHONPATH='src'; python -m bcv.graph_repair_data --hard --max-n 6 --max-proposals 48 --heldout-groups 8 --root .bcv_runs/graph_repair_hard
難易度の高いタスク用アダプターをトレーニングし、厳密に評価します(評価では、出力がプロンプト内の元の式を厳密に精緻化したものであり、検証器に受理される必要があります。また、支持の保持率とモード崩壊の診断結果を報告します):
$env:PYTHONPATH='src'; python -m bcv.graph_lora --dataset-path .bcv_runs/graph_repair_hard/hard_train.jsonl --heldout-path .bcv_runs/graph_repair_hard/hard_heldout.jsonl --output-dir .bcv_runs/graph_lora_hard_29_r8 --max-train-examples 29 --epochs 2 --max-length 640 --lora-r 8 --lora-alpha 16 --max-n 6
n<=6 で受理されたすべての規則と修復を、より大きなグラフでストレステストします(ランダムな G(n,p) に加え、交互 crown グラフや貪欲な敵対的木による決定論的な敵対ケースを使用します):
$env:PYTHONPATH='src'; python -m bcv.graph_generalize --evaluation-file .bcv_runs/graph_repair_hard/proposal_evaluation.json --ns 7 8 --samples-per-np 120 --relabels 3
より大きな n のサンプルグラフと敵対的グラフでも修復ターゲットが成立する、ストレステストで採掘した難易度の高いデータセットを構築します(設計上、ターゲットは特定の範囲にのみ成立する成果物ではなくなります):
$env:PYTHONPATH='src'; python -m bcv.graph_repair_data --hard --max-n 6 --max-proposals 48 --heldout-groups 6 --stress-ns 7 8 --root .bcv_runs/graph_repair_hard_stress
最初のベンチマークを実行します:
$env:PYTHONPATH='src'; python -m bcv.benchmark
現在のすべてのプローブを実行し、台帳と学習候補を書き込みます:
$env:PYTHONPATH='src'; python -m bcv.experiments
ローカルモデルのドキュメントプローブのみを実行します:
$env:PYTHONPATH='src'; python -m bcv.model_probe
現在の学習済みドキュメント破損トリップワイヤーをトレーニングします:
$env:PYTHONPATH='src'; python -m bcv.tripwire
検証器台帳の学習データセットをエクスポートします:
$env:PYTHONPATH='src'; python -m bcv.sft_export
キャッシュ済み FastContext 4B QLoRA スモークトレーナーを実行します:
$env:PYTHONPATH='src'; python -m bcv.lora_smoke
このベンチマークは意図的に決定論的に設計されています。LLM が安全に編集できることを証明するものではありません。モデルを接続する前に、状態と検証器のレイヤーが、クリーンなパッチと破損したドキュメント全体の書き換えを区別できることを証明します。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。