MCP Fusion/Integrations and federation/Generadores OpenAPI y Prisma

Generadores OpenAPI y Prisma

Pregunta a la IA sobre Vinkius

Convierte esquemas existentes en conectores MCP seguros: los endpoints de OpenAPI o Swagger se convierten en herramientas y Presenters, mientras que las anotaciones de Prisma generan seguridad por campo y código consciente del tenant.

La mayoría de los equipos ya tiene una fuente de verdad. Los generadores de OpenAPI y Prisma permiten incorporar esa fuente a MCP Fusion sin copiar manualmente cada endpoint. Ambos generan código con forma MVA, así que la salida empieza dentro del mismo modelo de seguridad y gobernanza que las herramientas escritas a mano.

OpenAPI y Swagger

Instala el paquete del generador y ejecuta el binario:

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 acepta -i/--input, -o/--output, -c/--config, --base-url, --context y --server-name. Los filtros de tags se configuran en la configuración del generador con includeTags y excludeTags.

Programáticamente, el pipeline es explícito:

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

El generador resuelve $refs, convierte Swagger 2.0 a OpenAPI 3, compila los esquemas de entrada y respuesta a Zod, infiere anotaciones y emite archivos para Models, Presenters, herramientas, un registro y una entrada de servidor. El servidor generado es un punto de partida: añade middleware de autenticación, resolución de tenant, declaraciones de credenciales y reglas específicas del dominio antes de producción.

La superficie de configuración incluye features (tags, anotaciones, presenters, descripciones, gestión de deprecated, descripciones TOON y archivo de servidor), naming (snake_case o camelCase y deduplicación), context.import, ajustes de server y filtros de tags. El runtime exporta loadOpenAPI y buildHandler cuando necesitas una operación generada dentro de un servidor existente.

Los esquemas generados describen la API, no tu política de autorización. Revisa cada allowlist de Presenter generada, añade restricciones de tenant y conecta la autenticación antes de desplegar el conector.

Prisma

La generación de Prisma es un generador de Prisma real, no un comando separado que ejecutes contra una base de datos arbitraria. Regístralo en schema.prisma:

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

Anota los campos del modelo que necesitan una regla de percepción o 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")
}

Ejecuta npx prisma generate. El generador analiza el DMMF de Prisma con parseAnnotations y después emite archivos de Presenter y herramientas con emitPresenter y emitTool. El paquete incluye helpers de nombres como toSnakeCase, toPascalCase y pluralize.

Las anotaciones de origen son el contrato: @mcpfusion.hide elimina un campo de la superficie del agente, @mcpfusion.describe(...) se convierte en orientación del esquema y @mcpfusion.tenantKey marca el campo que el código generado debe acotar. Comprueba la versión del parser que instalas antes de copiar ejemplos antiguos del README que usan la grafía obsoleta @fusion.*.

Lo que no saben ninguno de los dos generadores

Ningún generador puede inferir qué registros puede ver un rol, qué errores upstream se pueden reintentar o qué acciones son destructivas en tu negocio. Trata el código generado como un scaffold seguro y añade la capa de políticas:

  1. inspecciona los esquemas de Presenter generados
  2. conecta requireJwt o requireApiKey
  3. resuelve el contexto del tenant antes del handler
  4. añade .redactPII(), límites y pistas de invalidación
  5. genera y comprueba mcpfusion.lock

Próximos pasos