MCP Fusion/Protocol and runtime/イントロスペクション
イントロスペクション
コネクタ自身にその内容を説明させます。既知のパスにあるサーバーカード、RBAC でフィルターされた mcpfusion マニフェスト、アクションごとのメタデータ、ロックファイルを支える契約を扱います。
自分自身を説明できるコネクタは、運用、監査、統合が容易です。MCP Fusion は 3 つのイントロスペクション面を公開します。静的なサーバーカード、ライブの動的マニフェスト、プロセス内のメタデータ API です。
サーバーカード
/.well-known/mcp/server-card.json に http と stateless で提供され、起動時に一度コンパイルされます。
{
"$schema": "https://modelcontextprotocol.io/schemas/server-card/v1",
"version": "1.0",
"protocolVersion": "2026-07-28",
"serverInfo": { "name": "billing", "version": "1.4.0", "title": "Billing connector" },
"transport": { "type": "streamable-http", "endpoint": "/mcp" },
"capabilities": { "tools": {}, "prompts": {}, "resources": {} },
"tools": [{ "name": "billing", "description": "...", "tags": ["finance"] }]
}機能はサーバーが実際に登録した内容から設定されるため、存在しない面をカードが宣伝することはありません。セッションなしの読み取り専用で提供され、5 分間の公開キャッシュヘッダーが付きます。ディスカバリークライアントや監視システムは、MCP 接続を開かずに読み取れます。
動的マニフェスト
有効にすると、コネクタ自身を説明するリソースが公開されます。
attachToServer(server, {
introspection: {
enabled: true,
uri: 'mcpfusion://manifest.json',
filter: (manifest, ctx) => stripInternal(manifest, ctx.userRole),
},
});マニフェストにはサーバー ID、MVA アーキテクチャマーカー、各ツールのアクション、破壊的および読み取り専用のフラグ、必須フィールド、各 Presenter のスキーマキー、対応する UI ブロック型、ルールがコンテキスト依存かどうかが含まれます。静的カードと異なり、マニフェストは MCP 接続を通じて 読み取られ、セッションごとにフィルター されます。フィルターはマニフェストとリクエストコンテキストを受け取り、そのセッションが見られる内容を返します。したがって、ロールベースのディスカバリーは別のエンドポイントではなく関数です。
エージェントが自分で方向を定める必要がある場合はマニフェストを使用してください。エージェントは最初に mcpfusion://manifest.json を読み、自分に許可された正確な面を基に計画できます。
プロセス内のメタデータ
レジストリはワイヤーラウンドトリップなしで、自身の面についての質問に答えます。
for (const builder of registry.getBuilders()) {
console.log(builder.getName(), builder.getActionNames());
for (const action of builder.getActionMetadata()) {
console.log(action.actionName, action.destructive, action.requiredFields);
console.log(action.hasMiddleware, action.presenterName);
console.log(action.presenterSchemaKeys, action.presenterUiBlockTypes);
}
}これはコントラクトコンパイラーが消費するものと同じ資料です。そのため CLI は面を表示でき、ロックファイルはハッシュを作成でき、管理ダッシュボードは描画できます。1 つのソース、3 つの利用者です。
コントラクトとダイジェスト
各ツールは、面、動作、トークンエコノミクス、権限の各セクションを持つ ToolContract に展開され、それぞれがハッシュ化されます。computeServerDigest() はそれらをサーバーダイジェストにまとめ、compareServerDigests() は 2 つのデプロイメントが動作上同一かを知らせます。ロックファイルはこの資料をそのままディスクに書き込みます。スキーマと CI ゲートは Contracts を参照してください。
運用上重要な理由
- オンボーディング: 新しいクライアントは接続前にカードを読み、転送方式とエンドポイントを把握できます
- 最小権限: マニフェストフィルターにより、機能の可視性をロールごとのランタイム判断にできます
- 監査: コントラクトダイジェストはレビュアーが署名する成果物であり、ダッシュボードのスクリーンショットではありません
- リグレッション検知: リリース間でダイジェストを比較すれば、リポジトリ全体の diff を読まずに動作が変わったか答えられます
次のステップ
- Contracts: ダイジェスト、差分、アテステーション
- MCP 2.0 compliance: カードとプロトコル改訂
- Governance: リリースワークフロー
