Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Descripción del creador (original en inglés)
MCP gateway aggregating MCP servers and OpenAPI/Swagger REST APIs behind one MCP endpoint
Estos tres nunca se combinan en una sola puntuación: las opiniones, las mediciones y la popularidad son cosas distintas.
Todavía no escribimos un resumen sencillo para este. Abajo están los datos que leímos del registro.
Elige la app de IA que usas y copia la configuración.
ENCRYPT_KEY, SERVER_NAMELos valores marcados como secretos son llaves de tu cuenta. Nunca los compartas ni los pegues en un chat.
Necesitas
¿Qué app usas?
Elige tu app arriba. La recordamos, así que la próxima vez el botón dirá “Instalar en …”.
Abre Claude Desktop → Settings → Developer → Edit Config y pega esto en claude_desktop_config.json
{
"mcpServers": {
"manifold": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"ENCRYPT_KEY",
"-e",
"SERVER_NAME",
"ghcr.io/nonchan7720/manifold:v1.25.1"
],
"env": {
"ENCRYPT_KEY": "your-value",
"SERVER_NAME": "your-value"
}
}
}
}Ejecuta esto en tu terminal
claude mcp add manifold --env ENCRYPT_KEY=your-value --env SERVER_NAME=your-value -- docker run -i --rm -e ENCRYPT_KEY -e SERVER_NAME ghcr.io/nonchan7720/manifold:v1.25.1Completa los valores vacíos antes de ejecutarlo.
Pégalo en .cursor/mcp.json de tu proyecto, o en ~/.cursor/mcp.json
{
"mcpServers": {
"manifold": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"ENCRYPT_KEY",
"-e",
"SERVER_NAME",
"ghcr.io/nonchan7720/manifold:v1.25.1"
],
"env": {
"ENCRYPT_KEY": "your-value",
"SERVER_NAME": "your-value"
}
}
}
}Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.
Pégalo en .vscode/mcp.json de tu proyecto
{
"servers": {
"manifold": {
"type": "stdio",
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"ENCRYPT_KEY",
"-e",
"SERVER_NAME",
"ghcr.io/nonchan7720/manifold:v1.25.1"
],
"env": {
"ENCRYPT_KEY": "your-value",
"SERVER_NAME": "your-value"
}
}
}
}Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.
Este se ejecuta en tu computadora, y ChatGPT solo puede conectarse a servidores en internet. Elige otra app.
Tu elección se guarda en una cookie en este dispositivo; no necesitas cuenta.
Esta configuración se genera a partir de la ficha del creador en el registro. Si el README dice otra cosa, sigue el README.
Se ejecuta en tu computadora; la lista de herramientas aparece en tu app de IA después de instalarlo.
Revisamos información que cualquiera puede ver; no hemos leído el código. Las revisiones que no aplican no se cuentan. · Revisado el 7 nov 2026
El nombre en el registro se verificó con la cuenta de GitHub nonchan7720, dueña del repo
Todavía no hemos leído este repo en GitHub
Todavía no hemos leído este repo en GitHub
Este se ejecuta en tu computadora; no hay endpoint en internet
Se ejecuta en tu computadora y usa ajustes locales en su lugar
Se ejecuta en tu computadora; solo podemos leer listas de herramientas de endpoints en internet
Comparado con todos los servidores activos de esta categoría en el registro. Las estrellas solo cuentan cuando quien lo publica es dueño del repo.
Superó 1 de 1 revisiones básicas aplicables. No hemos leído el código. Antes de agregar una clave o un token, revisa qué acceso pide el servidor y usa una clave que tenga solo los permisos que necesitas.
Debes completar: ENCRYPT_KEY, SERVER_NAME
Se ejecuta en tu computadora. Tu app de IA lo inicia cuando hace falta, y los datos no pasan por los servidores del creador (a menos que el propio servidor llame a un servicio en línea).
El repo de GitHub cambió por última vez –, y la última versión (1.25.1) llegó al registro hace 3 días.
Las apps compatibles con MCP, como Claude Desktop, Claude Code, Cursor y VS Code. También necesitas Docker en tu computadora.
En la misma categoría: Spec Driven Development, Remote Desktop Commander, LexPact UK Contracts
Servidores de la misma categoría hechos por otros creadores, ordenados por estrellas.
Cómo leer una tarjeta:★ Estrellas de GitHubiTres pilares: reseñas · revisiones · usoiActualizado = fecha en que se publicó la última versión en el registroi
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Generate UK-law contracts: NDA, service, freelance, recruiter terms of business, IR35.
Copiado tal cual del repo del creador. PopNx MCP no lo ha revisado ni lo respalda. Se quitaron HTML, imágenes y scripts. Los enlaces llevan fuera de este sitio.
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 |
flowchart TD
client["MCP Client"] --> manifold["Manifold (this server)"] manifold --> mcp["External MCP Servers"] manifold --> rest["OpenAPI / Swagger REST API Servers"] manifold --> a2a["A2A Agents"]
manifold openapi tools), and start from a committed, diffable generated file instead of fetching the spec at boot (manifold openapi generate, mcpServers. .tools.file)manifold openapi diff, manifold openapi generate --check)mcpServers. .tools.include / exclude / overrides)audit)agents) or attached to a service (mcpServers. .agents, skills exposed as __ tools next to the service's own tools), with the caller's session id carried as the A2A contextId and the response context returned in _meta.a2aauthValue) / OAuth 2.0 (oauth2) / API key Token Exchange (tokenExchange) / Google service account (googleServiceAccount)io.modelcontextprotocol/ui) UIs of MCP backends through to hosts that support them — _meta.ui on tools, and the ui:// resources via resources/list / resources/read — and strips them for hosts that don't (mcpServers. .apps)format: binary fields inside JSON responses) in S3 and returns download URLs (resource links)Download the latest binary from Releases.
git clone https://github.com/nonchan7720/manifold.git
cd manifold go build -o manifold .
docker pull ghcr.io/nonchan7720/manifold:latest
# Run the binary
manifold gateway
manifold gateway -c config
go run main.go gateway
docker run -p 9999:9999 \ -v $(pwd)/config.yaml:/home/nonroot/config.yaml \ ghcr.io/nonchan7720/manifold:latest
Starts a development environment including Redis.
docker compose up -d
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.
# Print the tools every OpenAPI-mode server would register (no gateway started)
manifold openapi tools -c config
manifold openapi tools -c config --server petstore --json
manifold openapi generate -c config
manifold openapi generate -c config --check
manifold openapi diff -c config
openapi tools output:
SERVER TOOL OPERATION DESCRIPTION
petstore addpet POST /pet Add a new pet to the store. petstore getpetbyid GET /pet/{petId} Find pet by ID.
The generated file (tools.file) is YAML, with a diffable tools section followed by the resolved spec:
version: 1
generatedBy: manifold 1.12.0 source: spec: https://petstore3.swagger.io/api/v3/openapi.json sha256: "..." fetchedAt: "2026-09-04T00:00:00Z" format: openapi3 tools:
spec: { ... } # openapi3 document, external $refs internalized
A format: binary property in a multipart/form-data, application/x-www-form-urlencoded or application/json request body (for Swagger 2, type: file form parameters and format: binary fields inside an in: body schema, including nested objects, arrays, $ref and allOf) 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). Only a successful (2xx) response whose actual Content-Type is not textual is treated as binary: error responses, 3xx responses and text/JSON/XML/YAML bodies (including +json / +xml types) are returned as-is even for a binaryResponse: true tool. From a spec with one upload and one download operation:
tools:
In a JSON request body, a binary field's value is resolved the same way (base64, URL or explicit object) and sent to the upstream API as base64. Conversely, a format: binary field inside a 2xx JSON response (Swagger 2: format: binary or type: file; nested objects and arrays included, OpenAPI 3.1 contentMediaType used as the content type) is uploaded to storage when it is configured: the base64 value in the JSON is replaced with its download URL, and a resource link is added to the result for each uploaded field. Without storage, or for null / non-base64 values, the JSON is returned unchanged.
Recommended workflow:
tools.file to the server's config (see mcpServers. .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 a
Solo se muestra el principio; lee el resto en el repo