Releases: agentfront/mcp-from-openapi
Release list
v2.7.0 — Enhanced Workflow Integration
Version 2.7.0 brings significant new features and critical fixes to improve workflow integration and API security.
✨ Highlights
New Arazzo Workflow Integration: Seamlessly convert Arazzo 1.0 workflows into usable MCP tools.
import { fromArazzo } from 'mcp-from-openapi';
const tools = fromArazzo(arazzoDoc, options);Emit TypeScript Call Signatures: Generate TypeScript call signatures directly via emitTypeSignatures.
import { emitTypeSignatures } from 'mcp-from-openapi';
const signatures = emitTypeSignatures(metadata);🔒 Security
- Addressed dependency vulnerabilities and resolved CodeQL alerts to enhance overall security.
🛠 Also in this release
- Added
dottedNamingpreset for bindingns.methodtool names in CodeCall. - Introduced
_meta, tool icons, and security elicitation descriptors for improved metadata handling. - Many fixes based on review findings, improving validation and response parsing.
- Updated documentation badges and examples to reflect the latest features and API stabilization.
⚠️ Upgrading
| Change | Impact |
|---|---|
| Skipped reference-object parameters in validation | Enhances structural validation |
| Omitted non-object output schemas from SDK configs | Ensures correct schema handling |
Full change list
Features
- feat: add fromArazzo() converting Arazzo 1.0 workflows into consolidated MCP tools
- feat: emit _meta, tool icons, x-mcp-header markers, and security elicitation descriptors
- feat: add dottedNaming preset for CodeCall-bindable ns.method tool names
- feat: emit TypeScript call signatures via emitTypeSignatures (metadata.typescript)
Fixes
- fix: resolve local parameter refs in coverage checks and harden example patterns per review
- fix: skip reference-object parameters in structural validation and coverage checks
- fix: omit non-object output schemas from SDK configs and keep flattened multipart bodies as form data
- fix: make toJsonSchema cycle-safe and count path-level parameters in validation
- [Plus additional fixes addressing schema safety, validation, and review findings]
Security
- Cherry-pick: Resolve CodeQL alerts, dependency vulnerabilities, and Dependabot updates
Installation
npm install mcp-from-openapi@2.7.0Release line: 2.7.x · Branch: release/2.7.x · Type: stable
v2.6.1 — Overlay Application and Enhanced Linting
This release introduces powerful new features, including OpenAPI Overlay document support and agent-readiness linting, making it easier for developers to manage and improve their OpenAPI specifications.
✨ Highlights
Apply OpenAPI Overlay documents at load time to seamlessly integrate curated changes without altering the original spec.
import { applyOverlay } from 'mcp-from-openapi';
applyOverlay(specDocument, overlayDocument);Agent-readiness linting provides a detailed analysis of spec quality to improve tool selection accuracy.
import { lintDocument } from 'mcp-from-openapi';
const lintResults = await lintDocument(apiDocument);🔒 Security
- Resolves CodeQL alerts on polynomial trims, backslash escaping, and merge sanitizer recognition.
🛠 Also in this release
- Added detection of pagination parameters and unbounded-array responses for better metadata hints.
- Introduced trimming options including
maxProperties,maxDescriptionLength, andstripExamples. - Added token estimation and budget reports for tool-set usage.
- Enhanced description strategies with compact response summaries.
⚠️ Upgrading
| Change | Impact |
|---|---|
| Eager overlay application | Requires overlays specified in the options to be handled at load time. |
Full change list
Features
- feat: detect pagination params and unbounded-array responses as metadata hints
- feat: add description strategies and compact response summaries
- feat: add agent-readiness lint with severity-ranked findings and fix hints
- feat: apply OpenAPI Overlay documents at load time with a JSONPath subset supporting filters and recursive descent
- feat: add maxProperties, maxDescriptionLength, and stripExamples trimming options
- feat: add token estimation and tool-set budget reports with context warnings
Fixes
- fix: exclude open brace from path template regex to avoid polynomial backtracking
- fix: resolve CodeQL alerts on polynomial trims, digest backslash escaping, and merge sanitizer recognition
- fix: address review findings on prototype-safe overlays, cycle-safe trimming, shared-node lint measurement, and OverlayError identity
- fix: apply review findings on overlay match dedup and removal order, trim safety for mapper params, lint cycle safety, and eager overlays
Security
- Security improvements with CodeQL alert resolutions
Installation
npm install mcp-from-openapi@2.6.1- OpenAPI Overlay Support – Seamless integration of curated changes to existing specs.
Release line: 2.6.x · Branch: release/2.6.x · Type: stable
v2.6.0 — MCP-native tools, request builder & client targets
The biggest release since 1.0 — 731 tests (up from 477), 100% coverage enforced in CI, and every change hardened by an adversarial review pass before tagging.
✨ Highlights
🧰 Stop hand-writing request assembly. buildHttpRequest() applies the full OpenAPI serialization table — deepObject queries, label/matrix paths, multipart, binary, whole-body payloads, cookies. Pure function, bring your own fetch:
const req = buildHttpRequest(tool, { id: '42', filter: { tag: 'news' } });
// → https://api.example.com/users/42?filter[tag]=news
await fetch(req.url, { method: req.method, headers: req.headers, body: req.body as BodyInit });🎯 One spec, valid on every client. Claude, OpenAI strict mode, and Gemini each accept a different JSON Schema subset. Pick a target and ship schemas that client actually accepts:
const tools = await generator.generateTools({ target: 'gemini' });
// 'claude' | 'openai' | 'gemini' | 'strict'🏷️ MCP-native tools out of the box. Every tool now carries a title and MCP annotations inferred from HTTP semantics (GET → read-only, DELETE → destructive), plus spec-compliant names (64-char cap, stable dedup). Override anything from the spec via the x-mcp extension family.
🔎 Curate instead of dumping. Filter by tag, method, or path glob — or flip the read-only safety switch:
await generator.generateTools({ includeTags: ['public'], excludePaths: ['/admin/**'], readOnlyOnly: true });🔒 Security
- SSRF connection pinning — the DNS-validated address is the one actually connected to, closing the rebinding race noted in 2.5.0
secureDefaults: true— one flag for untrusted specs: redirects off, external$refresolution off- Request guards: header names/values, cookies, base URLs, and path templates are all validated before a request is built
🛠 Also in this release
toSdkTool()— one-line tool registration with the official MCP TypeScript SDK- Clean JSON Schema 2020-12 output:
nullable→ type unions,example→examples, applied under every keyword allOfbodies flatten; union and binary bodies map cleanly (wholeBody,serialization.binary)includeExamplesandmaxSchemaDepthnow work; tool ordering is deterministicMcpOpenAPITool<TMeta>metadata generics and per-schemeincludeSecurityInInput: string[]
⚠️ Upgrading
| Change | Impact |
|---|---|
| Tool names are normalized (64-char cap, invalid chars replaced, collisions deduped) | Only affects names that Claude/Bedrock already rejected |
maxSchemaDepth (default 10) is now enforced |
Very deep schemas truncate with a note |
generateTools() output is sorted by path, then method |
Stable order; previously spec key order |
Non-object bodies map with wholeBody: true |
Send the value as the whole body — or just use buildHttpRequest |
📚 New guides: Request Builder · Client Targets · Annotations & Extensions
Full change list
Features
buildHttpRequestpure request builder with full OpenAPI style/explode serialization (#12)- Client compatibility targets:
claude/openai/gemini/strict(#12) - Tool
title+annotationsinferred from HTTP semantics withx-mcpfamily overrides (#11) - MCP tool-name rules: sanitization, length caps, stable collision dedup (#11)
- Tag / method / path-glob filtering,
readOnlyOnlyswitch,x-mcpprecedence root < path < operation (#12) - Generic tool metadata, per-scheme
includeSecurityInInput,secureDefaultspreset (#12) toSdkTooladapter for MCP SDKregisterTool(#12)allOfbody flattening,wholeBodyflag, binary/encoding markers (#11)includeExamplesandmaxSchemaDepthimplemented; deterministic ordering (#11)- JSON Schema 2020-12 normalization across all structural keywords (#11)
Fixes (adversarial review rounds)
secureDefaultsmerges per key; explicit-undefinedvalues cannot defeat the lockdown- OpenAPI explode defaults per style; cookie values verbatim with RFC 6265 validation
- Server URL templates substituted from spec defaults; unresolved templates throw
- Union collapses run to fixpoint; Gemini output never carries
x-variants; external$refs removed - OpenAI target implements the full strict contract (closed objects + required/nullable, enum/const-safe)
- Header names token-validated;
Content-Typehandling case-insensitive; multipart lets the client set the boundary - Digest credentials pass through verbatim; name dedup fails loudly on exhausted name spaces
Security
Installation
npm install mcp-from-openapi@2.6.0Release line: 2.6.x · Branch: release/2.6.x · Type: stable
v2.5.1
Release v2.5.1
Release type: stable
Release line: 2.5.x
Branch: release/2.5.x
[2.5.1] - 2026-07-21
Added
- Introduced IP connection pinning feature using a custom
lookupin Node.js environments, which ensures the socket connects to the validated IP, closing DNS-rebinding vulnerabilities. - Implemented manual redirect handling to re-validate each redirect, preventing automatic follow-through to potentially unsafe internal addresses.
- Added a cap on response body size for the Node.js transport, defaulting to 10 MiB.
Changed
- Modified the DNS resolution process to signal unavailability on non-Node runtimes with a
SsrfResolverUnavailableError. This allows processing to proceed with literal-address checks while acknowledging platform limitations.
Fixed
- Addressed potential issues with unresolvable hosts by ensuring URLs reject appropriately if DNS resolution fails outside the edge environment.
Security
- Strengthened SSRF protections by incorporating mandatory address validation and connection pinning, thereby mitigating risks through layer-by-layer validation and control over DNS resolution and redirection.
Installation
npm install mcp-from-openapi@2.5.1v2.5.0
Release v2.5.0
Release type: stable
Release line: 2.5.x
Branch: release/2.5.x
[2.5.0] - 2026-06-21
Security
- Enhanced SSRF protection by resolving DNS and blocking internal targets based on resolved IPs, not just hostnames.
- Implemented
safeFetchto revalidate each redirect hop, closing potential SSRF bypasses. - Introduced
normalizeSsrfOptionsto manage SSRF-related configurations consistently.
Added
- Added
SsrfErrorclass to handle specific SSRF guard violations. - Exported SSRF utilities like
safeFetch,isBlockedHostname, anddecodeIpv4MappedIpv6for external use.
Changed
- Refactored
fromURLand$refresolution to use new SSRF utilities for heightened security. - Updated
RefResolutionOptionsandLoadOptionsdocumentation to reflect enhanced SSRF features.
Installation
npm install mcp-from-openapi@2.5.0v2.4.0
Release v2.4.0
Release type: stable
Release line: 2.4.x
Branch: release/2.4.x
[2.4.0] - 2026-06-18
Added
- Introduced lazy loading for Node.js built-in modules (path and fs) in
fromFilemethod to ensure compatibility with V8-isolate runtimes like Cloudflare Workers and Deno. - Added functions to decode IPv4-mapped IPv6 addresses and dereference internal JSON pointers without using Node dependencies, improving cross-platform compatibility.
Changed
- Updated dependency version and package manager to
yarn@4.14.1. - Enhanced hostname blocklist checking to prevent bypass using IPv4-mapped IPv6 addresses.
- Prevented automatic HTTP redirect following in
$Refresolution to improve security.
Security
- Secured digest authentication by stripping CR/LF and backslashes in quotes and tokens to prevent header/response-splitting vulnerabilities.
Installation
npm install mcp-from-openapi@2.4.0v2.3.0
Release v2.3.0
Release type: stable
Release line: 2.3.x
Branch: release/2.3.x
[2.3.0] - 2026-04-08
Added
- Implemented built-in format resolvers, enriching JSON Schema with constraints based on OpenAPI format values (e.g., uuid, date-time, int32).
- Added support for custom format resolvers through
formatResolversoption inGenerateOptions. - Enabled resolution of schema formats globally with
resolveFormatsflag inGenerateOptions.
Changed
- Updated engine requirement to Node.js v20 or higher.
- Upgraded
@apidevtools/json-schema-ref-parserdependency to v15.3.5.
Fixed
- Improved handling of OpenAPI document validation when dereferencing.
- Corrected source map misalignments during coverage reporting.
Security
- No security issues addressed in this release.
Installation
npm install mcp-from-openapi@2.3.0v2.2.0
Release v2.2.0
Release type: stable
Release line: 2.2.x
Branch: release/2.2.x
[2.2.0] - 2026-04-07
Added
- Initial release of mcp-from-openapi, enabling conversion of OpenAPI specifications into MCP tool definitions.
Installation
npm install mcp-from-openapi@2.2.0