MCP Gateway & Registry
Self-hosted registry and gateway for MCP servers, A2A agents and skills, driven by a REST API.
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.
- 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
- 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.
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_ENABLEDDEPLOYMENT_MODEREGISTRY_MODEAUTH_PROVIDERREGISTRY_URLREGISTRY_NAMESTORAGE_BACKENDSECRET_KEYSSRF_ALLOWED_HOSTSSSRF_ALLOWED_CIDRSAGENT_SECURITY_SCAN_ENABLEDAGENT_SECURITY_BLOCK_UNSAFE_AGENTSSECURITY_SCAN_ENABLEDREGISTRATION_GATE_ENABLEDREGISTRATION_GATE_URLREGISTRATION_WEBHOOK_URLEMBEDDINGS_PROVIDEREMBEDDINGS_MODEL_NAMEMCP_SCANNER_LLM_API_KEYA2A_SCANNER_LLM_API_KEY- Config files
.env.exampledocker-compose.ymlscripts/registry-admins.jsoncli/examples/public-mcp-users.jsonauth_server/oauth2_providers.ymlcharts/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
- github.com/agentic-community/mcp-gateway-registry
- Apache-2.0 license
- Last commit Nov 3, 2026
- 1,036 stars
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.
| Job | Through the interface | Evidence |
|---|---|---|
| Register and manage MCP servers | Reachable | JWT Server Management API in docs/api-reference.md; servers_router in registry/main.py |
| Register, discover and toggle A2A agents | Reachable | /api/agents routes in docs/a2a.md and registry/api/agent_routes.py |
| Register skills and custom entities | Reachable | /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 language | Reachable | search_router at /api/search and POST /api/agents/discover/semantic; the mcpgw MCP server also offers search_registry |
| Build virtual MCP servers | Reachable | registry/api/virtual_server_routes.py mounted under /api |
| Scan servers and agents for security problems | Reachable | GET security-scan and POST rescan routes in registry/api/server_routes.py and agent_routes.py |
| Federate with external and peer registries | Reachable | GET /api/federation/config and POST /api/federation/sync in registry/api/federation_routes.py |
| Read the audit trail | Reachable | /api/audit/events in registry/audit/routes.py |
| Connect a person's third-party OAuth account | Not reachable | docs/design/egress-auth-design.md shows consent happens out of band in a browser |
| Change deployment and identity provider settings | Not reachable | registry/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
| Field | Where it was seen | Confidence |
|---|---|---|
| formFactor | README.md: nginx data plane and FastAPI control plane; the React UI sits over the same REST API | 70% |
| executionModel | routing and access checks are fixed code; a model does bounded work for semantic search embeddings and the optional LLM security analyzer | 75% |
| operability | docs/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 interface | 90% |
| effort | docs/configuration.md and .env.example document the settings; docs/a2a.md shows scope files that set per-agent access | 85% |
| editions | LICENSE is Apache-2.0 and README.md says it is open source under Apache 2.0; no paid edition or hosted plan was found | 90% |
| active | GitHub API pushed_at 2026-11-03 and release 1.36.0 on 2026-11-03 | – |
| provenance | human contributors lead the history, and CLAUDE.md plus .claude/skills show agent-assisted development | – |
| alternativeTo | README.md names no commercial product it replaces | – |
| reach | 80% |
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
- github.com/agentic-community/mcp-gateway-registry sourcing:agent-infrastructure:a2a-topic
- github.com/agentic-community/mcp-gateway-registry/blob/main/docs/a2a.md analysis:agent-infrastructure
- github.com/agentic-community/mcp-gateway-registry/blob/main/docs/design/a2a-protocol-integration.md analysis:agent-infrastructure
- github.com/agentic-community/mcp-gateway-registry/blob/main/docs/api-reference.md analysis:agent-infrastructure