
manifold
by nonchan7720
Manifold
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.
Why "Manifold"?
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 |
Architecture
MCP Client
│
▼
┌─────────────┐
│ Manifold │ ← this server
└─────────────┘
│ │
▼ ▼
External OpenAPI / Swagger
MCP REST API Server
Server
Features
- OpenAPI / Swagger → MCP conversion: Automatically generates MCP tools from OpenAPI 3.x / Swagger 2.x specifications
- MCP backend aggregation: Transparent reverse proxy to external MCP servers
- Built-in OAuth 2.1 server: Authorization server with PKCE (S256) support
- Pluggable backend authentication: Choose one of static header (
authValue) / OAuth 2.0 (oauth2) / API key Token Exchange (tokenExchange) - Resource links: Stores binary content from tool responses in S3 and returns download URLs (resource links)
- Lazy connection: Connects to backends on first request (no backend dependency at gateway startup)
- Selectable storage: Session / token management backed by Redis or SQLite
- OpenTelemetry support: OTLP export of traces, metrics, and logs (metrics also support Prometheus-style pull)
Requirements
- Go 1.26+
- Redis or SQLite (for session management)
Installation
Download binary
Download the latest binary from Releases.
Build from source
git clone https://github.com/nonchan7720/manifold.git
cd manifold
go build -o manifold .
Docker
docker pull ghcr.io/nonchan7720/manifold:latest
Usage
Start the gateway
# Run the binary
manifold gateway
# Specify a config file explicitly (-c / --config, config name without extension)
manifold gateway -c config
# Run from source
go run main.go gateway
# Docker (working directory is /home/nonroot)
docker run -p 9999:9999 \
-v $(pwd)/config.yaml:/home/nonroot/config.yaml \
ghcr.io/nonchan7720/manifold:latest
Docker Compose (development)
Starts a development environment including Redis.
docker compose up -d
Ready-to-run configuration examples are available in the examples/ directory.
Configuration
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}.
Connecting to an MCP backend
Expose an external MCP server through Manifold.
gateway:
port: 9999
# openssl rand -base64 32
encryptKey: ${ENCRYPT_KEY}
mcpServers:
my-mcp-server:
description: External MCP server
transport: http
url: http://localhost:8080/mcp
sqlite:
path: ./tmp/manifold.db
Related servers

n8n
by n8n-io
Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.

@modelcontextprotocol/server-everything
OfficialMCP server that exercises all the features of the MCP protocol

@modelcontextprotocol/server-filesystem
OfficialMCP server for filesystem access