mothermachine /mothermachine

Browse / Agent infrastructure

MCP Gateway & Registry

Self-hosted registry and gateway for MCP servers, A2A agents and skills, driven by a REST API.

AdaptableOperable ProductAPI / service Hybrid PythonTypeScriptLuaHCL API License: Apache-2.0

A Python registry and nginx gateway that keeps one governed inventory of MCP servers, A2A agents, skills and custom entries, with OAuth against your identity provider, semantic search, security scans and audit logs. By default it handles A2A discovery and access control while agents talk directly; an opt-in mode routes A2A traffic through the gateway. It is Apache-2.0, runs on Docker Compose, Amazon ECS or Amazon EKS, and has no paid edition.

Use it when
  • My teams wire MCP servers and agents by hand and I want one inventory with access rules and an audit trail
  • I want agents to find each other by capability, and I want a say in who may call whom
  • I run on AWS and want a Terraform or Helm path for an internal MCP and agent registry
Gotchas
  • By default no A2A traffic touches the gateway: agents get each other's URLs and talk directly. Routing needs A2A_REVERSE_PROXY_ENABLED=true and the with-gateway deployment mode
  • It is a gateway and registry, not an agent: it answers no A2A task itself, and in proxy mode a call needs a backend agent you already run
  • Backend agents on internal networks are blocked until you set SSRF_ALLOWED_HOSTS or SSRF_ALLOWED_CIDRS
  • Agent metadata links such as documentationUrl can still show the backend address in proxy mode, per docs/a2a.md
  • A GRPC binding can be recorded on a card, but the gateway routes only JSONRPC and HTTP+JSON
  • Infrastructure-grade: nginx, FastAPI, an auth server, MongoDB or DocumentDB and an identity provider, on Python 3.14 or later
  • The bundled agents in agents/a2a are samples, not part of the registry

Last activity Nov 3, 2026. Fit: adaptable 3, operable 3.

Editions

Open source · Free open source

  • Clonegit clone https://github.com/agentic-community/mcp-gateway-registry
  • ImageContainer

For agents: JSON · Markdown

Adaptable: what is yours to change

Make it yours

Config only26 things to edit

A documented .env file sets both deployment and policy. A2A_REVERSE_PROXY_ENABLED, DEPLOYMENT_MODE and REGISTRY_MODE choose what runs. AGENT_SECURITY_BLOCK_UNSAFE_AGENTS and REGISTRATION_GATE_ENABLED set what may register. Scope JSON files such as scripts/registry-admins.json set who may list, publish and invoke each agent. docs/configuration.md is the reference, and the same settings exist in Terraform and Helm values.

Env vars
A2A_REVERSE_PROXY_ENABLED DEPLOYMENT_MODE REGISTRY_MODE AUTH_PROVIDER REGISTRY_URL REGISTRY_NAME STORAGE_BACKEND SECRET_KEY SSRF_ALLOWED_HOSTS SSRF_ALLOWED_CIDRS AGENT_SECURITY_SCAN_ENABLED AGENT_SECURITY_BLOCK_UNSAFE_AGENTS SECURITY_SCAN_ENABLED REGISTRATION_GATE_ENABLED REGISTRATION_GATE_URL REGISTRATION_WEBHOOK_URL EMBEDDINGS_PROVIDER EMBEDDINGS_MODEL_NAME MCP_SCANNER_LLM_API_KEY A2A_SCANNER_LLM_API_KEY
Config files
.env.example docker-compose.yml scripts/registry-admins.json cli/examples/public-mcp-users.json auth_server/oauth2_providers.yml charts/mcp-gateway-registry-stack
Prompt files
none
Accounts you need
An identity provider: Keycloak, Entra ID, Okta, Auth0, Cognito or PingFederate. The Docker Compose path sets up Keycloak

Source

Operable: what an agent can drive

Interface

OfficialAPIpublished by the builderlocal

How an agent can drive an Operable Listing, in five levels: native (built for the agent as the primary interface), official (the Builder ships an agent interface), wrapped (a third party wraps the software's API), config (an agent can only drive it by editing files), gui (screen control only). An interface is official only when it is published by the same organization that ships the software. GUI-level Listings are allowed and sorted last.

Docs
github.com/agentic-community/mcp-gateway-registry/blob/main/docs/api-reference.md
Tools
mcpgw MCP server with list_services, list_agents, list_skills, search_registry and intelligent_tool_finder

Reach

Partial coverage. 8 of 10 jobs reachable through the stated interface.

JobThrough the interfaceEvidence
Register and manage MCP serversReachableJWT Server Management API in docs/api-reference.md; servers_router in registry/main.py
Register, discover and toggle A2A agentsReachable/api/agents routes in docs/a2a.md and registry/api/agent_routes.py
Register skills and custom entitiesReachable/api/skills routes in registry/api/skill_routes.py and /api/custom routes in registry/api/custom_entity_routes.py, mounted only when custom_entity_types_enabled is set
Search the inventory in natural languageReachablesearch_router at /api/search and POST /api/agents/discover/semantic; the mcpgw MCP server also offers search_registry
Build virtual MCP serversReachableregistry/api/virtual_server_routes.py mounted under /api
Scan servers and agents for security problemsReachableGET security-scan and POST rescan routes in registry/api/server_routes.py and agent_routes.py
Federate with external and peer registriesReachableGET /api/federation/config and POST /api/federation/sync in registry/api/federation_routes.py
Read the audit trailReachable/api/audit/events in registry/audit/routes.py
Connect a person's third-party OAuth accountNot reachabledocs/design/egress-auth-design.md shows consent happens out of band in a browser
Change deployment and identity provider settingsNot reachableregistry/api/config_routes.py has read routes only; these settings live in .env, Terraform or Helm values

Code stack

Languages
PythonTypeScriptLuaHCL
Frameworks
FastAPIReactnginx
Package manager
uv
Database
MongoDBAmazon DocumentDB
Hosting target
Docker ComposeAmazon ECS (Terraform)Amazon EKS (Helm)
Built
Mixed (recorded, never ranked)

Model stack

Providers
sentence-transformers (local)OpenAI-compatible endpointsAzure OpenAIAmazon Bedrock
Models
all-MiniLM-L6-v2 is the default embeddings model
Keys you need
none
Prompts live in
none

Skills

Setup, search and agent card skills an Adopter's coding agent can use. Others in .claude/skills, such as pr-review and release-notes, are contributor tooling.

Kind
bundled
Paths
.claude/skills/macos-setup/SKILL.md .claude/skills/terraform-setup/SKILL.md .claude/skills/search-registry/SKILL.md .claude/skills/generate-agent-card/SKILL.md

Evidence and confidence

FieldWhere it was seenConfidence
formFactorREADME.md: nginx data plane and FastAPI control plane; the React UI sits over the same REST API70%
executionModelrouting and access checks are fixed code; a model does bounded work for semantic search embeddings and the optional LLM security analyzer75%
operabilitydocs/api-reference.md and api/openapi.json are published by the Builder, and docs/a2a.md shows bearer tokens from M2M service accounts; the mcpgw MCP server covers discovery only, so the REST API is the stated interface90%
effortdocs/configuration.md and .env.example document the settings; docs/a2a.md shows scope files that set per-agent access85%
editionsLICENSE is Apache-2.0 and README.md says it is open source under Apache 2.0; no paid edition or hosted plan was found90%
activeGitHub API pushed_at 2026-11-03 and release 1.36.0 on 2026-11-03–
provenancehuman contributors lead the history, and CLAUDE.md plus .claude/skills show agent-assisted development–
alternativeToREADME.md names no commercial product it replaces–
reach80%

Open questions

  • Reach was read from docs and source; the registry was not run and no REST call was made
  • No a2a field: it answers no A2A task itself, by default no A2A traffic touches it, and its opt-in proxy forwards to agents you already run. The rule behind this is pending in adr/0012 decision 5

Sources