{
  "version": "2",
  "generatedAt": "2026-11-04T02:45:34.616Z",
  "listing": {
    "slug": "agentic-community--mcp-gateway-registry",
    "name": "MCP Gateway & Registry",
    "tagline": "Self-hosted registry and gateway for MCP servers, A2A agents and skills, driven by a REST API.",
    "shortTagline": "AI asset registry",
    "description": "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.",
    "capabilities": [
      "adaptable",
      "operable"
    ],
    "vertical": "agent-infrastructure",
    "alternativeTo": [],
    "shape": "product",
    "formFactor": "api",
    "executionModel": "hybrid",
    "provenance": "mixed",
    "codeStack": {
      "languages": [
        "Python",
        "TypeScript",
        "Lua",
        "HCL"
      ],
      "frameworks": [
        "FastAPI",
        "React",
        "nginx"
      ],
      "packageManager": "uv",
      "database": [
        "MongoDB",
        "Amazon DocumentDB"
      ],
      "hostingTarget": [
        "Docker Compose",
        "Amazon ECS (Terraform)",
        "Amazon EKS (Helm)"
      ]
    },
    "modelStack": {
      "providers": [
        "sentence-transformers (local)",
        "OpenAI-compatible endpoints",
        "Azure OpenAI",
        "Amazon Bedrock"
      ],
      "models": [
        "all-MiniLM-L6-v2 is the default embeddings model"
      ],
      "requiredKeys": [],
      "promptLocations": [],
      "tools": [
        "mcpgw MCP server with list_services, list_agents, list_skills, search_registry and intelligent_tool_finder"
      ]
    },
    "repos": [
      {
        "url": "https://github.com/agentic-community/mcp-gateway-registry",
        "owner": "agentic-community",
        "name": "mcp-gateway-registry",
        "license": "Apache-2.0",
        "stars": 1036,
        "lastCommit": "2026-11-03"
      }
    ],
    "interface": {
      "kind": "api",
      "url": "https://github.com/agentic-community/mcp-gateway-registry/blob/main/docs/api-reference.md",
      "official": true,
      "hosted": "local"
    },
    "operability": "official",
    "recommendedWrapper": null,
    "reach": [
      {
        "job": "Register and manage MCP servers",
        "reachable": true,
        "evidence": "JWT Server Management API in docs/api-reference.md; servers_router in registry/main.py"
      },
      {
        "job": "Register, discover and toggle A2A agents",
        "reachable": true,
        "evidence": "/api/agents routes in docs/a2a.md and registry/api/agent_routes.py"
      },
      {
        "job": "Register skills and custom entities",
        "reachable": true,
        "evidence": "/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"
      },
      {
        "job": "Search the inventory in natural language",
        "reachable": true,
        "evidence": "search_router at /api/search and POST /api/agents/discover/semantic; the mcpgw MCP server also offers search_registry"
      },
      {
        "job": "Build virtual MCP servers",
        "reachable": true,
        "evidence": "registry/api/virtual_server_routes.py mounted under /api"
      },
      {
        "job": "Scan servers and agents for security problems",
        "reachable": true,
        "evidence": "GET security-scan and POST rescan routes in registry/api/server_routes.py and agent_routes.py"
      },
      {
        "job": "Federate with external and peer registries",
        "reachable": true,
        "evidence": "GET /api/federation/config and POST /api/federation/sync in registry/api/federation_routes.py"
      },
      {
        "job": "Read the audit trail",
        "reachable": true,
        "evidence": "/api/audit/events in registry/audit/routes.py"
      },
      {
        "job": "Connect a person's third-party OAuth account",
        "reachable": false,
        "evidence": "docs/design/egress-auth-design.md shows consent happens out of band in a browser"
      },
      {
        "job": "Change deployment and identity provider settings",
        "reachable": false,
        "evidence": "registry/api/config_routes.py has read routes only; these settings live in .env, Terraform or Helm values"
      }
    ],
    "editions": [
      {
        "name": "Open source",
        "price": null,
        "open": true,
        "distributions": [
          {
            "kind": "source",
            "url": "https://github.com/agentic-community/mcp-gateway-registry"
          },
          {
            "kind": "container",
            "url": "https://github.com/agentic-community/mcp-gateway-registry/blob/main/docs/prebuilt-images.md",
            "command": "./build_and_run.sh --prebuilt"
          }
        ]
      }
    ],
    "skills": {
      "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"
      ],
      "install": null,
      "note": "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."
    },
    "customization": {
      "summary": "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.",
      "envVars": [
        "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"
      ],
      "configFiles": [
        ".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"
      ],
      "promptFiles": [],
      "effort": "config-only",
      "editCount": 26
    },
    "useWhen": [
      "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"
    ],
    "accounts": [
      "An identity provider: Keycloak, Entra ID, Okta, Auth0, Cognito or PingFederate. The Docker Compose path sets up Keycloak"
    ],
    "active": true,
    "lastActivity": "2026-11-03",
    "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"
    ],
    "fit": {
      "adaptable": 3,
      "operable": 3
    },
    "evidence": {
      "formFactor": "README.md: nginx data plane and FastAPI control plane; the React UI sits over the same REST API",
      "executionModel": "routing and access checks are fixed code; a model does bounded work for semantic search embeddings and the optional LLM security analyzer",
      "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",
      "effort": "docs/configuration.md and .env.example document the settings; docs/a2a.md shows scope files that set per-agent access",
      "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",
      "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"
    },
    "confidence": {
      "formFactor": 0.7,
      "executionModel": 0.75,
      "operability": 0.9,
      "effort": 0.85,
      "reach": 0.8,
      "editions": 0.9
    },
    "openQuestions": [
      "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": [
      {
        "url": "https://github.com/agentic-community/mcp-gateway-registry",
        "foundBy": "sourcing:agent-infrastructure:a2a-topic",
        "foundOn": {
          "platform": "github",
          "date": "2026-11-03"
        }
      },
      {
        "url": "https://github.com/agentic-community/mcp-gateway-registry/blob/main/docs/a2a.md",
        "foundBy": "analysis:agent-infrastructure"
      },
      {
        "url": "https://github.com/agentic-community/mcp-gateway-registry/blob/main/docs/design/a2a-protocol-integration.md",
        "foundBy": "analysis:agent-infrastructure"
      },
      {
        "url": "https://github.com/agentic-community/mcp-gateway-registry/blob/main/docs/api-reference.md",
        "foundBy": "analysis:agent-infrastructure"
      }
    ],
    "lastCheckedAt": "2026-11-03",
    "research": {
      "stage": "verified",
      "verdict": "unverified",
      "reason": "Passes all gates: Apache-2.0, a commit on 2026-11-03, 1,036 stars, and regular releases. Adaptable 3: documented config with policy settings under a permissive license. Operable 3: official REST API with eight of ten jobs reachable. It carries no a2a field: its A2A support is an opt-in proxy and discovery layer, not an agent.",
      "disputed": []
    },
    "url": "apps/agentic-community--mcp-gateway-registry.html",
    "coverage": "partial",
    "paid": false,
    "source": "research/verified/agentic-community--mcp-gateway-registry.json"
  }
}
