MCP Fusion/Reference/移行

移行

VinkiusについてAIに質問

既存の MCP サーバーを生の SDK から MCP Fusion へ段階的に移行します。一度に移行するのは 1 つのツールドメイン。JSON.stringify のレスポンスから、Presenter、redaction、rules へ進みます。

MCP Fusion では書き直しは不要です。生の MCP SDK と MCP Fusion は 1 つのサーバー内で共存でき、多くのチームは 1 つのツールドメインずつ、1 ドメインあたり 15 分から 30 分程度で移行していきます。このページでは、その一歩がどのようなものかを示します。

移行前: 生の SDK のツール

typescript
server.setRequestHandler(CallToolRequestSchema, async (request) => {
  if (request.params.name === 'get_invoice') {
    const invoice = await db.invoices.findUnique({
      where: { id: request.params.arguments.id },
    });
    return {
      content: [{ type: 'text', text: JSON.stringify(invoice) }],
    };
  }
});

問題は構造的なものです。JSON.stringify(invoice) は、存在を忘れていた列まで含め、すべての列をモデルに送ります。単位は暗黙知の中にあり、モデルは推測するしかありません。redaction、バリデーション、次のアクションが行われる場所すらありません。

移行後: MVA での同じツール

typescript
const InvoicePresenter = createPresenter('Invoice')
  .schema({
    id: t.string,
    customer: t.string,
    amount_cents: t.number.describe('CENTS, divide by 100'),
    status: t.enum('draft', 'paid', 'overdue'),
  })
  .redactPII(['customer.email', 'customer.ssn'])
  .rules(['amount_cents is in CENTS. Divide by 100.']);

export default f.query('billing.get_invoice')
  .describe('Retrieve an invoice by ID')
  .withString('id', 'Invoice ID')
  .returns(InvoicePresenter)
  .handle(async (input) => {
    return db.invoices.findUnique({ where: { id: input.id } });
  });

ハンドラのロジックは同じです。変わった点:

関心事生の SDKMCP Fusion
出力の形JSON.stringify、全列Presenter のスキーマ、宣言されたフィールドのみ
PII通信路上にそのまま.redactPII() でシリアライズ前に除去
単位と意味プロンプトの言い伝え.rules() をシステム行として
次のアクションなし.suggest() のアフォーダンス
バリデーション手動ビルダー提供の Zod

段階的な移行手順

  1. 並行してインストールします。 npm install @mcpfusion/core は既存のハンドラに影響しません。
  2. ツールドメインを 1 つ選びます。 通常は最も機密性の高いデータを扱うものです。
  3. まず Presenter を書きます。 タスクに必要なフィールドを宣言し、それ以外は redaction し、モデルが間違えがちな点を rules に記します。
  4. ハンドラを移します。 クエリのロジックは通常そのまま使えます。
  5. autoDiscover を接続します。 新しいツールは src/tools/ から供給され、移行中も古いハンドラは動き続けます。
  6. ロックしてテストします。 新しい行面に対して mcpfusion lock を実行し、Testing の egress アサーションを追加します。

他のフレームワークからの移行

  • 素の HTTP API から。 @mcpfusion/openapi-gen は既存の OpenAPI や Swagger の仕様から Models、Views、Agents を生成するため、内部 API のラップはほとんど生成された状態で始まります。
  • Prisma のスキーマから。 @mcpfusion/prisma-gen はスキーマのアノテーションから、フィールド単位のセキュリティとテナント分離を備えたツールと Presenter を生成します。
  • n8n から。 @mcpfusion/n8n は n8n の webhook をタグフィルタリング付きのツールに変換します。
  • AWS の内部構成から。 @mcpfusion/aws はリソースタグを介して Lambda 関数と Step Functions をツールに引き上げます。

次のステップ