mcp-flow
Provides a GitHub MCP backend (github-mcp) on the edge runtime, allowing authenticated GitHub operations through the gateway after logging in with gh auth login.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-flowadd the DeepWiki MCP server and enable it"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
mcp-flow
One MCP endpoint for every AI harness — upstream secrets stay on the gateway.
Self-hosted workspace MCP gateway: register private and vendor MCP servers, store env/API keys encrypted, mint agent API keys, and share the same tool library across Cursor, Claude, OpenCode, OpenFlow assistants, and more. Optional central or edge runtimes run installable MCPs in a sandbox (or bare, if you opt in).

Also dual-tracked as a registry catalog for OpenFlow (one-node gallery) and ProjectEverflow (marketplace MCP tab).
PLAN.md · Agent tools · Campaign storyboard · Issues · Apache-2.0
Visual tour
Why it exists | Gateway architecture |
|
|
Admin library | Operators |
|
|
Screenshots live in docs/images/campaign-*.png. Re-shoot from docs/campaign/ with ./capture.sh.
Related MCP server: Peta Core
Why this exists
Every IDE holding vendor API keys is not a control plane. MCP sprawl with no revoke path is not enterprise policy.

You need this when:
Platform admins must own the tool library; employees only get a URL + agent key
Upstream secrets must stay sealed on the gateway — never in harness config or model context
Cursor, Claude, OpenCode, and OpenFlow should share one workspace library
Enterprise defaults matter: deny edge-bare, no unrestricted enable-any-URL
Status
Gateway implemented (remote proxy, catalog, edge placements). Agent MCP tools: docs/AGENT-TOOLS.md.
Issue | Topic |
Core plan: gateway + catalog + placement | |
Everflow / OpenFlow catalog consumer contract | |
Edge agent + multi-device sandbox/bare |
Quickstart
Requirements: Node.js ≥ 22.
cp .env.example .env
# set MCP_FLOW_MASTER_KEY and MCP_FLOW_ADMIN_TOKEN
openssl rand -base64 32 # master key
openssl rand -hex 32 # admin token
npm install
npm run build
export $(grep -v '^#' .env | xargs)
npx mcp-flow serve --port 8787TUI (manage upstream MCPs)
npx mcp-flow tuiInteractive terminal UI: list/add/enable/disable/test/delete backends, seal auth headers, mint/revoke agent API keys. Arrow keys + enter; q quits.
Mint an agent key
npx mcp-flow key create --name cursor
# → { "key": { "token": "mf_…", "prefix": "mf_…", … } } # secret shown onceOperator key (AI manages the gateway)
Mint a key with scopes.admin so an agent can call mf_admin_* tools on /mcp (and the same token works on /v1/* REST). Env MCP_FLOW_ADMIN_TOKEN remains break-glass for humans/UI.
npx mcp-flow key create --name openflow-ops --admin
# Point the harness at http://127.0.0.1:8787/mcp with that mf_* token.Examples of operator tools: mf_admin_status, mf_admin_create_backend, mf_admin_create_key,
mf_admin_list_audit, mf_admin_catalog_install, devices/policy helpers. Normal agent keys never see these tools.
Prefer operator keys over pasting the env admin token into IDE config (revocable, audited by key id).
Projects (per-chat tool collections)
One agent key can span multiple projects — named sets of backends. Agents switch with MCP tools:
mf_list_projects → mf_use_project({ project: "webdevelopment" }) → tools/listdefaultproject is auto-created and gains new backends automatically.mf_use_projectbinds the chat (session sticky) and returns an optionalmf_sess_*session token for project-scoped calls.Admin UI → Projects tab, or
GET/POST /v1/projects.
Add a remote MCP (headers sealed)
npx mcp-flow backend add \
--slug deepwiki \
--url https://mcp.deepwiki.com/mcp \
--transport streamable-http \
--enable
# Multiple sealed headers (repeat --header). Name=value or Name: value:
npx mcp-flow backend add \
--slug yh-finance \
--url https://mcp.rapidapi.com \
--header "x-api-host: yahoo-finance15.p.rapidapi.com" \
--header "x-api-key: YOUR_RAPIDAPI_KEY" \
--enable
# Merge more headers later (does not wipe existing):
npx mcp-flow backend headers yh-finance \
--header "Authorization=Bearer …"
# List header *names* only (values never printed):
npx mcp-flow backend headers yh-financeYou do not need npx mcp-remote … --header in the harness — put the URL + headers on the backend; harnesses only get the mcp-flow URL + agent key.
Point a harness at mcp-flow only
HTTP (Cursor / clients with streamable HTTP):
{
"mcpServers": {
"mcp-flow": {
"url": "http://127.0.0.1:8787/mcp",
"headers": {
"Authorization": "Bearer mf_YOUR_AGENT_KEY"
}
}
}
}Stdio shim:
MCP_FLOW_URL=http://127.0.0.1:8787/mcp MCP_FLOW_API_KEY=mf_… npx mcp-flow stdioMeta tools: mf_status, mf_list_projects, mf_use_project, mf_current_project, mf_list_backends, mf_list_tools, mf_use_device. Backend tools are {slug}__{tool} and often do not appear in connector listings — docs/AGENT-TOOLS.md.
Docker Compose
docker compose up --build -d
docker compose logs -f bootstrap # wait until it writes /data/mcp-client.jsonSecrets are generated into the mcp-flow-data volume if .env is empty.
MCP (agents) |
|
Admin UI |
|
Health |
|
Agent key + client JSON |
|
Admin token |
|
Point Cursor / Claude / OpenCode at the mcpServers block in that JSON. The compose edge agent starts with the stack (device compose-edge should show online). It includes git, gh, /repos (clone many projects here), and persisted gh login.
Add these in Admin → Backends (placement edge-sandbox, device compose-edge, enable):
Slug | Transport | Command |
fs | stdio |
|
shell | stdio |
|
github | stdio |
|
Then from a shell-capable agent: gh auth login (device-code OAuth). After that github__* uses that account. Clone with git clone … /repos/<project>.
Tailnet (Headscale or Tailscale): set TS_AUTHKEY, TS_HOSTNAME, and TS_LOGIN_SERVER in .env. The sidecar starts with the stack (userspace, no TUN — Dokploy-safe) and TCP-forwards :8787 to the gateway. MCP is http://<TS_HOSTNAME>:8787/mcp on the tailnet.
Admin REST
All /v1/* routes require Authorization: Bearer $MCP_FLOW_ADMIN_TOKEN.
Method | Path | Notes |
|
| Mint agent key (token once) |
|
| List keys (no secrets) |
|
| Revoke |
|
| Create (GET redacts sealed headers/env) |
|
| List (redacted) |
|
| Update / enable |
|
| Upstream tools/list smoke |
|
| Workspace + edge-bare policy |
|
| Edge device enroll / list / revoke |
|
| Edge agent (device token) |
|
| Operator admin UI |
|
| Agent MCP (API key) |
Security
Upstream headers/env encrypted at rest (
AES-256-GCM+MCP_FLOW_MASTER_KEY)Agent keys stored as SHA-256 hashes; plaintext shown once
GET payloads never include decrypted secrets
SSRF guards on backend URLs (
MCP_FLOW_ALLOW_PRIVATE_URLS=trueto allow LAN)Placement:
remote,central-sandbox,edge-sandbox,edge-bare(bare needs workspace policy)Admin UI at
/admin/(browser holds admin token in sessionStorage)
Placement (P3–P6)
# Central stdio / OCI
npx mcp-flow backend add --slug local --transport stdio \
--command npx --command -y --command some-mcp --enable
npx mcp-flow backend add --slug boxed --transport oci --image ghcr.io/example/mcp:latest
# Edge device
npx mcp-flow device enroll -n laptop
npx mcp-flow edge --url http://127.0.0.1:8787 --token <device-token>
npx mcp-flow backend add --slug on-laptop --transport stdio \
--command npx --command -y --command some-mcp \
--placement edge-sandbox --device-id <dev_id> --enable
# Bare (opt-in)
npx mcp-flow workspace policy --allow-edge-bare trueCatalog install maps npm/pypi/oci packages to central-sandbox when no remote URL.
Catalog (P1b)
npm run catalog:sync # → catalog/entries/*.json + index.json
npx mcp-flow catalog search github
npx mcp-flow catalog show 'io.github…/name' --pretty
npx mcp-flow catalog enrich 'io.github…/name' --pretty # README + tools/list
npx mcp-flow catalog install 'io.github…/name' --enable
# factory bulk enrich:
npm run factory:scrape -- --enqueue && npm run factory:workerStable allowlist id = registry server.name. Schema: catalog/schema.json (v1.0.0).
Each server is one JSON file under catalog/entries/ (plus slim index.json). See catalog/README.md.
Catalog factory TUI (queue + proxies)
Like ansible-flow-mcp’s Galaxy factory — multi-pane scrape → queue → worker, with SOCKS/HTTP proxy pool:
npm run factory:tui
# headless:
npm run factory:scrape -- --max-pages 5 --enqueue
npm run factory:worker -- --onceSee scripts/factory/README.md.
Scopes + audit (P2)
npx mcp-flow key create -n intern --scope-prefix yh-finance__ --scope-prefix mf_
npx mcp-flow key scopes <id> --scope-prefix demo__
npx mcp-flow audit --limit 20
npx mcp-flow doctorScoped keys only see/call matching tool name prefixes (mf_status always allowed).
Tool-call audit rows store redacted request arguments and response bodies (size-capped; secrets scrubbed). Treat the SQLite DB as sensitive. Cap via MCP_FLOW_AUDIT_MAX_DETAIL_BYTES.
Development
npm test
npm run typecheck
npm run catalog:validate
# Static catalog site (campaign UI + JSON shards)
SITE_BASE= npm run site:build # → site/out/ (+ catalog/)
npx serve site/out # open http://localhost:3000
# Live: https://real-limitless.github.io/mcp-flow/
npm run dev # tsx src/cli.ts serveArchitecture
AI harnesses ──HTTP or stdio shim──► mcp-flow /mcp (API key)
│
┌───────────────────────┼───────────────────────┐
▼ ▼ ▼
Remote MCPs Central sandbox Edge agents
(P1) (P3) (P4–P5 / #3)License
Apache-2.0
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
No tool schema history has been recorded yet.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Zero-setup MCP gateway securely connecting AI to your tools with authentication and workflows
Self-hosted MCP gateway: turn any API, database or MCP server into AI connectors — no code.
- OctopadOAuthapp.octopad
The back-office workspace for your team's AIs: tasks, knowledge and context shared over MCP.
Hosted AgentLux MCP server for marketplace, identity, creator, services, and social flows.
Related MCP Servers
- FlicenseCqualityDmaintenanceA powerful gateway for the Model Context Protocol (MCP) that unifies AI toolchains by federating multiple MCP servers, wrapping REST APIs as MCP tools, and supporting multiple transport methods with an admin dashboard.1-
- FlicenseNot gradedqualityAmaintenanceA production-ready MCP gateway and control plane that provides credential vault, policy engine, audit logging, and managed runtime for routing tool calls between AI agents and downstream MCP servers.58-
- AlicenseNot gradedqualityCmaintenanceSelf-hosted MCP gateway that connects productivity tools like Jira, Confluence, and Obsidian to AI assistants via a single endpoint.2MIT
- AlicenseNot gradedqualityBmaintenanceA local-first mission control for AI agent harnesses, providing a unified MCP gateway for shared memory, task queue, and encrypted secrets across multiple agents.71MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/real-limitless/mcp-flow'
If you have feedback or need assistance with the MCP directory API, please join our Discord server


