MCP Fusion/Operate and integrate/テスト

テスト

VinkiusについてAIに質問

@mcpfusion/testing はツールを実際のパイプラインでメモリ内実行します。サーバーもトークンも不要で、バリデーション、ミドルウェア、redaction、Presenter を完全な忠実度で検証します。

MCP サーバーのテストは普通、プロトコルをモックして確信を失うことになります。@mcpfusion/testing は逆を行きます。実際のレジストリを実際のパイプラインでメモリ内実行するため、成功したテストは本番が実行するのと同じコードパスを検証します。

bash
npm install @mcpfusion/testing

ハーネス

typescript
import { createMCPFusionTester } from '@mcpfusion/testing';
import registry from './src/server';

const t = createMCPFusionTester(registry, { contextFactory: () => ({ db: testDb }) });

test('get_invoice hides PII and teaches units', async () => {
  const result = await t.callAction('billing', 'get_invoice', {
    id: 'inv_2026_0417',
  });

  expect(result.data.email).toBeUndefined();
  expect(result.systemRules).toContain(
    'amount_cents is in CENTS. Divide by 100.',
  );
  expect(result.rawResponse).toContain('billing.remind');
});

1 回の呼び出しで、アサーションはエージェントが受け取るものを正確に検査します。redaction 後の構造化コンテンツ、Presenter が注入するシステムルール、提示される affordances です。

本物として動くもの

段階忠実度
入力バリデーションbuilder からの本物の Zod スキーマ
ミドルウェア本物のチェーン、本物のコンテキスト導出
Redaction本物のコンパイル済み redaction 関数
Presenter の整形本物のスキーマ、ルール、UI ブロック、affordances
トランスポートモック。置き換えられる唯一の部分

ハーネスはサーバーもトークンもなしでメモリ内実行のため、テストは毎回の push、CI でも実行できる速さです。

何をテストするか

  • Egress 契約。 result.data に PII フィールドが存在しないことをアサートします。誰かがフィールドを追加して redaction パスを忘れた日に捕まえるのが、このテストです。
  • ルール。 Presenter が約束する単位と通貨の行が systemRules に含まれることをアサートします。
  • Affordances。 状態ごとに .suggest() が正しい次のアクションを提示することをアサートします。
  • 失敗の形。 Result の失敗が availableActions 付きで返ることをアサートし、エージェントが自己修復できるようにします。
  • 状態ゲート。 FSM に結合したツールでは、禁止する状態のツール一覧にそのツールが現れないことをアサートします。

AI コーディングエージェントがツールを書いたなら、ここでその仕事を検証します。SKILL.md 契約がエージェントにパターンを約束させ、これらのテストが CI にそれを強制させます。Skills を参照してください。

CI

bash
npx vitest run
mcpfusion lock --check ./dist/server.js

ハーネスを Governance の capability lockfile チェックと組み合わせてください。テストが振る舞いを検証し、lockfile がサーフェスの逸脱がないことを検証します。2 つ揃って、すべての変更がデプロイ前に通る 2 つの門です。

次のステップ

  • Tools:ハーネスが鍛えるもの
  • Governance:lockfile と CI の門
  • Deploy:確信を持って、無料で出荷