Skip to content

Releases: agentfront/mcp-from-openapi

v2.7.0 — Enhanced Workflow Integration

Choose a tag to compare

@github-actions github-actions released this 13 Aug 10:32

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 dottedNaming preset for binding ns.method tool 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.0

Release line: 2.7.x · Branch: release/2.7.x · Type: stable

v2.6.1 — Overlay Application and Enhanced Linting

Choose a tag to compare

@github-actions github-actions released this 12 Aug 13:33

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, and stripExamples.
  • 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

Release line: 2.6.x · Branch: release/2.6.x · Type: stable

v2.6.0 — MCP-native tools, request builder & client targets

Choose a tag to compare

@github-actions github-actions released this 11 Aug 23:42

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 $ref resolution 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, exampleexamples, applied under every keyword
  • allOf bodies flatten; union and binary bodies map cleanly (wholeBody, serialization.binary)
  • includeExamples and maxSchemaDepth now work; tool ordering is deterministic
  • McpOpenAPITool<TMeta> metadata generics and per-scheme includeSecurityInInput: 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

  • buildHttpRequest pure request builder with full OpenAPI style/explode serialization (#12)
  • Client compatibility targets: claude / openai / gemini / strict (#12)
  • Tool title + annotations inferred from HTTP semantics with x-mcp family overrides (#11)
  • MCP tool-name rules: sanitization, length caps, stable collision dedup (#11)
  • Tag / method / path-glob filtering, readOnlyOnly switch, x-mcp precedence root < path < operation (#12)
  • Generic tool metadata, per-scheme includeSecurityInInput, secureDefaults preset (#12)
  • toSdkTool adapter for MCP SDK registerTool (#12)
  • allOf body flattening, wholeBody flag, binary/encoding markers (#11)
  • includeExamples and maxSchemaDepth implemented; deterministic ordering (#11)
  • JSON Schema 2020-12 normalization across all structural keywords (#11)

Fixes (adversarial review rounds)

  • secureDefaults merges per key; explicit-undefined values 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-Type handling case-insensitive; multipart lets the client set the boundary
  • Digest credentials pass through verbatim; name dedup fails loudly on exhausted name spaces

Security

  • SSRF-safe fetch with connection pinning; every redirect hop re-validated (#9, #10)

Installation

npm install mcp-from-openapi@2.6.0

Release line: 2.6.x · Branch: release/2.6.x · Type: stable

v2.5.1

Choose a tag to compare

@github-actions github-actions released this 21 Jul 01:39

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 lookup in 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.1

v2.5.0

Choose a tag to compare

@github-actions github-actions released this 21 Jun 21:54

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 safeFetch to revalidate each redirect hop, closing potential SSRF bypasses.
  • Introduced normalizeSsrfOptions to manage SSRF-related configurations consistently.

Added

  • Added SsrfError class to handle specific SSRF guard violations.
  • Exported SSRF utilities like safeFetch, isBlockedHostname, and decodeIpv4MappedIpv6 for external use.

Changed

  • Refactored fromURL and $ref resolution to use new SSRF utilities for heightened security.
  • Updated RefResolutionOptions and LoadOptions documentation to reflect enhanced SSRF features.

Installation

npm install mcp-from-openapi@2.5.0

v2.4.0

Choose a tag to compare

@github-actions github-actions released this 18 Jun 21:09

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 fromFile method 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 $Ref resolution 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.0

v2.3.0

Choose a tag to compare

@github-actions github-actions released this 08 Apr 01:01

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 formatResolvers option in GenerateOptions.
  • Enabled resolution of schema formats globally with resolveFormats flag in GenerateOptions.

Changed

  • Updated engine requirement to Node.js v20 or higher.
  • Upgraded @apidevtools/json-schema-ref-parser dependency 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.0

v2.2.0

Choose a tag to compare

@github-actions github-actions released this 07 Apr 22:12

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