MCP Fusion/Integrations and federation/Générateurs OpenAPI et Prisma

Générateurs OpenAPI et Prisma

Demandez à l’IA à propos de Vinkius

Convertissez des schémas existants en connecteurs MCP sécurisés : les endpoints OpenAPI ou Swagger deviennent des outils et des Presenters, tandis que les annotations Prisma génèrent une sécurité au niveau des champs et du code tenant-aware.

La plupart des équipes disposent déjà d’une source de vérité. Les générateurs OpenAPI et Prisma permettent d’intégrer cette source à MCP Fusion sans recopier chaque endpoint à la main. Tous deux produisent du code structuré selon MVA, de sorte que la sortie commence dans le même modèle de sécurité et de gouvernance que les outils écrits à la main.

OpenAPI et Swagger

Installez le paquet du générateur et exécutez le binaire :

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

La CLI accepte -i/--input, -o/--output, -c/--config, --base-url, --context et --server-name. Les filtres de tags se configurent dans la configuration du générateur avec includeTags et excludeTags.

Programmatiquement, le pipeline est explicite :

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 },
}));

Le générateur résout $refs, convertit Swagger 2.0 en OpenAPI 3, compile les schémas d’entrée et de réponse en Zod, infère les annotations et émet des fichiers pour les Models, les Presenters, les outils, un registre et un point d’entrée serveur. Le serveur généré est un point de départ : ajoutez le middleware d’authentification, la résolution du tenant, les déclarations de credentials et les règles propres au domaine avant la production.

La surface de configuration comprend features (tags, annotations, presenters, descriptions, gestion de deprecated, descriptions TOON et fichier serveur), naming (snake_case ou camelCase et déduplication), context.import, les paramètres de server et les filtres de tags. Le runtime exporte loadOpenAPI et buildHandler lorsque vous avez besoin d’une opération générée dans un serveur existant.

Les schémas générés décrivent l’API, pas votre politique d’autorisation. Examinez chaque allowlist de Presenter générée, ajoutez les contraintes de tenant et attachez l’authentification avant de déployer le connecteur.

Prisma

La génération Prisma est un véritable générateur Prisma, et non une commande distincte à exécuter sur une base de données arbitraire. Enregistrez-le dans schema.prisma :

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

Annotez les champs du modèle qui nécessitent une règle de perception ou de tenancy :

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")
}

Exécutez npx prisma generate. Le générateur analyse le DMMF Prisma avec parseAnnotations, puis émet des fichiers de Presenter et d’outils avec emitPresenter et emitTool. Le paquet comprend des helpers de nommage tels que toSnakeCase, toPascalCase et pluralize.

Les annotations source sont le contrat : @mcpfusion.hide retire un champ de la surface de l’agent, @mcpfusion.describe(...) devient une indication de schéma et @mcpfusion.tenantKey marque le champ que le code généré doit restreindre. Vérifiez la version du parseur que vous installez avant de recopier d’anciens exemples de README utilisant l’ancienne graphie @fusion.*.

Ce que les deux générateurs ignorent

Aucun générateur ne peut déduire quels enregistrements un rôle peut voir, quelles erreurs amont peuvent être réessayées ni quelles actions sont destructives dans votre activité. Traitez le code généré comme un scaffold sécurisé, puis ajoutez la couche de politique :

  1. inspectez les schémas de Presenter générés
  2. attachez requireJwt ou requireApiKey
  3. résolvez le contexte du tenant avant le handler
  4. ajoutez .redactPII(), des limites et des indications d’invalidation
  5. générez et vérifiez mcpfusion.lock

Étapes suivantes