MCP gateway aggregating MCP servers and OpenAPI/Swagger REST APIs behind one MCP endpoint
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
One interface. Many connections. Manifold.
English | ζ₯ζ¬θͺ
Manifold is a gateway that acts as an MCP server while connecting to multiple external MCP servers and OpenAPI / Swagger-compliant REST APIs on the backend.
The name Manifold comes from an engine's intake manifold.
An intake manifold is the component that distributes air and fuel evenly and efficiently from a single inlet to multiple cylinders. We named this project Manifold because its structure is similar.
| Engine manifold | This project |
|---|---|
| Single inlet | Requests from MCP clients |
| Distribution / routing | Protocol conversion / routing |
| To multiple cylinders | To multiple external MCP / REST APIs |
manifold openapi tools), and start from a committed, diffable generated file instead of fetching the spec at boot (manifold openapi generate, mcpServers.<name>.tools.file)authValue) / OAuth 2.0 (oauth2) / API key Token Exchange (tokenExchange)Download the latest binary from Releases.
Starts a development environment including Redis.
Ready-to-run configuration examples are available in the examples/ directory.
For OpenAPI-mode servers (spec and/or tools.file configured), manifold openapi shows what the gateway would register, and can write it to a file the gateway starts from β without ever fetching the spec at boot.
openapi tools output:
The generated file (tools.file) is YAML, with a diffable tools section followed by the resolved spec:
A multipart/form-data or application/x-www-form-urlencoded property with format: binary is not exposed as a plain string. It becomes a oneOf that accepts either a string (base64 content or a URL to fetch the file from) or an object naming the source explicitly (url / base64 / text / content, plus optional filename and contentType), and carries _meta.manifold.file: true so clients can recognize it as a file input. An operation whose success response is binary (e.g. image/png, application/octet-stream) is marked binaryResponse: true; at runtime such responses are handled as binary content and, when storage is configured, returned as resource links (see storage). From a spec with one upload and one download operation:
Recommended workflow:
tools.file to the server's config (see mcpServers.<name>.tools) and run manifold openapi generate -c config.tools section makes upstream spec changes reviewable as a normal PR diff.manifold gateway -c config) β it reads the tools from the file, with no network access to spec at startup.manifold openapi generate -c config and commit the update. A stale file (spec changed but the file wasn't regenerated) fails gateway startup with an error telling you to regenerate.manifold openapi generate -c config --check as a CI step, so a PR that changes the upstream spec without regenerating the file fails before merge.CI: --check only checks servers with tools.file configured β a server without one is skipped with a stderr note, and --server restricts the check to a single server. For each, it rebuilds the catalog from the live spec and compares it against the committed file: source.sha256 (the upstream spec's raw bytes), the tools section, and the embedded spec section (the internalized document the gateway actually runs from) β generatedBy and source.fetchedAt are not compared. It exits non-zero on any difference, including a spec change that leaves the tool list untouched, since the embedded spec also drives runtime request building. It never writes. Example GitHub Actions step:
Place a configuration file (config.yaml) in the current directory or in a config/ subdirectory.
Configuration values support environment variable expansion in the form ${VAR} or ${VAR:-default}.
Expose an external MCP server through Manifold.
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/manifold)<a href="https://allmcps.com/mcp/manifold"><img src="https://allmcps.com/api/badge/manifold?style=directory" alt="Manifold on AllMCPs" /></a>