MCP Fusion/Integrations and federation/OpenAPIとPrismaのジェネレーター

OpenAPIとPrismaのジェネレーター

VinkiusについてAIに質問

既存のスキーマから安全なMCPコネクタを作成します。OpenAPIまたはSwaggerのエンドポイントはツールとPresenterになり、Prismaのアノテーションはフィールド単位のセキュリティとテナント対応コードを生成します。

多くのチームにはすでに信頼できる情報源があります。OpenAPIジェネレーターとPrismaジェネレーターを使えば、各エンドポイントを手作業でコピーせずに、その情報源をMCP Fusionへ取り込めます。どちらもMVA形式のコードを生成するため、出力は手書きのツールと同じセキュリティおよびガバナンスモデルから始まります。

OpenAPIとSwagger

ジェネレーターパッケージをインストールしてバイナリを実行します。

bash
npm install @mcpfusion/openapi-gen
openapi-gen generate \
  --input ./openapi.yaml \
  --output ./src/mcp \
  --base-url https://api.example.com \
  --server-name billing

CLIは -i/--input-o/--output-c/--config--base-url--context--server-name を受け付けます。タグフィルターはジェネレーター設定の includeTagsexcludeTags で構成します。

プログラムから使う場合、パイプラインは明示的です。

typescript
import {
  parseOpenAPI,
  mapEndpoints,
  mergeConfig,
  emitFiles,
} from '@mcpfusion/openapi-gen';

const spec = parseOpenAPI(await readFile('./openapi.yaml', 'utf8'));
const mapped = mapEndpoints(spec);
const files = emitFiles(mapped, mergeConfig({
  features: { tags: true, presenters: true, toonDescription: true },
}));

ジェネレーターは $refs を解決し、Swagger 2.0をOpenAPI 3に変換し、入力とレスポンスのスキーマをZodにコンパイルし、アノテーションを推論し、Models、Presenters、ツール、レジストリ、サーバーエントリ用のファイルを出力します。生成されたサーバーは出発点です。本番前に認証ミドルウェア、テナント解決、認証情報の宣言、ドメイン固有のルールを追加してください。

設定項目には features(タグ、アノテーション、Presenter、説明、deprecatedの処理、TOON説明、サーバーファイル)、naming(snake_caseまたはcamelCase、重複排除)、context.importserver 設定、タグフィルターが含まれます。既存サーバー内で生成された操作が必要な場合、ランタイムは loadOpenAPIbuildHandler をエクスポートします。

生成されたスキーマが表すのはAPIであり、認可ポリシーではありません。生成されたPresenterのallowlistをすべて確認し、テナント制約を追加して、コネクタをデプロイする前に認証を接続してください。

Prisma

Prisma生成は、任意のデータベースに対して実行する別コマンドではなく、実際のPrismaジェネレーターです。schema.prisma に登録します。

prisma
generator mcp {
  provider = "@mcpfusion/prisma-gen"
  output   = "../src/tools/database"
}

認識またはテナンシールールが必要なモデルフィールドにアノテーションを付けます。

prisma
model User {
  id        String @id @default(cuid())
  email     String /// @mcpfusion.hide
  tenantId  String /// @mcpfusion.tenantKey
  name      String /// @mcpfusion.describe("Display name for the agent")
}

npx prisma generate を実行します。ジェネレーターは parseAnnotations でPrisma DMMFを解析し、emitPresenteremitTool でPresenterとツールのファイルを出力します。パッケージには toSnakeCasetoPascalCasepluralize などの命名ヘルパーが含まれます。

ソースアノテーションが契約です。@mcpfusion.hide はフィールドをエージェントのサーフェスから除外し、@mcpfusion.describe(...) はスキーマの案内になり、@mcpfusion.tenantKey は生成コードがスコープを限定すべきフィールドを示します。古い @fusion.* 表記を使うREADME例をコピーする前に、インストールしたパーサーのバージョンを確認してください。

どちらのジェネレーターも知らないこと

どのレコードをロールが閲覧できるか、どの上流エラーをリトライできるか、ビジネス上どのアクションが破壊的かを、ジェネレーターは推論できません。生成コードを安全な土台として扱い、ポリシーレイヤーを追加してください。

  1. 生成されたPresenterスキーマを確認する
  2. requireJwt または requireApiKey を接続する
  3. ハンドラーの前にテナントコンテキストを解決する
  4. .redactPII()、上限、無効化ヒントを追加する
  5. mcpfusion.lock を生成して確認する

次のステップ