GitHub
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
作者提供的说明(英文原文)
MCP gateway aggregating MCP servers and OpenAPI/Swagger REST APIs behind one MCP endpoint
这三项永远不会合并成一个分数:意见、测量和人气是不同的东西。
我们还没有为它写通俗的介绍。下面是我们从注册中心读取到的事实。
选择你使用的 AI 应用,然后复制设置。
ENCRYPT_KEY, SERVER_NAME标为机密的值是你账户的钥匙。千万不要分享给别人,也不要粘贴到聊天里。
你需要
你用的是哪个应用?
在上方选择你的应用。我们会记住它,下次按钮会显示“安装到 …”。
打开 Claude Desktop → Settings → Developer → Edit Config,把下面的内容粘贴到 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"
}
}
}
}在终端中运行这条命令
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.1运行前请先填写空着的值。
粘贴到项目中的 .cursor/mcp.json,或 ~/.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"
}
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
粘贴到项目中的 .vscode/mcp.json
{
"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"
}
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
这个服务器在你的电脑上运行,而 ChatGPT 只能连接互联网上的服务器。请选择其他应用。
你的选择通过 Cookie 保存在这台设备上,无需账户。
这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。
它在你的电脑上运行;安装后,工具列表会显示在你的 AI 应用中。
我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月7日
注册名称已通过 GitHub 账户 nonchan7720 验证,该账户拥有此仓库
我们还没有从 GitHub 读取这个仓库
我们还没有从 GitHub 读取这个仓库
它在你的电脑上运行,没有互联网端点
在你的电脑上运行,改用本地设置
它在你的电脑上运行;我们只能读取互联网端点的工具列表
与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。
它在 1 项适用的基础检查中通过了 1 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。
你需要填写:ENCRYPT_KEY, SERVER_NAME
它在你的电脑上运行。你的 AI 应用会在需要时启动它,数据不会经过作者的服务器(除非它自己调用在线服务)。
GitHub 仓库最后更新于–,最新版本(1.25.1)于3天前进入注册中心。
支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。你的电脑上还需要有 Docker。
同一分类中有:GitHub, Desktop Commander, Cloudflare MCP
同一分类中其他作者的服务器,按星标数排序。
如何看卡片:★ GitHub 星标i三大支柱:评价 · 检查 · 使用情况i更新 = 最新版本发布到注册中心的时间i
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
MCP server for terminal commands, file operations, and process management
Cloudflare MCP servers
按原文从作者的仓库复制。PopNx MCP 没有审查或背书其内容。HTML、图片和脚本已被移除。链接会离开本站。
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
只显示了开头部分;其余内容请在仓库中阅读