MCP Fusion/Integrations and federation/OpenAPIとPrismaのジェネレーター
OpenAPIとPrismaのジェネレーター
既存のスキーマから安全なMCPコネクタを作成します。OpenAPIまたはSwaggerのエンドポイントはツールとPresenterになり、Prismaのアノテーションはフィールド単位のセキュリティとテナント対応コードを生成します。
多くのチームにはすでに信頼できる情報源があります。OpenAPIジェネレーターとPrismaジェネレーターを使えば、各エンドポイントを手作業でコピーせずに、その情報源をMCP Fusionへ取り込めます。どちらもMVA形式のコードを生成するため、出力は手書きのツールと同じセキュリティおよびガバナンスモデルから始まります。
OpenAPIとSwagger
ジェネレーターパッケージをインストールしてバイナリを実行します。
npm install @mcpfusion/openapi-gen
openapi-gen generate \
--input ./openapi.yaml \
--output ./src/mcp \
--base-url https://api.example.com \
--server-name billingCLIは -i/--input、-o/--output、-c/--config、--base-url、--context、--server-name を受け付けます。タグフィルターはジェネレーター設定の includeTags と excludeTags で構成します。
プログラムから使う場合、パイプラインは明示的です。
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.import、server 設定、タグフィルターが含まれます。既存サーバー内で生成された操作が必要な場合、ランタイムは loadOpenAPI と buildHandler をエクスポートします。
生成されたスキーマが表すのはAPIであり、認可ポリシーではありません。生成されたPresenterのallowlistをすべて確認し、テナント制約を追加して、コネクタをデプロイする前に認証を接続してください。
Prisma
Prisma生成は、任意のデータベースに対して実行する別コマンドではなく、実際のPrismaジェネレーターです。schema.prisma に登録します。
generator mcp {
provider = "@mcpfusion/prisma-gen"
output = "../src/tools/database"
}認識またはテナンシールールが必要なモデルフィールドにアノテーションを付けます。
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を解析し、emitPresenter と emitTool でPresenterとツールのファイルを出力します。パッケージには toSnakeCase、toPascalCase、pluralize などの命名ヘルパーが含まれます。
ソースアノテーションが契約です。@mcpfusion.hide はフィールドをエージェントのサーフェスから除外し、@mcpfusion.describe(...) はスキーマの案内になり、@mcpfusion.tenantKey は生成コードがスコープを限定すべきフィールドを示します。古い @fusion.* 表記を使うREADME例をコピーする前に、インストールしたパーサーのバージョンを確認してください。
どちらのジェネレーターも知らないこと
どのレコードをロールが閲覧できるか、どの上流エラーをリトライできるか、ビジネス上どのアクションが破壊的かを、ジェネレーターは推論できません。生成コードを安全な土台として扱い、ポリシーレイヤーを追加してください。
- 生成されたPresenterスキーマを確認する
requireJwtまたはrequireApiKeyを接続する- ハンドラーの前にテナントコンテキストを解決する
.redactPII()、上限、無効化ヒントを追加するmcpfusion.lockを生成して確認する
次のステップ
- Authentication: 生成されたツールを保護する
- Multi-tenant connectors: 生成されたクエリの範囲を限定する
- Contracts: 生成されたサーフェスのドリフトを確認する
