Convierte especificaciones OpenAPI en definiciones de herramientas MCP con resolución automática de conflictos de parámetros y construcción de peticiones HTTP integrada.
También conocido como agentfront/mcp-from-openapi
- Stars
- 12
- Herramientas
- —
- Descargas, 30 días
- —
- Última versión
- —
- Último commit
- 12 nov 2026
- Licencia
- Apache-2.0
¿Qué es from-openapi MCP?
from-openapi es un MCP server. Convierte especificaciones OpenAPI en definiciones de herramientas MCP con resolución automática de conflictos de parámetros y construcción de peticiones HTTP integrada.
Resumen generado a partir del README del proyecto
Acerca del MCP server de from-openapi
Los desarrolladores que busquen cerrar la brecha entre las REST APIs y los agentes de IA pueden utilizar esta librería para transformar especificaciones OpenAPI en definiciones de herramientas MCP listas para usar. Automatiza la difícil tarea de gestionar conflictos de parámetros cuando un mismo nombre aparece en diferentes ubicaciones, como el path, la query o el request body. Al proporcionar un mapper explícito y un constructor de peticiones integrado, garantiza que las peticiones HTTP se construyan correctamente sin necesidad de ensamblaje manual.
La herramienta funciona en Node.js o en entornos V8 isolates como Cloudflare Workers y permite cargar especificaciones desde URLs, archivos u objetos JSON. Incluye funciones especializadas para diferentes clientes de IA, lo que permite a los usuarios dirigirse a Claude, OpenAI o Gemini para asegurar que los esquemas generados coincidan con lo que cada modelo específico acepta. También ofrece funciones de seguridad como la prevención de SSRF y soporte para varios esquemas de autenticación, incluyendo Bearer, OAuth2 y AWS Sig V4.
Más allá de la simple conversión, ofrece capacidades de curación como informes de presupuesto de tokens mediante analyzeToolSet y linting para identificar lagunas en la especificación. Los usuarios pueden filtrar herramientas por tags, métodos o path globs para crear un conjunto refinado de capacidades para sus agentes.
Qué puedes hacer con él
- 1Resolver conflictos de nombres de parámetros de APIRenombra automáticamente parámetros superpuestos de diferentes partes de una petición HTTP para evitar colisiones en el esquema.
- 2Generar esquemas de herramientas específicos para cada clienteGenera esquemas JSON formateados específicamente para los requisitos de Claude, OpenAI o Gemini.
- 3Automatizar la construcción de peticiones HTTPConvierte las entradas de las herramientas directamente en peticiones HTTP válidas, incluyendo serialización compleja de queries y cuerpos multipart.
- 4Monitorizar el consumo de tokens de la IAEstima el coste de tokens de un conjunto de herramientas para evitar la degradación de la precisión en los agentes de IA.
Escrito a partir del README del proyecto. Cada caso de uso se verifica con una cita del mismo.
Cómo instalar from-openapi MCP
Formatos verificados el 10 nov 2026Añadir a CursorAñadir a GooseInstalar from-openapi MCP en Claude Code
$ claude mcp add mcp-from-openapi -- npx -y mcp-from-openapiInstalar from-openapi MCP en Cursor
~/.cursor/mcp.json
{
"mcpServers": {
"mcp-from-openapi": {
"command": "npx",
"args": [
"-y",
"mcp-from-openapi"
]
}
}
}Instalar from-openapi MCP en VS Code
.vscode/mcp.json
{
"servers": {
"mcp-from-openapi": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"mcp-from-openapi"
]
}
}
}Instalar from-openapi MCP en VS Code CLI
$ code --add-mcp '{"name":"mcp-from-openapi","type":"stdio","command":"npx","args":["-y","mcp-from-openapi"]}'Instalar from-openapi MCP en Claude Desktop
claude_desktop_config.json
{
"mcpServers": {
"mcp-from-openapi": {
"command": "npx",
"args": [
"-y",
"mcp-from-openapi"
]
}
}
}Instalar from-openapi MCP en Codex
$ codex mcp add mcp-from-openapi -- npx -y mcp-from-openapiInstalar from-openapi MCP en Codex config.toml
~/.codex/config.toml
[mcp_servers.mcp-from-openapi] command = "npx" args = ["-y", "mcp-from-openapi"]
Instalar from-openapi MCP en Gemini CLI
$ gemini mcp add -s user mcp-from-openapi npx -- -y mcp-from-openapiInstalar from-openapi MCP en Gemini settings.json
~/.gemini/settings.json
{
"mcpServers": {
"mcp-from-openapi": {
"command": "npx",
"args": [
"-y",
"mcp-from-openapi"
]
}
}
}Verificaciones automáticas
Ejecutado 14 nov 2026Informe completo →Pasó nuestras verificaciones automáticas. Esto no es una auditoría de seguridad: lee el código y dale al servidor el acceso más limitado que necesite. Cómo funcionan las verificaciones
- Repositorio de origen vinculado y accesibleagentfront/mcp-from-openapi is public and reachablegithub.com/agentfront/mcp-from-openapi ↗Aprobado
- El paquete indica este repositorio como su origenmcp-from-openapi names agentfront/mcp-from-openapi as sourcenpmjs.com/package/mcp-from-openapi ↗Aprobado
- Procedencia de la compilación (atestación de Sigstore)Sigstore attestation for mcp-from-openapinpmjs.com/package/mcp-from-openapi/v/2.9.3#provenance ↗Aprobado
- Licencia de código abierto (OSI)Apache-2.0spdx.org/licenses/Apache-2.0.html ↗Aprobado
- Commit o lanzamiento en el último añoLast commit or release 2026-11-12github.com/agentfront/mcp-from-openapi ↗Aprobado
- OpenSSF ScorecardNo verificado
- El nombre del paquete no es similar a un paquete popularNo popular package one edit away from mcp-from-openapiAprobado
- No hay avisos críticos en el paquete ni en sus dependenciasNo verificado
- Sin instrucciones ocultas para el modelo0 tool descriptions and the README read; no override phrases, credential paths or hidden charactersAprobado
- Las herramientas destructivas están etiquetadasNo verificado
- El endpoint remoto responde al handshake de MCPNo verificado
README
Ver en GitHubmcp-from-openapi
Convert OpenAPI specifications into MCP tool definitions with automatic parameter conflict resolution
What This Solves
When converting OpenAPI specs to MCP tools, you hit parameter conflicts -- the same name appears in different locations (path, query, body). This library resolves them automatically and gives you an explicit mapper for building HTTP requests.
The Problem:
paths:
/users/{id}:
post:
parameters:
- name: id # path
in: path
requestBody:
content:
application/json:
schema:
properties:
id: # body -- CONFLICT!
type: string
The Solution:
{
inputSchema: {
properties: {
pathId: { type: "string" }, // Automatically renamed
bodyId: { type: "string" } // Automatically renamed
}
},
mapper: [
{ inputKey: "pathId", type: "path", key: "id" },
{ inputKey: "bodyId", type: "body", key: "id" }
]
}
Now you know exactly how to build the HTTP request.
Features
- Built-in Request Builder --
buildHttpRequest()applies the full OpenAPI serialization table (form/deepObject/pipeDelimited queries, label/matrix paths, multipart, binary,wholeBody) so you never hand-write request assembly - Client Compatibility Targets --
target: 'claude' | 'openai' | 'gemini' | 'strict'emits schemas each client actually accepts (inlined refs, closed objects, collapsed unions, demoted formats) - Context-Budget Reports --
analyzeToolSet()estimates the token bill per tool and warns at the thresholds where agent accuracy degrades - Overlays & Lint -- apply OpenAPI Overlay curation files at load time;
lint()flags the spec gaps that hurt tool-calling accuracy - Curation-Grade Filtering -- Filter by tag, method, path glob (
/admin/**), operationId, areadOnlyOnlysafety switch, andx-mcpextension flags with root < path < operation precedence - Smart Parameter Handling -- Automatic conflict detection and resolution across path, query, header, cookie, and body;
allOfbodies flatten, union and binary bodies map cleanly (wholeBody,binarymarkers) - Complete Schemas -- Input schema combines all parameters; output schema from responses (with oneOf unions); clean JSON Schema 2020-12 output (
nullableunions, normalizedexamples) - MCP-Native Tools --
titleand toolannotations(readOnly/destructive/idempotent hints) inferred from HTTP semantics, overridable via thex-mcpextension family; spec-compliant tool names (64-char cap, stable hash truncation, collision dedup); deterministic tool ordering for prompt-cache friendliness;toSdkTool()for one-line SDK registration - Security Resolution -- Framework-agnostic auth for Bearer, Basic, Digest, API Key, OAuth2, OpenID, mTLS, HMAC, AWS Sig V4; per-scheme
includeSecurityInInput - SSRF Prevention -- Blocks internal IPs, localhost, and cloud metadata endpoints by default during
$refresolution; one-flagsecureDefaultsposture for untrusted specs - Multiple Input Sources -- Load from URL, file, YAML string, or JSON object
- Rich Metadata -- Authentication, servers, tags, deprecation, external docs,
x-frontmcpextension - Production Ready -- Full TypeScript support, validation, structured errors, 100% test coverage (enforced)
- Runtime Agnostic -- Works on Node and V8 isolates (Cloudflare Workers) alike
Installation
npm install mcp-from-openapi
# or
yarn add mcp-from-openapi
# or
pnpm add mcp-from-openapi
Quick Start
import { OpenAPIToolGenerator } from "mcp-from-openapi";
// Load an OpenAPI spec
const generator = await OpenAPIToolGenerator.fromURL(
"https://api.example.com/openapi.json",
);
// Generate MCP tools
const tools = await generator.generateTools();
// Each tool has everything you need
tools.forEach((tool) => {
console.log(tool.name); // "createUser"
console.log(tool.title); // "Create a user" (from summary/extensions)
console.log(tool.annotations); // { readOnlyHint: false, destructiveHint: true, ... }
console.log(tool.inputSchema); // Combined schema for all params
console.log(tool.outputSchema); // Response schema
console.log(tool.mapper); // How to build the HTTP request
console.log(tool.metadata); // Auth, servers, tags, etc.
});
Building Requests
buildHttpRequest() turns a tool plus input values into a ready-to-send request — style/explode serialization, deepObject queries, multipart, binary, and wholeBody handled correctly:
import { buildHttpRequest } from "mcp-from-openapi";
const request = buildHttpRequest(tool, { id: "42", filter: { tag: "news" } });
// { url: 'https://api.example.com/users/42?filter[tag]=news',
// method: 'GET', headers: {...}, body: undefined, ... }
await fetch(request.url, {
method: request.method,
headers: request.headers,
body: request.body as BodyInit,
});
The mapper array stays public for anyone who needs custom request assembly — see Request Builder and Parameter Conflicts for its contract.
Serving with the Official MCP SDK
import { toSdkTool, buildHttpRequest } from "mcp-from-openapi";
import { fromJsonSchema } from "@modelcontextprotocol/server"; // SDK v2
for (const tool of await generator.generateTools({ target: "claude" })) {
server.registerTool(...toSdkTool(tool, { fromJsonSchema }), async (input) => {
const request = buildHttpRequest(tool, input);
const response = await fetch(request.url, {
method: request.method,
headers: request.headers,
body: request.body as BodyInit,
});
return { content: [{ type: "text", text: await response.text() }] };
});
}
Documentation
| Document | Description |
|---|---|
| Getting Started | Loading specs, generating tools, building requests |
| Configuration | LoadOptions, GenerateOptions, RefResolutionOptions |
| Parameter Conflicts | How conflict detection and resolution works |
| Request Builder | buildHttpRequest — full OpenAPI parameter serialization |
| Client Targets | Per-client schema dialects (Claude, OpenAI, Gemini) |
| Curation | Token budgets, overlays, lint, trimming, response hints |
| Type Signatures | TypeScript call contracts for code-execution surfaces |
| Modern MCP Fields | Tool _meta, icons, x-mcp-header, elicitation descriptors |
| Arazzo Workflows | fromArazzo() — Arazzo 1.0 workflows as consolidated MCP tools |
| Tested Examples | Runnable examples, each executed as an e2e test on every CI run |
| Response Schemas | Output schemas, status codes, oneOf unions |
| Annotations & Extensions | Tool title, annotation inference, x-mcp extension family |
| Security | SecurityResolver, all auth types, custom resolvers |
| SSRF Prevention | Ref resolution security, blocked IPs and hosts |
| Format Resolution | Format-to-schema enrichment (uuid, date-time, email, int32, etc.) |
| Naming Strategies | Custom tool naming and conflict resolvers |
| SchemaBuilder | JSON Schema utility methods |
| Error Handling | Error classes, context, and patterns |
| x-frontmcp Extension | Custom OpenAPI extension for MCP annotations |
| API Reference | Complete types, interfaces, and exports |
| Examples | MCP server, Zod, filtering, security, and more |
| Architecture | System overview, data flow, design patterns |
Requirements
- Node.js >= 20.0.0
- TypeScript >= 5.0 (for TypeScript users)
- Peer dependency:
zod@^4.0.0
Contributing
Contributions are welcome! Start with the contributing guide; this project follows the Contributor Covenant. Bug reports and feature requests go through the issue templates.
Security
Report vulnerabilities privately — see the
security policy.
When loading untrusted specs, use secureDefaults: true.
Related Projects
License
Preguntas sobre from-openapi MCP
¿Cómo agrego from-openapi MCP a Claude Code?
Ejecuta claude mcp add mcp-from-openapi -- npx -y mcp-from-openapi en tu terminal. Añade --scope user para que esté disponible en todos los proyectos.
¿Cómo agrego from-openapi MCP a Cursor?
Abre ~/.cursor/mcp.json y añade el servidor en mcpServers, usando la configuración de Cursor que se muestra en la sección de instalación de arriba.
¿Cómo gestiona la librería los conflictos de parámetros en las especificaciones OpenAPI?
Detecta y resuelve automáticamente los conflictos cuando el mismo nombre de parámetro aparece en diferentes ubicaciones, como path, query o body, mediante el renombrado de los mismos.
¿Puedo usar esto con diferentes clientes de IA como Claude u OpenAI?
Sí, es compatible con objetivos específicos de clientes, incluyendo Claude, OpenAI y Gemini, al generar los esquemas que cada cliente acepta.
¿Ayuda con la gestión del uso de tokens para las herramientas?
Sí, incluye informes de presupuesto de contexto que estiman el coste de tokens por herramienta y te avisan cuando se alcanzan los umbrales establecidos.
¿Qué métodos de autenticación son compatibles?
La librería ofrece soporte independiente del framework para Bearer, Basic, Digest, API Key, OAuth2, OpenID, mTLS, HMAC y AWS Sig V4.