{"data":{"slug":"ibm-mcp-context-forge","name":"mcp-context-forge","tagline":"AI Gateway and registry for MCP, A2A, REST/gRPC APIs","github_url":"https://github.com/IBM/mcp-context-forge","owner":"IBM","repo":"mcp-context-forge","owner_avatar_url":"https://avatars.githubusercontent.com/u/1459110?v=4","primary_language":"Python","stars":4502,"forks":877,"topics":["agents","ai","api-gateway","asyncio","authentication-middleware","devops","docker","fastapi","federation","gateway","generative-ai","jwt","kubernetes","llm-agents","mcp","model-context-protocol","observability","prompt-engineering","python","tools"],"archived":false,"github_pushed_at":"2026-09-19T19:30:11+00:00","maintenance_label":"Very active","stars_delta_30d":359,"url":"https://www.graphcanon.com/tools/ibm-mcp-context-forge","markdown_url":"https://www.graphcanon.com/tools/ibm-mcp-context-forge.md","api_url":"https://www.graphcanon.com/api/graphcanon/tools/ibm-mcp-context-forge","graph_url":"https://www.graphcanon.com/api/graphcanon/graph?tool=ibm-mcp-context-forge","description":"An AI Gateway, registry, and proxy that sits in front of any MCP, A2A, or REST/gRPC APIs, exposing a unified endpoint with centralized discovery, guardrails and management. Optimizes Agent & Tool calling, and supports plugins.","homepage_url":"https://ibm.github.io/mcp-context-forge/","license":"Apache-2.0","open_issues":929,"watchers":33,"ai_summary":"Unified endpoint with centralized discovery, guardrails, management, optimized for agent and tool calling. Supports plugins.","readme_excerpt":"## Quick Start - PyPI\n\nContextForge is published on [PyPI](https://pypi.org/project/mcp-contextforge-gateway/) as `mcp-contextforge-gateway`.\n\n---\n\n> ⚠️ **`JWT_SECRET_KEY` and `AUTH_ENCRYPTION_SECRET` are required in every environment — including local development.** The gateway will not start without them. Generate real secrets with `python3 -m mcpgateway.scripts.init_secrets` before first run.\n\n**TLDR** — single command using [uv](https://docs.astral.sh/uv/):\n\n```bash\n\n---\n\n### 1 - Install & run (copy-paste friendly)\n\n```bash\n\n---\n\n# 1️⃣  Create an isolated env and install from PyPI\nmkdir mcpgateway && cd mcpgateway\npython3 -m venv .venv && source .venv/bin/activate\npip install --upgrade pip\npip install mcp-contextforge-gateway\n\n---\n\n# 1️⃣  Isolated env + install from PyPI\nmkdir mcpgateway ; cd mcpgateway\npython3 -m venv .venv ; .\\.venv\\Scripts\\Activate.ps1\npip install --upgrade pip\npip install mcp-contextforge-gateway\n\n---\n\n# 1️⃣  Isolated env + install from PyPI using uv\nmkdir mcpgateway ; cd mcpgateway\nuv venv\n.\\.venv\\Scripts\\activate\nuv pip install mcp-contextforge-gateway\n\n---\n\n# 1️⃣  Spin up the sample MCP time server using mcpgateway.translate & docker (replace docker with podman if needed)\npython3 -m mcpgateway.translate \\\n     --stdio \"docker run --rm -i ghcr.io/ibm/fast-time-server:latest -transport=stdio\" \\\n     --expose-sse \\\n     --port 8003\n\n---\n\n## Quick Start - Containers\n\nUse the official OCI image from GHCR with **Docker** *or* **Podman**.\nPlease note: Currently, arm64 is not supported on production. If you are e.g. running on MacOS with Apple Silicon chips (M1, M2, etc), you can run the containers using Rosetta or install via PyPi instead.\n\n---\n\n### 🚀 Quick Start - Docker Compose\n\n> **Important:** `docker compose up -d` does **not** build the gateway image locally by default — it uses the pre-built image from GHCR. The compose file includes a `build:` block as a fallback, but local builds require a hermetic wheel closure that is only produced by the CI pipeline. If you see a `cryptography` or dependency resolution error during build, you are hitting this — just pull the image instead (step 2 below handles this automatically).\n>\n> You also **must** have a `.env` file with real secrets before running `docker compose up -d`. The gateway will not start with placeholder values.\n\nGet a full stack running with PostgreSQL and Redis:\n\n```bash\n\n---\n\n### ☸️ Quick Start - Helm (Kubernetes)\n\nDeploy to Kubernetes with enterprise-grade features:\n\n```bash\n\n---\n\n# Check deployment status\nkubectl get pods -l app.kubernetes.io/name=mcp-context-forge\n\n---\n\n### 🐳 Docker (Single Container)\n\n```bash\n\n---\n\n## Quick Start: VS Code Dev Container\n\nClone the repo and open in VS Code—it will detect `.devcontainer` and prompt to **\"Reopen in Container\"**. The container includes Python 3.11, Docker CLI, and all project dependencies.\n\nFor detailed setup, workflows, and GitHub Codespaces instructions, see **[Developer Onboarding](https://ibm.github.io/mcp-context-forge/development/developer-onboarding/)**.\n\n---\n\n---\n\n## Installation\n\n```bash\nmake venv install-dev      # create .venv + install deps + build Admin UI\nmake serve                 # gunicorn on :4444\n```\n\nRust workspace note:\n- Workspace-owned Rust crates live under `crates/` and are picked up by the root `Cargo.toml` via `crates/*`.\n- Run `cargo build`, `cargo test`, and `cargo check` from the repo root to cover the shared workspace.\n- `make venv install-dev` creates the root `.venv`, which is also reused by the workspace's PyO3/maturin builds.\n\n<details>\n<summary><strong>Alternative: UV or pip</strong></summary>\n\n```bash\n\n---\n\n# Debian/Ubuntu: sudo apt-get install libpq-dev\n\n---\n\n# macOS: brew install libpq\n\nuv pip install 'psycopg[binary]'   # dev (pre-built wheels)\n\n---\n\n# or: uv pip install 'psycopg[c]'  # production (requires compiler)\n```\n\nConnection URL format:\n```bash\nDATABASE_URL=postgresql+psycopg://user:password@localhost:5432/mcp\n```\n\nQuick Postgres container:\n```","github_created_at":"2025-05-08T08:16:59+00:00","created_at":"2026-07-11T11:50:28.734959+00:00","updated_at":"2026-09-20T06:40:16.14637+00:00","categories":[{"slug":"developer-tools","name":"Developer Tools","url":"https://www.graphcanon.com/categories/developer-tools","markdown_url":"https://www.graphcanon.com/categories/developer-tools.md","api_url":"https://www.graphcanon.com/api/graphcanon/categories/developer-tools"},{"slug":"evaluation-observability","name":"Evaluation & Observability","url":"https://www.graphcanon.com/categories/evaluation-observability","markdown_url":"https://www.graphcanon.com/categories/evaluation-observability.md","api_url":"https://www.graphcanon.com/api/graphcanon/categories/evaluation-observability"},{"slug":"inference-serving","name":"Inference & Serving","url":"https://www.graphcanon.com/categories/inference-serving","markdown_url":"https://www.graphcanon.com/categories/inference-serving.md","api_url":"https://www.graphcanon.com/api/graphcanon/categories/inference-serving"}],"tags":[{"slug":"agents","name":"agents"},{"slug":"ai-gateway","name":"ai-gateway"},{"slug":"authentication-middleware","name":"authentication-middleware"},{"slug":"devops","name":"devops"},{"slug":"docker","name":"docker"},{"slug":"fastapi","name":"fastapi"},{"slug":"federation","name":"federation"},{"slug":"gateway","name":"gateway"}],"trust":{"provenance":{"is_fork":false,"github_id":979886407,"owner_type":"Organization","methodology":"github_public_v1","parent_repo":null,"near_duplicate_slugs":[]},"computed_at":"2026-09-20T03:52:02.372Z","maintenance":{"label":"Very active","score":96,"methodology":"github_public_v1","releases_90d":7,"days_since_push":0,"last_release_at":"2026-09-07T18:57:08Z","stars_delta_30d":359,"open_issues_delta_30d":-229},"security_summary":{"status":"no_manifest","scanner":null,"low_count":0,"high_count":0,"last_scan_at":"2026-07-11T11:50:29.876Z","medium_count":0,"scan_profile":"mcp_manifest","critical_count":0}},"capability_facts":{"mcp":{"source":"repo_scan","observed_at":"2026-09-20T03:52:03.407Z","server_manifest":false},"scan":{"source":"repo_scan","observed_at":"2026-09-20T03:52:03.407Z"},"deploy":{"source":"dockerfile:docker-compose.yml","self_host":true,"observed_at":"2026-09-20T03:52:03.407Z","managed_saas":false},"has_cli":{"value":true,"source":"pyproject.toml:[project.scripts]","observed_at":"2026-09-20T03:52:03.407Z"},"languages":{"value":["python","javascript"],"source":"github.language+package.json+pyproject.toml","observed_at":"2026-09-20T03:52:03.407Z"},"has_docker":{"value":true,"source":"dockerfile:docker-compose.yml","observed_at":"2026-09-20T03:52:03.407Z"},"license_spdx":{"value":"Apache-2.0","source":"github.license","observed_at":"2026-09-20T03:52:03.407Z"}},"decision_facts":{"hosting":null,"pricing":{"model":"freemium","summary":"Open-source, free to use for both personal and commercial projects."},"requirements":{"notes":["Supports running with Docker for ease of deployment."],"min_ram_gb":null,"requires_docker":true},"constraints":{"min_ram_gb":null,"pricing_model":"freemium","requires_docker":true},"when_to_use":["When you need to integrate multiple APIs using a unified endpoint with support for MCP, Agent-to-Agent communication, or REST/gRPC services.","For projects that require advanced guardrails and management capabilities for AI models acting as agents within the application.","If your project demands a Python-based solution that supports plugin integration to customize behavior according to specific needs."],"when_not_to_use":["When only REST API support is required, without additional functionality such as MCP or A2A services.","For applications that do not benefit from centralized discovery and management features for AI agents, preferring more decentralized approaches to development.","If your project is built in a language other than Python and integration with third-party plugins is unnecessary."],"source":"enrich:decision_facts","observed_at":"2026-07-16T20:44:47.776Z"},"constraint_facets":{"min_ram_gb":null,"pricing_model":"freemium","requires_docker":true},"decision_summary":[{"label":"Pricing","value":"freemium - Open-source, free to use for both personal and commercial projects."},{"label":"Requirements","value":"Requires Docker; Supports running with Docker for ease of deployment."},{"label":"Adopt for","value":"mcp-context-forge is an AI gateway and registry for MCP, A2A, REST/gRPC APIs. It offers centralized discovery, guardrails, management, and optimization for agent and tool calling in Python."},{"label":"License detail","value":"Available under the Apache License 2.0"}]}}