diff --git a/.bumpversion.cfg b/.bumpversion.cfg index 739c67559..f608a2cc1 100644 --- a/.bumpversion.cfg +++ b/.bumpversion.cfg @@ -1,5 +1,5 @@ [bumpversion] -current_version = 0.7.0 +current_version = 0.8.0 commit = False tag = False sign-tags = True diff --git a/.env.example b/.env.example index c8613cc6a..4820cb155 100644 --- a/.env.example +++ b/.env.example @@ -34,8 +34,6 @@ APP_ROOT_PATH= DOCS_ALLOW_BASIC_AUTH=false # Database Configuration -# Optimized for v0.7.0 multitenancy with enhanced connection pooling and timeouts - # SQLite (default) - good for development and small deployments # macOS note: If you see "sqlite3.OperationalError: disk I/O error" on macOS when running # `make serve`, move the DB to a safe APFS path (avoid iCloud/Dropbox/OneDrive/Google Drive, @@ -51,7 +49,7 @@ DATABASE_URL=sqlite:///./mcp.db # For localhost: mysql+pymysql://mysql:changeme@localhost:3306/mcp # DATABASE_URL=mysql+pymysql://mysql:changeme@localhost:3306/mcp -# Database Connection Pool Configuration (optimized for v0.7.0 multitenancy) +# Database Connection Pool Configuration # Maximum number of persistent connections (default: 200, optimized for SQLite) DB_POOL_SIZE=200 # Additional connections beyond pool_size (default: 10, reduced for SQLite) @@ -375,7 +373,7 @@ MCPGATEWAY_A2A_METRICS_ENABLED=true # MCP Server Catalog Configuration ##################################### -# Enable MCP server catalog feature (NEW in v0.7.0) +# Enable MCP server catalog feature # Allows defining a catalog of pre-configured MCP servers in a YAML file # for easy discovery and management via the Admin UI # Options: true (default), false diff --git a/.github/tools/cleanup-ghcr-versions.sh b/.github/tools/cleanup-ghcr-versions.sh index 5e348b83b..c27b6a977 100755 --- a/.github/tools/cleanup-ghcr-versions.sh +++ b/.github/tools/cleanup-ghcr-versions.sh @@ -92,7 +92,7 @@ fi ############################################################################## ORG="ibm" PKG="mcp-context-forge" -KEEP_TAGS=( "0.1.0" "v0.1.0" "0.1.1" "v0.1.1" "0.2.0" "v0.2.0" "0.3.0" "v0.3.0" "0.4.0" "v0.4.0" "0.5.0" "v0.5.0" "0.6.0" "v0.6.0" "0.7.0" "v0.7.0" "latest" ) +KEEP_TAGS=( "0.1.0" "v0.1.0" "0.1.1" "v0.1.1" "0.2.0" "v0.2.0" "0.3.0" "v0.3.0" "0.4.0" "v0.4.0" "0.5.0" "v0.5.0" "0.6.0" "v0.6.0" "0.7.0" "v0.7.0" "0.8.0" "v0.8.0" "latest" ) PER_PAGE=100 DRY_RUN=${DRY_RUN:-true} # default safe diff --git a/.github/workflows/docker-release.yml b/.github/workflows/docker-release.yml index 12af4b0e7..8353cf907 100644 --- a/.github/workflows/docker-release.yml +++ b/.github/workflows/docker-release.yml @@ -4,12 +4,12 @@ # # This workflow re-tags a Docker image (built by a previous workflow) # when a GitHub Release is published, giving it a semantic version tag -# like `v0.7.0`. It assumes the CI build has already pushed an image +# like `v0.8.0`. It assumes the CI build has already pushed an image # tagged with the commit SHA, and that all checks on that commit passed. # # ➤ Trigger: Release published (e.g. from GitHub UI or `gh release` CLI) # ➤ Assumes: Existing image tagged with the commit SHA is available -# ➤ Result: Image re-tagged as `ghcr.io/OWNER/REPO:v0.7.0` +# ➤ Result: Image re-tagged as `ghcr.io/OWNER/REPO:v0.8.0` # # ====================================================================== @@ -25,7 +25,7 @@ on: workflow_dispatch: inputs: tag: - description: 'Release tag (e.g., v0.7.0)' + description: 'Release tag (e.g., v0.8.0)' required: true type: string diff --git a/.github/workflows/release-chart.yml.inactive b/.github/workflows/release-chart.yml.inactive index 4d3db0f19..dae964091 100644 --- a/.github/workflows/release-chart.yml.inactive +++ b/.github/workflows/release-chart.yml.inactive @@ -2,7 +2,7 @@ name: Release Helm Chart on: release: - types: [published] # tag repo, ex: v0.7.0 to trigger + types: [published] # tag repo, ex: v0.8.0 to trigger permissions: contents: read packages: write diff --git a/Containerfile b/Containerfile index 1985ef5ca..1230a7e03 100644 --- a/Containerfile +++ b/Containerfile @@ -1,7 +1,7 @@ FROM registry.access.redhat.com/ubi10-minimal:10.0-1755721767 LABEL maintainer="Mihai Criveti" \ name="mcp/mcpgateway" \ - version="0.7.0" \ + version="0.8.0" \ description="MCP Gateway: An enterprise-ready Model Context Protocol Gateway" ARG PYTHON_VERSION=3.12 diff --git a/Containerfile.lite b/Containerfile.lite index 899c88145..eb2ab852e 100644 --- a/Containerfile.lite +++ b/Containerfile.lite @@ -218,7 +218,7 @@ LABEL maintainer="Mihai Criveti" \ org.opencontainers.image.title="mcp/mcpgateway" \ org.opencontainers.image.description="MCP Gateway: An enterprise-ready Model Context Protocol Gateway" \ org.opencontainers.image.licenses="Apache-2.0" \ - org.opencontainers.image.version="0.7.0" + org.opencontainers.image.version="0.8.0" # ---------------------------------------------------------------------------- # Copy the entire prepared root filesystem from the builder stage diff --git a/Makefile b/Makefile index fa3fd0a14..65e3bb148 100644 --- a/Makefile +++ b/Makefile @@ -2748,7 +2748,7 @@ MINIKUBE_ADDONS ?= ingress ingress-dns metrics-server dashboard registry regist # OCI image tag to preload into the cluster. # - By default we point to the *local* image built via `make docker-prod`, e.g. # mcpgateway/mcpgateway:latest. Override with IMAGE= to use a -# remote registry (e.g. ghcr.io/ibm/mcp-context-forge:v0.7.0). +# remote registry (e.g. ghcr.io/ibm/mcp-context-forge:v0.8.0). TAG ?= latest # override with TAG= IMAGE ?= $(IMG):$(TAG) # or IMAGE=ghcr.io/ibm/mcp-context-forge:$(TAG) @@ -3383,7 +3383,7 @@ devpi-unconfigure-pip: # ───────────────────────────────────────────────────────────────────────────── # 📦 Version helper (defaults to the version in pyproject.toml) -# override on the CLI: make VER=0.7.0 devpi-delete +# override on the CLI: make VER=0.8.0 devpi-delete # ───────────────────────────────────────────────────────────────────────────── VER ?= $(shell python3 -c "import tomllib, pathlib; \ print(tomllib.loads(pathlib.Path('pyproject.toml').read_text())['project']['version'])" \ @@ -4577,7 +4577,7 @@ MIGRATION_TEST_DIR := tests/migration MIGRATION_REPORTS_DIR := $(MIGRATION_TEST_DIR)/reports # Get supported versions from version config (n-2 policy) -MIGRATION_VERSIONS := $(shell cd $(MIGRATION_TEST_DIR) && python3 -c "from version_config import get_supported_versions; print(' '.join(get_supported_versions()))" 2>/dev/null || echo "0.5.0 0.7.0 latest") +MIGRATION_VERSIONS := $(shell cd $(MIGRATION_TEST_DIR) && python3 -c "from version_config import get_supported_versions; print(' '.join(get_supported_versions()))" 2>/dev/null || echo "0.5.0 0.8.0 latest") .PHONY: migration-test-all migration-test-sqlite migration-test-postgres migration-test-performance \ migration-setup migration-cleanup migration-debug migration-status diff --git a/README.md b/README.md index cf9664202..f8e9ef032 100644 --- a/README.md +++ b/README.md @@ -123,9 +123,7 @@ ContextForge MCP Gateway is a feature-rich gateway, proxy and MCP Registry that ## 🚀 Overview & Goals -**ContextForge** is a gateway, registry, and proxy that sits in front of any [Model Context Protocol](https://modelcontextprotocol.io) (MCP) server or REST API-exposing a unified endpoint for all your AI clients. - -**⚠️ Caution**: The current release (0.7.0) is considered alpha / early beta. It is not production-ready and should only be used for local development, testing, or experimentation. Features, APIs, and behaviors are subject to change without notice. **Do not** deploy in production environments without thorough security review, validation and additional security mechanisms. Many of the features required for secure, large-scale, or multi-tenant production deployments are still on the [project roadmap](https://ibm.github.io/mcp-context-forge/architecture/roadmap/) - which is itself evolving. +**ContextForge** is a gateway, registry, and proxy that sits in front of any [Model Context Protocol](https://modelcontextprotocol.io) (MCP) server, A2A server or REST API-exposing a unified endpoint for all your AI clients. See the [project roadmap](https://ibm.github.io/mcp-context-forge/architecture/roadmap/) for more details. It currently supports: @@ -142,9 +140,9 @@ It currently supports: For a list of upcoming features, check out the [ContextForge Roadmap](https://ibm.github.io/mcp-context-forge/architecture/roadmap/) -> Note on Multi‑Tenancy (v0.7.0): A comprehensive multi‑tenant architecture with email authentication, teams, RBAC, and resource visibility is landing in v0.7.0. See the [Migration Guide](https://github.com/IBM/mcp-context-forge/blob/main/MIGRATION-0.7.0.md) and [Changelog](https://github.com/IBM/mcp-context-forge/blob/main/CHANGELOG.md) for details. +> Note on Multi‑Tenancy (v0.7.0): A comprehensive multi‑tenant architecture with email authentication, teams, RBAC, and resource visibility is available since v0.7.0. If upgrading from an older version, see the [Migration Guide](https://github.com/IBM/mcp-context-forge/blob/main/MIGRATION-0.7.0.md) and [Changelog](https://github.com/IBM/mcp-context-forge/blob/main/CHANGELOG.md) for details. -**⚠️ Important**: MCP Gateway is not a standalone product - it is an open source component with **NO OFFICIAL SUPPORT** from IBM or its affiliates that can be integrated into your own solution architecture. If you choose to use it, you are responsible for evaluating its fit, securing the deployment, and managing its lifecycle. See [SECURITY.md](./SECURITY.md) for more details. +**⚠️ Important**: See [SECURITY.md](./SECURITY.md) for more details. --- @@ -484,13 +482,13 @@ docker run -d --name mcpgateway \ -e PLATFORM_ADMIN_PASSWORD=changeme \ -e PLATFORM_ADMIN_FULL_NAME="Platform Administrator" \ -e DATABASE_URL=sqlite:///./mcp.db \ - ghcr.io/ibm/mcp-context-forge:0.7.0 + ghcr.io/ibm/mcp-context-forge:0.8.0 # Tail logs (Ctrl+C to quit) docker logs -f mcpgateway # Generating an API key -docker run --rm -it ghcr.io/ibm/mcp-context-forge:0.7.0 \ +docker run --rm -it ghcr.io/ibm/mcp-context-forge:0.8.0 \ python3 -m mcpgateway.utils.create_jwt_token --username admin@example.com --exp 0 --secret my-test-key ``` @@ -521,7 +519,7 @@ docker run -d --name mcpgateway \ -e PLATFORM_ADMIN_EMAIL=admin@example.com \ -e PLATFORM_ADMIN_PASSWORD=changeme \ -e PLATFORM_ADMIN_FULL_NAME="Platform Administrator" \ - ghcr.io/ibm/mcp-context-forge:0.7.0 + ghcr.io/ibm/mcp-context-forge:0.8.0 ``` SQLite now lives on the host at `./data/mcp.db`. @@ -548,7 +546,7 @@ docker run -d --name mcpgateway \ -e PLATFORM_ADMIN_PASSWORD=changeme \ -e PLATFORM_ADMIN_FULL_NAME="Platform Administrator" \ -v $(pwd)/data:/data \ - ghcr.io/ibm/mcp-context-forge:0.7.0 + ghcr.io/ibm/mcp-context-forge:0.8.0 ``` Using `--network=host` allows Docker to access the local network, allowing you to add MCP servers running on your host. See [Docker Host network driver documentation](https://docs.docker.com/engine/network/drivers/host/) for more details. @@ -564,7 +562,7 @@ podman run -d --name mcpgateway \ -p 4444:4444 \ -e HOST=0.0.0.0 \ -e DATABASE_URL=sqlite:///./mcp.db \ - ghcr.io/ibm/mcp-context-forge:0.7.0 + ghcr.io/ibm/mcp-context-forge:0.8.0 ``` #### 2 - Persist SQLite @@ -583,7 +581,7 @@ podman run -d --name mcpgateway \ -p 4444:4444 \ -v $(pwd)/data:/data \ -e DATABASE_URL=sqlite:////data/mcp.db \ - ghcr.io/ibm/mcp-context-forge:0.7.0 + ghcr.io/ibm/mcp-context-forge:0.8.0 ``` #### 3 - Host networking (rootless) @@ -601,7 +599,7 @@ podman run -d --name mcpgateway \ --network=host \ -v $(pwd)/data:/data \ -e DATABASE_URL=sqlite:////data/mcp.db \ - ghcr.io/ibm/mcp-context-forge:0.7.0 + ghcr.io/ibm/mcp-context-forge:0.8.0 ``` --- @@ -610,7 +608,7 @@ podman run -d --name mcpgateway \ ✏️ Docker/Podman tips * **.env files** - Put all the `-e FOO=` lines into a file and replace them with `--env-file .env`. See the provided [.env.example](https://github.com/IBM/mcp-context-forge/blob/main/.env.example) for reference. -* **Pinned tags** - Use an explicit version (e.g. `v0.7.0`) instead of `latest` for reproducible builds. +* **Pinned tags** - Use an explicit version (e.g. `v0.8.0`) instead of `latest` for reproducible builds. * **JWT tokens** - Generate one in the running container: ```bash @@ -656,7 +654,7 @@ docker run --rm -i \ -e MCP_SERVER_URL=http://host.docker.internal:4444/servers/UUID_OF_SERVER_1/mcp \ -e MCP_TOOL_CALL_TIMEOUT=120 \ -e MCP_WRAPPER_LOG_LEVEL=DEBUG \ - ghcr.io/ibm/mcp-context-forge:0.7.0 \ + ghcr.io/ibm/mcp-context-forge:0.8.0 \ python3 -m mcpgateway.wrapper ``` @@ -704,7 +702,7 @@ python3 -m mcpgateway.wrapper Expected responses from mcpgateway.wrapper ```json -{"jsonrpc":"2.0","id":1,"result":{"protocolVersion":"2025-03-26","capabilities":{"experimental":{},"prompts":{"listChanged":false},"resources":{"subscribe":false,"listChanged":false},"tools":{"listChanged":false}},"serverInfo":{"name":"mcpgateway-wrapper","version":"0.7.0"}}} +{"jsonrpc":"2.0","id":1,"result":{"protocolVersion":"2025-03-26","capabilities":{"experimental":{},"prompts":{"listChanged":false},"resources":{"subscribe":false,"listChanged":false},"tools":{"listChanged":false}},"serverInfo":{"name":"mcpgateway-wrapper","version":"0.8.0"}}} # When there's no tools {"jsonrpc":"2.0","id":2,"result":{"tools":[]}} @@ -738,7 +736,7 @@ docker run -i --rm \ -e MCP_SERVER_URL=http://localhost:4444/servers/UUID_OF_SERVER_1/mcp \ -e MCP_AUTH=${MCP_AUTH} \ -e MCP_TOOL_CALL_TIMEOUT=120 \ - ghcr.io/ibm/mcp-context-forge:0.7.0 \ + ghcr.io/ibm/mcp-context-forge:0.8.0 \ python3 -m mcpgateway.wrapper ``` @@ -1422,7 +1420,7 @@ MCP Gateway includes **vendor-agnostic OpenTelemetry support** for distributed t | ------------------------------- | ---------------------------------------------- | --------------------- | ------------------------------------------ | | `OTEL_ENABLE_OBSERVABILITY` | Master switch for observability | `true` | `true`, `false` | | `OTEL_SERVICE_NAME` | Service identifier in traces | `mcp-gateway` | string | -| `OTEL_SERVICE_VERSION` | Service version in traces | `0.7.0` | string | +| `OTEL_SERVICE_VERSION` | Service version in traces | `0.8.0` | string | | `OTEL_DEPLOYMENT_ENVIRONMENT` | Environment tag (dev/staging/prod) | `development` | string | | `OTEL_TRACES_EXPORTER` | Trace exporter backend | `otlp` | `otlp`, `jaeger`, `zipkin`, `console`, `none` | | `OTEL_RESOURCE_ATTRIBUTES` | Custom resource attributes | (empty) | `key=value,key2=value2` | diff --git a/SECURITY.md b/SECURITY.md index 6f0b29e47..2a209472d 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -1,14 +1,10 @@ # 🔐 Security Policy -**⚠️ Important**: MCP Gateway is an **OPEN SOURCE PROJECT** provided "as-is" with **NO OFFICIAL SUPPORT** from IBM or its affiliates. Community contributions and best-effort maintenance are provided by project maintainers and contributors. +## ⚠️ Beta Software Notice -**⚠️ Important**: MCP Gateway is not a standalone product - it is an open source component that can be integrated into your own solution architecture. If you choose to use it, you are responsible for evaluating its fit, securing the deployment, and managing its lifecycle. +**Current Version: 0.8.0 (Beta)** -## ⚠️ Early Beta Software Notice - -**Current Version: 0.7.0 (Beta)** - -MCP Gateway is currently in early beta and should be treated as such until the 1.0 release. While we implement comprehensive security measures and follow best practices, important limitations exist: +MCP Gateway is currently in beta and should be treated as such until the 1.0 release. While we implement comprehensive security measures and follow best practices, important limitations exist: ### Admin UI is Development-Only @@ -59,16 +55,8 @@ For production deployments: ### Multi-Tenancy Considerations -**MCP Gateway is not yet multi-tenant ready**. If you're building a platform that serves multiple users or teams, you must implement the following in your own application layer: - -- **User isolation and data segregation** - ensure users cannot access each other's configurations -- **Role-Based Access Control (RBAC)** - manage permissions per user/team/organization -- **Resource cleanup and lifecycle management** - handle orphaned resources and quota enforcement -- **Additional input validation** - enforce tenant-specific business rules and limits -- **Audit logging** - track actions per user for compliance and security -- **Team and organization management** - handle user groups and hierarchies +Please review https://ibm.github.io/mcp-context-forge/architecture/multitenancy/ -MCP Gateway should be deployed as a **single-tenant component** within your larger multi-tenant architecture. Many enterprise features including native RBAC, team management, and tenant isolation are planned - see our [Roadmap](https://ibm.github.io/mcp-context-forge/architecture/roadmap/) for upcoming releases. ### General Beta Limitations diff --git a/charts/README.md b/charts/README.md index c48f613d5..1eda7df19 100644 --- a/charts/README.md +++ b/charts/README.md @@ -247,7 +247,7 @@ Below is a minimal example. Copy the default file and adjust for your environmen mcpContextForge: image: repository: ghcr.io/ibm/mcp-context-forge - tag: 0.7.0 + tag: 0.8.0 ingress: enabled: true host: gateway.local # replace with real DNS @@ -434,7 +434,7 @@ For every setting see the [full annotated `values.yaml`](https://github.com/IBM/ * 💾 Stateful storage - PV + PVC for Postgres (`/var/lib/postgresql/data`), storage class selectable. * 🌐 Networking & access - ClusterIP services, optional NGINX Ingress, and `NOTES.txt` with port-forward plus safe secret-fetch commands (password, bearer token, `JWT_SECRET_KEY`). * 📈 Replicas & availability - Gateway (3) and Fast-Time-Server (2) provide basic HA; stateful components run single-instance. -* 📦 Helm best-practice layout - Clear separation of Deployments, Services, ConfigMaps, Secrets, PVC/PV and Ingress; chart version 0.7.0. +* 📦 Helm best-practice layout - Clear separation of Deployments, Services, ConfigMaps, Secrets, PVC/PV and Ingress; chart version 0.8.0. * ⚙️ Horizontal Pod Autoscaler (HPA) support for mcpgateway --- diff --git a/charts/mcp-stack/CONTRIBUTING.md b/charts/mcp-stack/CONTRIBUTING.md index be1cc0550..d55fed089 100644 --- a/charts/mcp-stack/CONTRIBUTING.md +++ b/charts/mcp-stack/CONTRIBUTING.md @@ -262,8 +262,8 @@ When making changes: Update both `version` and `appVersion` in `Chart.yaml`: ```yaml -version: 0.7.0 # Chart version -appVersion: "0.7.0" # Application version +version: 0.8.0 # Chart version +appVersion: "0.8.0" # Application version ``` ### Release Checklist diff --git a/charts/mcp-stack/Chart.yaml b/charts/mcp-stack/Chart.yaml index e668b8926..47ffab18e 100644 --- a/charts/mcp-stack/Chart.yaml +++ b/charts/mcp-stack/Chart.yaml @@ -22,8 +22,8 @@ type: application # * appVersion - upstream application version; shown in UIs but not # used for upgrade logic. # -------------------------------------------------------------------- -version: 0.7.0 -appVersion: "0.7.0" +version: 0.8.0 +appVersion: "0.8.0" # Icon shown by registries / dashboards (must be an http(s) URL). icon: https://raw.githubusercontent.com/IBM/mcp-context-forge/main/docs/theme/logo.png diff --git a/charts/mcp-stack/README.md b/charts/mcp-stack/README.md index e5f0002a8..03882fb09 100644 --- a/charts/mcp-stack/README.md +++ b/charts/mcp-stack/README.md @@ -1,6 +1,6 @@ # mcp-stack -![Version: 0.7.0](https://img.shields.io/badge/Version-0.7.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 0.7.0](https://img.shields.io/badge/AppVersion-0.7.0-informational?style=flat-square) +![Version: 0.8.0](https://img.shields.io/badge/Version-0.8.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 0.8.0](https://img.shields.io/badge/AppVersion-0.8.0-informational?style=flat-square) A full-stack Helm chart for IBM's **Model Context Protocol (MCP) Gateway & Registry - Context-Forge**. It bundles: @@ -290,7 +290,7 @@ Kubernetes: `>=1.21.0` | mcpFastTimeServer.enabled | bool | `true` | | | mcpFastTimeServer.replicaCount | int | `2` | | | mcpFastTimeServer.image.repository | string | `"ghcr.io/ibm/fast-time-server"` | | -| mcpFastTimeServer.image.tag | string | `"0.7.0"` | | +| mcpFastTimeServer.image.tag | string | `"0.8.0"` | | | mcpFastTimeServer.image.pullPolicy | string | `"IfNotPresent"` | | | mcpFastTimeServer.port | int | `8080` | | | mcpFastTimeServer.ingress.enabled | bool | `true` | | diff --git a/charts/mcp-stack/values.schema.json b/charts/mcp-stack/values.schema.json index c21872ac5..0028c0920 100644 --- a/charts/mcp-stack/values.schema.json +++ b/charts/mcp-stack/values.schema.json @@ -1208,7 +1208,7 @@ "tag": { "type": "string", "description": "Image tag", - "default": "0.7.0" + "default": "0.8.0" }, "pullPolicy": { "type": "string", diff --git a/charts/mcp-stack/values.yaml b/charts/mcp-stack/values.yaml index 203a82a8a..7065ffb32 100644 --- a/charts/mcp-stack/values.yaml +++ b/charts/mcp-stack/values.yaml @@ -637,7 +637,7 @@ mcpFastTimeServer: replicaCount: 2 image: repository: ghcr.io/ibm/fast-time-server - tag: "0.7.0" + tag: "0.8.0" pullPolicy: IfNotPresent port: 8080 diff --git a/deployment/CHARTS.md b/deployment/CHARTS.md index 4e58e3ad1..57a4bc55b 100644 --- a/deployment/CHARTS.md +++ b/deployment/CHARTS.md @@ -4,7 +4,7 @@ ```bash helm lint . -helm package . # → mcp-context-forge-chart-0.7.0.tgz +helm package . # → mcp-context-forge-chart-0.8.0.tgz ``` ## Log in to GHCR: @@ -18,7 +18,7 @@ echo "${CR_PAT}" | \ ## Push the chart (separate package path) ```bash -helm push mcp-*-0.7.0.tgz oci://ghcr.io/ibm/mcp-context-forge +helm push mcp-*-0.8.0.tgz oci://ghcr.io/ibm/mcp-context-forge ``` ## Link the package to this repo (once) @@ -34,5 +34,5 @@ This lets others see the chart in the repo's **Packages** sidebar. ## Verify & use ```bash -helm pull oci://ghcr.io/ibm/mcp-context-forge-chart --version 0.7.0 +helm pull oci://ghcr.io/ibm/mcp-context-forge-chart --version 0.8.0 ``` diff --git a/deployment/ansible/ibm-cloud/README.md b/deployment/ansible/ibm-cloud/README.md index 18fdf785b..cc59d68f4 100644 --- a/deployment/ansible/ibm-cloud/README.md +++ b/deployment/ansible/ibm-cloud/README.md @@ -5,7 +5,7 @@ This folder spins up: 1. A resource-group + VPC IKS cluster 2. Databases-for-PostgreSQL & Databases-for-Redis 3. Service-keys → Kubernetes Secrets -4. The container `ghcr.io/ibm/mcp-context-forge:v0.7.0` behind an Ingress URL +4. The container `ghcr.io/ibm/mcp-context-forge:v0.8.0` behind an Ingress URL ## Prerequisites diff --git a/deployment/ansible/ibm-cloud/group_vars/all.yml b/deployment/ansible/ibm-cloud/group_vars/all.yml index 1bb81f880..f3114bdce 100644 --- a/deployment/ansible/ibm-cloud/group_vars/all.yml +++ b/deployment/ansible/ibm-cloud/group_vars/all.yml @@ -10,6 +10,6 @@ postgres_version: "14" redis_version: "7" # Application -gateway_image: "ghcr.io/ibm/mcp-context-forge:v0.7.0" +gateway_image: "ghcr.io/ibm/mcp-context-forge:v0.8.0" gateway_replicas: 2 ingress_class: public-iks-k8s-nginx diff --git a/deployment/terraform/ibm-cloud/helm_release.tf b/deployment/terraform/ibm-cloud/helm_release.tf index 9f9e76031..22cdaacb7 100644 --- a/deployment/terraform/ibm-cloud/helm_release.tf +++ b/deployment/terraform/ibm-cloud/helm_release.tf @@ -5,7 +5,7 @@ resource "helm_release" "mcpgw" { name = "mcpgateway" repository = "oci://ghcr.io/ibm/mcp-context-forge-chart/mcp-context-forge-chart" chart = "mcpgateway" - version = "0.7.0" + version = "0.8.0" values = [ yamlencode({ diff --git a/docker-compose.yml b/docker-compose.yml index 506ad2ea8..701daa403 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -25,8 +25,8 @@ services: # ────────────────────────────────────────────────────────────────────── gateway: image: ${IMAGE_LOCAL:-mcpgateway/mcpgateway:latest} # Use the local latest image. Run `make docker-prod` to build it. + #image: ghcr.io/ibm/mcp-context-forge:0.8.0 # Use the release MCP Context Forge image #image: ghcr.io/ibm/mcp-context-forge:0.7.0 # Testing migration from 0.7.0 - #image: ghcr.io/ibm/mcp-context-forge:0.6.0 # Use the release MCP Context Forge image build: context: . dockerfile: Containerfile # Same one the Makefile builds @@ -167,7 +167,7 @@ services: # networks: [mcpnet] # migration: - # #image: ghcr.io/ibm/mcp-context-forge:0.7.0 # Use the release MCP Context Forge image + # #image: ghcr.io/ibm/mcp-context-forge:0.7.0 # Testing migration from 0.7.0 # image: mcpgateway/mcpgateway:latest # Use the local latest image. Run `make docker-prod` to build it. # build: # context: . diff --git a/docs/docs/architecture/roadmap.md b/docs/docs/architecture/roadmap.md index d93601da3..b87bdcf5f 100644 --- a/docs/docs/architecture/roadmap.md +++ b/docs/docs/architecture/roadmap.md @@ -5,24 +5,24 @@ ## Release Status Summary -| Release | Due Date | Completion | Status | Description | -| ------- | ----------- | ---------- | ---------- | ----------- | -| 1.6.0 | 03 Feb 2026 | 0 % | Open | New MCP Servers and Agents | -| 1.5.0 | 20 Jan 2026 | 0 % | Open | Documentation, Technical Debt, Bugfixes | -| 1.4.0 | 06 Jan 2026 | 0 % | Open | Technical Debt and Quality | -| 1.3.0 | 23 Dec 2025 | 0 % | Open | Catalog Improvements, A2A Improvements, MCP Standard Review and Sync, Technical Debt | -| 1.2.0 | 09 Dec 2025 | 0 % | Open | Catalog Enhancements, Ratings, experience and UI | -| 1.1.0 | 25 Nov 2025 | 0 % | Open | Post-GA Testing, Bugfixing, Documentation, Performance and Scale | -| 1.0.0 | 11 Nov 2025 | 0 % | Open | General Availability & Release Candidate Hardening - stable & audited | -| 0.9.0 | 14 Oct 2025 | 8 % | Open | Interoperability, marketplaces & advanced connectivity | -| 0.8.0 | 30 Sep 2025 | 3 % | Open | Enterprise Security & Policy Guardrails | -| 0.7.0 | 16 Sep 2025 | 78 % | Open | Multitenancy and RBAC (Private/Team/Global catalogs), Extended Connectivity, Core Observability & Starter Agents (OpenAI and A2A) | -| 0.6.0 | 19 Aug 2025 | 100 % | **Closed** | Security, Scale & Smart Automation | -| 0.5.0 | 05 Aug 2025 | 100 % | **Closed** | Enterprise Operability, Auth, Configuration & Observability | -| 0.4.0 | 22 Jul 2025 | 100 % | **Closed** | Bugfixes, Security, Resilience (retry with exponential backoff), code quality and technical debt | -| 0.3.0 | 08 Jul 2025 | 100 % | **Closed** | Annotations and multi-server tool federations | -| 0.2.0 | 24 Jun 2025 | 100 % | **Closed** | Streamable HTTP, Infra-as-Code, Dark Mode | -| 0.1.0 | 05 Jun 2025 | 100 % | **Closed** | Initial release | +| Release | Due Date | Completion | Status | Description | +| ------- | ----------- | ---------- | ------------ | ----------- | +| 1.6.0 | 02 Jun 2026 | 0 % | Open | New MCP Servers and Agents | +| 1.5.0 | 05 May 2026 | 0 % | Open | Documentation, Technical Debt, Bugfixes | +| 1.4.0 | 07 Apr 2026 | 0 % | Open | Technical Debt and Quality | +| 1.3.0 | 03 Mar 2026 | 0 % | Open | Catalog Improvements, A2A Improvements, MCP Standard Review and Sync, Technical Debt | +| 1.2.0 | 03 Feb 2026 | 0 % | Open | Release 1.2.0 - Catalog Enhancements, Ratings, experience and UI | +| 1.1.0 | 06 Jan 2026 | 0 % | Open | Post-GA Testing, Bugfixing, Documentation, Performance and Scale | +| 1.0.0 | 02 Dec 2025 | 0 % | Open | Release 1.0 General Availability & Release Candidate Hardening - stable & audited | +| 0.9.0 | 04 Nov 2025 | 1 % | Open | Interoperability, marketplaces & advanced connectivity | +| 0.8.0 | 07 Oct 2025 | 100 % | **Closed** | Enterprise Security & Policy Guardrails | +| 0.7.0 | 16 Sep 2025 | 100 % | **Closed** | Multitenancy and RBAC (Private/Team/Global catalogs), Extended Connectivity, Core Observability & Starter Agents (OpenAI and A2A) | +| 0.6.0 | 19 Aug 2025 | 100 % | **Closed** | Security, Scale & Smart Automation | +| 0.5.0 | 05 Aug 2025 | 100 % | **Closed** | Enterprise Operability, Auth, Configuration & Observability | +| 0.4.0 | 22 Jul 2025 | 100 % | **Closed** | Bugfixes, Security, Resilience (retry with exponential backoff), code quality and technical debt (test coverage, linting, security scans, GitHub Actions, Makefile, Helm improvements) | +| 0.3.0 | 08 Jul 2025 | 100 % | **Closed** | Annotations and multi-server tool federations | +| 0.2.0 | 24 Jun 2025 | 100 % | **Closed** | Streamable HTTP, Infra-as-Code, Dark Mode | +| 0.1.0 | 05 Jun 2025 | 100 % | **Closed** | Initial release | --- @@ -33,18 +33,18 @@ Initial release ???+ check "✨ Completed Features (3)" - - ✅ [**#27**](https://github.com/IBM/mcp-context-forge/issues/27) - Add /ready endpoint for readiness probe - - ✅ [**#24**](https://github.com/IBM/mcp-context-forge/issues/24) - Publish Helm chart for Kubernetes deployment - - ✅ [**#23**](https://github.com/IBM/mcp-context-forge/issues/23) - Add VS Code Devcontainer support for instant onboarding + - ✅ [**#27**](https://github.com/IBM/mcp-context-forge/issues/27) - [Feature]: Add /ready endpoint for readiness probe + - ✅ [**#24**](https://github.com/IBM/mcp-context-forge/issues/24) - [Feature]: Publish Helm chart for Kubernetes deployment + - ✅ [**#23**](https://github.com/IBM/mcp-context-forge/issues/23) - [Feature]: Add VS Code Devcontainer support for instant onboarding ???+ check "🐛 Completed Bugs (3)" - ✅ [**#49**](https://github.com/IBM/mcp-context-forge/issues/49) - [Bug]:make venv install serve fails with "./run-gunicorn.sh: line 40: python: command not found" - - ✅ [**#37**](https://github.com/IBM/mcp-context-forge/issues/37) - Issues with the gateway Container Image - - ✅ [**#35**](https://github.com/IBM/mcp-context-forge/issues/35) - Error when running in Docker Desktop for Windows + - ✅ [**#37**](https://github.com/IBM/mcp-context-forge/issues/37) - [Bug]: Issues with the gateway Container Image + - ✅ [**#35**](https://github.com/IBM/mcp-context-forge/issues/35) - [Bug]: Error when running in Docker Desktop for Windows ???+ check "📚 Completed Documentation (2)" - - ✅ [**#50**](https://github.com/IBM/mcp-context-forge/issues/50) - virtual env location is incorrect - - ✅ [**#30**](https://github.com/IBM/mcp-context-forge/issues/30) - Deploying to Google Cloud Run + - ✅ [**#50**](https://github.com/IBM/mcp-context-forge/issues/50) - [Docs]: virtual env location is incorrect + - ✅ [**#30**](https://github.com/IBM/mcp-context-forge/issues/30) - [Docs]: Deploying to Google Cloud Run --- @@ -55,18 +55,18 @@ Streamable HTTP, Infra-as-Code, Dark Mode ???+ check "✨ Completed Features (3)" - - ✅ [**#125**](https://github.com/IBM/mcp-context-forge/issues/125) - Add Streamable HTTP MCP servers to Gateway - - ✅ [**#109**](https://github.com/IBM/mcp-context-forge/issues/109) - Implement Streamable HTTP Transport for Client Connections to MCP Gateway - - ✅ [**#25**](https://github.com/IBM/mcp-context-forge/issues/25) - Add "Version and Environment Info" tab to Admin UI + - ✅ [**#125**](https://github.com/IBM/mcp-context-forge/issues/125) - [Feature Request]: Add Streamable HTTP MCP servers to Gateway + - ✅ [**#109**](https://github.com/IBM/mcp-context-forge/issues/109) - [Feature Request]: Implement Streamable HTTP Transport for Client Connections to MCP Gateway + - ✅ [**#25**](https://github.com/IBM/mcp-context-forge/issues/25) - [Feature]: Add "Version and Environment Info" tab to Admin UI ???+ check "🐛 Completed Bugs (2)" - - ✅ [**#85**](https://github.com/IBM/mcp-context-forge/issues/85) - internal server error comes if there is any error while adding an entry or even any crud operation is happening - - ✅ [**#51**](https://github.com/IBM/mcp-context-forge/issues/51) - Internal server running when running gunicorn after install + - ✅ [**#85**](https://github.com/IBM/mcp-context-forge/issues/85) - [Bug]: internal server error comes if there is any error while adding an entry or even any crud operation is happening + - ✅ [**#51**](https://github.com/IBM/mcp-context-forge/issues/51) - [Bug]: Internal server running when running gunicorn after install ???+ check "📚 Completed Documentation (3)" - - ✅ [**#98**](https://github.com/IBM/mcp-context-forge/issues/98) - Add additional information for using the mcpgateway with Claude desktop + - ✅ [**#98**](https://github.com/IBM/mcp-context-forge/issues/98) - [Docs]: Add additional information for using the mcpgateway with Claude desktop - ✅ [**#71**](https://github.com/IBM/mcp-context-forge/issues/71) - [Docs]:Documentation Over Whelming Cannot figure out the basic task of adding an MCP server - - ✅ [**#21**](https://github.com/IBM/mcp-context-forge/issues/21) - Deploying to Fly.io + - ✅ [**#21**](https://github.com/IBM/mcp-context-forge/issues/21) - [Docs]: Deploying to Fly.io --- @@ -77,98 +77,98 @@ Annotations and multi-server tool federations ???+ check "✨ Completed Features (8)" - - ✅ [**#265**](https://github.com/IBM/mcp-context-forge/issues/265) - Sample MCP Server - Go (fast-time-server) - - ✅ [**#179**](https://github.com/IBM/mcp-context-forge/issues/179) - Configurable Connection Retries for DB and Redis - - ✅ [**#159**](https://github.com/IBM/mcp-context-forge/issues/159) - Add auto activation of mcp-server, when it goes up back again - - ✅ [**#154**](https://github.com/IBM/mcp-context-forge/issues/154) - Export connection strings to various clients from UI and via API - - ✅ [**#135**](https://github.com/IBM/mcp-context-forge/issues/135) - Dynamic UI Picker for Tool, Resource, and Prompt Associations - - ✅ [**#116**](https://github.com/IBM/mcp-context-forge/issues/116) - Namespace Composite Key & UUIDs for Tool Identity + - ✅ [**#265**](https://github.com/IBM/mcp-context-forge/issues/265) - [Feature Request]: Sample MCP Server - Go (fast-time-server) + - ✅ [**#179**](https://github.com/IBM/mcp-context-forge/issues/179) - [Feature Request]: Configurable Connection Retries for DB and Redis + - ✅ [**#159**](https://github.com/IBM/mcp-context-forge/issues/159) - [Feature Request]: Add auto activation of mcp-server, when it goes up back again + - ✅ [**#154**](https://github.com/IBM/mcp-context-forge/issues/154) - [Feature Request]: Export connection strings to various clients from UI and via API + - ✅ [**#135**](https://github.com/IBM/mcp-context-forge/issues/135) - [Feature Request]: Dynamic UI Picker for Tool, Resource, and Prompt Associations + - ✅ [**#116**](https://github.com/IBM/mcp-context-forge/issues/116) - [Feature Request]: Namespace Composite Key & UUIDs for Tool Identity - ✅ [**#100**](https://github.com/IBM/mcp-context-forge/issues/100) - Add path parameter or replace value in input payload for a REST API? - - ✅ [**#26**](https://github.com/IBM/mcp-context-forge/issues/26) - Add dark mode toggle to Admin UI + - ✅ [**#26**](https://github.com/IBM/mcp-context-forge/issues/26) - [Feature]: Add dark mode toggle to Admin UI ???+ check "🐛 Completed Bugs (9)" - - ✅ [**#316**](https://github.com/IBM/mcp-context-forge/issues/316) - Correctly create filelock_path: str = "tmp/gateway_service_leader.lock" in /tmp not current directory - - ✅ [**#303**](https://github.com/IBM/mcp-context-forge/issues/303) - Update manager.py and admin.js removed `is_active` field - replace with separate `enabled` and `reachable` fields from migration - - ✅ [**#302**](https://github.com/IBM/mcp-context-forge/issues/302) - Alembic configuration not packaged with pip wheel, `pip install . && mcpgateway` fails on db migration - - ✅ [**#197**](https://github.com/IBM/mcp-context-forge/issues/197) - Pytest run exposes warnings from outdated Pydantic patterns, deprecated stdlib functions - - ✅ [**#189**](https://github.com/IBM/mcp-context-forge/issues/189) - Close button for parameter input scheme does not work - - ✅ [**#152**](https://github.com/IBM/mcp-context-forge/issues/152) - not able to add Github Remote Server - - ✅ [**#132**](https://github.com/IBM/mcp-context-forge/issues/132) - SBOM Generation Failure - - ✅ [**#131**](https://github.com/IBM/mcp-context-forge/issues/131) - Documentation Generation fails due to error in Makefile's image target - - ✅ [**#28**](https://github.com/IBM/mcp-context-forge/issues/28) - Reactivating a gateway logs warning due to 'dict' object used as Pydantic model + - ✅ [**#316**](https://github.com/IBM/mcp-context-forge/issues/316) - [Bug]: Correctly create filelock_path: str = "tmp/gateway_service_leader.lock" in /tmp not current directory + - ✅ [**#303**](https://github.com/IBM/mcp-context-forge/issues/303) - [Bug]: Update manager.py and admin.js removed `is_active` field - replace with separate `enabled` and `reachable` fields from migration + - ✅ [**#302**](https://github.com/IBM/mcp-context-forge/issues/302) - [Bug]: Alembic configuration not packaged with pip wheel, `pip install . && mcpgateway` fails on db migration + - ✅ [**#197**](https://github.com/IBM/mcp-context-forge/issues/197) - [Bug]: Pytest run exposes warnings from outdated Pydantic patterns, deprecated stdlib functions + - ✅ [**#189**](https://github.com/IBM/mcp-context-forge/issues/189) - [Bug]: Close button for parameter input scheme does not work + - ✅ [**#152**](https://github.com/IBM/mcp-context-forge/issues/152) - [Bug]: not able to add Github Remote Server + - ✅ [**#132**](https://github.com/IBM/mcp-context-forge/issues/132) - [Bug]: SBOM Generation Failure + - ✅ [**#131**](https://github.com/IBM/mcp-context-forge/issues/131) - [Bug]: Documentation Generation fails due to error in Makefile's image target + - ✅ [**#28**](https://github.com/IBM/mcp-context-forge/issues/28) - [Bug]: Reactivating a gateway logs warning due to 'dict' object used as Pydantic model ???+ check "📚 Completed Documentation (1)" - - ✅ [**#18**](https://github.com/IBM/mcp-context-forge/issues/18) - Add Developer Workstation Setup Guide for Mac (Intel/ARM), Linux, and Windows + - ✅ [**#18**](https://github.com/IBM/mcp-context-forge/issues/18) - [Docs]: Add Developer Workstation Setup Guide for Mac (Intel/ARM), Linux, and Windows --- -## Release 0.4.0 - Bugfixes, Security, Resilience (retry with exponential backoff), code quality and technical debt +## Release 0.4.0 - Bugfixes, Security, Resilience (retry with exponential backoff), code quality and technical debt (test coverage, linting, security scans, GitHub Actions, Makefile, Helm improvements) !!! success "Release 0.4.0 - Completed (100%)" **Due:** 22 Jul 2025 | **Status:** Closed - Bugfixes, Security, Resilience (retry with exponential backoff), code quality and technical debt + Bugfixes, Security, Resilience (retry with exponential backoff), code quality and technical debt (test coverage, linting, security scans, GitHub Actions, Makefile, Helm improvements) ???+ check "✨ Completed Features (9)" - - ✅ [**#456**](https://github.com/IBM/mcp-context-forge/issues/456) - HTTPX Client with Smart Retry and Backoff Mechanism + - ✅ [**#456**](https://github.com/IBM/mcp-context-forge/issues/456) - [Feature Request]: HTTPX Client with Smart Retry and Backoff Mechanism - ✅ [**#351**](https://github.com/IBM/mcp-context-forge/issues/351) - CHORE: Checklist for complete End-to-End Validation Testing for All API Endpoints, UI and Data Validation - ✅ [**#340**](https://github.com/IBM/mcp-context-forge/issues/340) - [Security]: Add input validation for main API endpoints (depends on #339 /admin API validation) - ✅ [**#339**](https://github.com/IBM/mcp-context-forge/issues/339) - [Security]: Add input validation for /admin endpoints - ✅ [**#338**](https://github.com/IBM/mcp-context-forge/issues/338) - [Security]: Eliminate all lint issues in web stack - ✅ [**#336**](https://github.com/IBM/mcp-context-forge/issues/336) - [Security]: Implement output escaping for user data in UI - - ✅ [**#233**](https://github.com/IBM/mcp-context-forge/issues/233) - Contextual Hover-Help Tooltips in UI - - ✅ [**#181**](https://github.com/IBM/mcp-context-forge/issues/181) - Test MCP Server Connectivity Debugging Tool - - ✅ [**#177**](https://github.com/IBM/mcp-context-forge/issues/177) - Persistent Admin UI Filter State + - ✅ [**#233**](https://github.com/IBM/mcp-context-forge/issues/233) - [Feature Request]: Contextual Hover-Help Tooltips in UI + - ✅ [**#181**](https://github.com/IBM/mcp-context-forge/issues/181) - [Feature Request]: Test MCP Server Connectivity Debugging Tool + - ✅ [**#177**](https://github.com/IBM/mcp-context-forge/issues/177) - [Feature Request]: Persistent Admin UI Filter State ???+ check "🐛 Completed Bugs (26)" - - ✅ [**#508**](https://github.com/IBM/mcp-context-forge/issues/508) - "PATCH" in global tools while creating REST API integration through UI - - ✅ [**#495**](https://github.com/IBM/mcp-context-forge/issues/495) - test_admin_tool_name_conflict creates record in actual db + - ✅ [**#508**](https://github.com/IBM/mcp-context-forge/issues/508) - [BUG]: "PATCH" in global tools while creating REST API integration through UI + - ✅ [**#495**](https://github.com/IBM/mcp-context-forge/issues/495) - [Bug]: test_admin_tool_name_conflict creates record in actual db - ✅ [**#476**](https://github.com/IBM/mcp-context-forge/issues/476) - [Bug]:UI Does Not Show Error for Duplicate Server Name - - ✅ [**#472**](https://github.com/IBM/mcp-context-forge/issues/472) - auth_username and auth_password not getting set in GET /gateways/ API - - ✅ [**#471**](https://github.com/IBM/mcp-context-forge/issues/471) - _populate_auth not working - - ✅ [**#424**](https://github.com/IBM/mcp-context-forge/issues/424) - MCP Gateway Doesn't Detect HTTPS/TLS Context or respect X-Forwarded-Proto when using Federation - - ✅ [**#419**](https://github.com/IBM/mcp-context-forge/issues/419) - Remove unused lock_file_path from config.py (trips up bandit) - - ✅ [**#416**](https://github.com/IBM/mcp-context-forge/issues/416) - Achieve 100% bandit lint for version.py (remove git command from version.py, tests and UI and rely on semantic version only) - - ✅ [**#412**](https://github.com/IBM/mcp-context-forge/issues/412) - Replace assert statements with explicit error handling in translate.py and fix bandit lint issues - - ✅ [**#396**](https://github.com/IBM/mcp-context-forge/issues/396) - Test server URL does not work correctly - - ✅ [**#387**](https://github.com/IBM/mcp-context-forge/issues/387) - Respect GATEWAY_TOOL_NAME_SEPARATOR for gateway slug - - ✅ [**#384**](https://github.com/IBM/mcp-context-forge/issues/384) - Push image to GHCR incorrectly runs in PR - - ✅ [**#382**](https://github.com/IBM/mcp-context-forge/issues/382) - API incorrectly shows version, use semantic version from __init__ + - ✅ [**#472**](https://github.com/IBM/mcp-context-forge/issues/472) - [Bug]: auth_username and auth_password not getting set in GET /gateways/ API + - ✅ [**#471**](https://github.com/IBM/mcp-context-forge/issues/471) - [Bug]: _populate_auth not working + - ✅ [**#424**](https://github.com/IBM/mcp-context-forge/issues/424) - [Bug]: MCP Gateway Doesn't Detect HTTPS/TLS Context or respect X-Forwarded-Proto when using Federation + - ✅ [**#419**](https://github.com/IBM/mcp-context-forge/issues/419) - [Bug]: Remove unused lock_file_path from config.py (trips up bandit) + - ✅ [**#416**](https://github.com/IBM/mcp-context-forge/issues/416) - [Bug]: Achieve 100% bandit lint for version.py (remove git command from version.py, tests and UI and rely on semantic version only) + - ✅ [**#412**](https://github.com/IBM/mcp-context-forge/issues/412) - [Bug]: Replace assert statements with explicit error handling in translate.py and fix bandit lint issues + - ✅ [**#396**](https://github.com/IBM/mcp-context-forge/issues/396) - [Bug]: Test server URL does not work correctly + - ✅ [**#387**](https://github.com/IBM/mcp-context-forge/issues/387) - [Bug]: Respect GATEWAY_TOOL_NAME_SEPARATOR for gateway slug + - ✅ [**#384**](https://github.com/IBM/mcp-context-forge/issues/384) - [Bug]: Push image to GHCR incorrectly runs in PR + - ✅ [**#382**](https://github.com/IBM/mcp-context-forge/issues/382) - [Bug]: API incorrectly shows version, use semantic version from __init__ - ✅ [**#378**](https://github.com/IBM/mcp-context-forge/issues/378) - [Bug] Fix Unit Tests to Handle UI-Disabled Mode - - ✅ [**#374**](https://github.com/IBM/mcp-context-forge/issues/374) - Fix "metrics-loading" Element Not Found Console Warning - - ✅ [**#371**](https://github.com/IBM/mcp-context-forge/issues/371) - Fix Makefile to let you pick docker or podman and work consistently with the right image name - - ✅ [**#369**](https://github.com/IBM/mcp-context-forge/issues/369) - Fix Version Endpoint to Include Semantic Version (Not Just Git Revision) - - ✅ [**#367**](https://github.com/IBM/mcp-context-forge/issues/367) - Fix "Test Server Connectivity" Feature in Admin UI - - ✅ [**#366**](https://github.com/IBM/mcp-context-forge/issues/366) - Fix Dark Theme Visibility Issues in Admin UI - - ✅ [**#361**](https://github.com/IBM/mcp-context-forge/issues/361) - Prompt and RPC Endpoints Accept XSS Content Without Validation Error - - ✅ [**#359**](https://github.com/IBM/mcp-context-forge/issues/359) - Gateway validation accepts invalid transport types - - ✅ [**#356**](https://github.com/IBM/mcp-context-forge/issues/356) - Annotations not editable - - ✅ [**#355**](https://github.com/IBM/mcp-context-forge/issues/355) - Large empty space after line number in text boxes - - ✅ [**#354**](https://github.com/IBM/mcp-context-forge/issues/354) - Edit screens not populating fields - - ✅ [**#352**](https://github.com/IBM/mcp-context-forge/issues/352) - Resources - All data going into content + - ✅ [**#374**](https://github.com/IBM/mcp-context-forge/issues/374) - [Bug]: Fix "metrics-loading" Element Not Found Console Warning + - ✅ [**#371**](https://github.com/IBM/mcp-context-forge/issues/371) - [Bug]: Fix Makefile to let you pick docker or podman and work consistently with the right image name + - ✅ [**#369**](https://github.com/IBM/mcp-context-forge/issues/369) - [Bug]: Fix Version Endpoint to Include Semantic Version (Not Just Git Revision) + - ✅ [**#367**](https://github.com/IBM/mcp-context-forge/issues/367) - [Bug]: Fix "Test Server Connectivity" Feature in Admin UI + - ✅ [**#366**](https://github.com/IBM/mcp-context-forge/issues/366) - [Bug]: Fix Dark Theme Visibility Issues in Admin UI + - ✅ [**#361**](https://github.com/IBM/mcp-context-forge/issues/361) - [Bug]: Prompt and RPC Endpoints Accept XSS Content Without Validation Error + - ✅ [**#359**](https://github.com/IBM/mcp-context-forge/issues/359) - [BUG]: Gateway validation accepts invalid transport types + - ✅ [**#356**](https://github.com/IBM/mcp-context-forge/issues/356) - [Bug]: Annotations not editable + - ✅ [**#355**](https://github.com/IBM/mcp-context-forge/issues/355) - [Bug]: Large empty space after line number in text boxes + - ✅ [**#354**](https://github.com/IBM/mcp-context-forge/issues/354) - [Bug]: Edit screens not populating fields + - ✅ [**#352**](https://github.com/IBM/mcp-context-forge/issues/352) - [Bug]: Resources - All data going into content - ✅ [**#213**](https://github.com/IBM/mcp-context-forge/issues/213) - [Bug]:Can't use `STREAMABLEHTTP` ???+ check "🔒 Completed Security (1)" - - ✅ [**#552**](https://github.com/IBM/mcp-context-forge/issues/552) - Add comprehensive input validation security test suite + - ✅ [**#552**](https://github.com/IBM/mcp-context-forge/issues/552) - [SECURITY CHORE]: Add comprehensive input validation security test suite ???+ check "🔧 Completed Chores (13)" - - ✅ [**#558**](https://github.com/IBM/mcp-context-forge/issues/558) - Ignore tests/security/test_input_validation.py in pre-commit for bidi-controls - - ✅ [**#499**](https://github.com/IBM/mcp-context-forge/issues/499) - Add nodejsscan security scanner - - ✅ [**#467**](https://github.com/IBM/mcp-context-forge/issues/467) - Achieve 100% docstring coverage (make interrogate) - currently at 96.3% - - ✅ [**#433**](https://github.com/IBM/mcp-context-forge/issues/433) - Fix all Makefile targets to work without pre-activated venv and check for OS depends - - ✅ [**#421**](https://github.com/IBM/mcp-context-forge/issues/421) - Achieve zero flagged Bandit issues - - ✅ [**#415**](https://github.com/IBM/mcp-context-forge/issues/415) - Additional Python Security Scanners - - ✅ [**#399**](https://github.com/IBM/mcp-context-forge/issues/399) - Create e2e acceptance test docs - - ✅ [**#375**](https://github.com/IBM/mcp-context-forge/issues/375) - Fix yamllint to Ignore node_modules Directory - - ✅ [**#362**](https://github.com/IBM/mcp-context-forge/issues/362) - Implement Docker HEALTHCHECK - - ✅ [**#305**](https://github.com/IBM/mcp-context-forge/issues/305) - Add vulture (dead code detect) and unimport (unused import detect) to Makefile and GitHub Actions - - ✅ [**#279**](https://github.com/IBM/mcp-context-forge/issues/279) - Implement security audit and vulnerability scanning with grype in Makefile and GitHub Actions - - ✅ [**#249**](https://github.com/IBM/mcp-context-forge/issues/249) - Achieve 60% doctest coverage and add Makefile and CI/CD targets for doctest and coverage - - ✅ [**#210**](https://github.com/IBM/mcp-context-forge/issues/210) - Raise pylint from 9.16/10 -> 10/10 + - ✅ [**#558**](https://github.com/IBM/mcp-context-forge/issues/558) - [CHORE]: Ignore tests/security/test_input_validation.py in pre-commit for bidi-controls + - ✅ [**#499**](https://github.com/IBM/mcp-context-forge/issues/499) - [CHORE]: Add nodejsscan security scanner + - ✅ [**#467**](https://github.com/IBM/mcp-context-forge/issues/467) - [CHORE]: Achieve 100% docstring coverage (make interrogate) - currently at 96.3% + - ✅ [**#433**](https://github.com/IBM/mcp-context-forge/issues/433) - [CHORE]: Fix all Makefile targets to work without pre-activated venv and check for OS depends + - ✅ [**#421**](https://github.com/IBM/mcp-context-forge/issues/421) - [CHORE]: Achieve zero flagged Bandit issues + - ✅ [**#415**](https://github.com/IBM/mcp-context-forge/issues/415) - [CHORE]: Additional Python Security Scanners + - ✅ [**#399**](https://github.com/IBM/mcp-context-forge/issues/399) - [Test]: Create e2e acceptance test docs + - ✅ [**#375**](https://github.com/IBM/mcp-context-forge/issues/375) - [CHORE]: Fix yamllint to Ignore node_modules Directory + - ✅ [**#362**](https://github.com/IBM/mcp-context-forge/issues/362) - [CHORE]: Implement Docker HEALTHCHECK + - ✅ [**#305**](https://github.com/IBM/mcp-context-forge/issues/305) - [CHORE]: Add vulture (dead code detect) and unimport (unused import detect) to Makefile and GitHub Actions + - ✅ [**#279**](https://github.com/IBM/mcp-context-forge/issues/279) - [CHORE]: Implement security audit and vulnerability scanning with grype in Makefile and GitHub Actions + - ✅ [**#249**](https://github.com/IBM/mcp-context-forge/issues/249) - [CHORE]: Achieve 60% doctest coverage and add Makefile and CI/CD targets for doctest and coverage + - ✅ [**#210**](https://github.com/IBM/mcp-context-forge/issues/210) - [CHORE]: Raise pylint from 9.16/10 -> 10/10 ???+ check "📚 Completed Documentation (3)" - - ✅ [**#522**](https://github.com/IBM/mcp-context-forge/issues/522) - OpenAPI title is MCP_Gateway instead of MCP Gateway - - ✅ [**#376**](https://github.com/IBM/mcp-context-forge/issues/376) - Document Security Policy in GitHub Pages and Link Roadmap on Homepage - - ✅ [**#46**](https://github.com/IBM/mcp-context-forge/issues/46) - Add documentation for using mcp-cli with MCP Gateway + - ✅ [**#522**](https://github.com/IBM/mcp-context-forge/issues/522) - [Docs]: OpenAPI title is MCP_Gateway instead of MCP Gateway + - ✅ [**#376**](https://github.com/IBM/mcp-context-forge/issues/376) - [Docs]: Document Security Policy in GitHub Pages and Link Roadmap on Homepage + - ✅ [**#46**](https://github.com/IBM/mcp-context-forge/issues/46) - [Docs]: Add documentation for using mcp-cli with MCP Gateway --- @@ -179,46 +179,46 @@ Enterprise Operability, Auth, Configuration & Observability ???+ check "✨ Completed Features (4)" - - ✅ [**#663**](https://github.com/IBM/mcp-context-forge/issues/663) - Add basic auth support for API Docs - - ✅ [**#623**](https://github.com/IBM/mcp-context-forge/issues/623) - Display default values from input_schema in test tool screen - - ✅ [**#506**](https://github.com/IBM/mcp-context-forge/issues/506) - New column for "MCP Server Name" in Global tools/resources etc - - ✅ [**#392**](https://github.com/IBM/mcp-context-forge/issues/392) - UI checkbox selection for servers, tools, and resources + - ✅ [**#663**](https://github.com/IBM/mcp-context-forge/issues/663) - [Feature Request]: Add basic auth support for API Docs + - ✅ [**#623**](https://github.com/IBM/mcp-context-forge/issues/623) - [Feature Request]: Display default values from input_schema in test tool screen + - ✅ [**#506**](https://github.com/IBM/mcp-context-forge/issues/506) - [Feature Request]: New column for "MCP Server Name" in Global tools/resources etc + - ✅ [**#392**](https://github.com/IBM/mcp-context-forge/issues/392) - [Feature Request]: UI checkbox selection for servers, tools, and resources ???+ check "🐛 Completed Bugs (20)" - - ✅ [**#631**](https://github.com/IBM/mcp-context-forge/issues/631) - Inconsistency in acceptable length of Tool Names for tools created via UI and programmatically - - ✅ [**#630**](https://github.com/IBM/mcp-context-forge/issues/630) - Gateway update fails silently in UI, backend throws ValidationInfo error - - ✅ [**#622**](https://github.com/IBM/mcp-context-forge/issues/622) - Test tool UI passes boolean inputs as on/off instead of true/false - - ✅ [**#620**](https://github.com/IBM/mcp-context-forge/issues/620) - Test tool UI passes array inputs as strings - - ✅ [**#613**](https://github.com/IBM/mcp-context-forge/issues/613) - Fix lint-web issues in admin.js - - ✅ [**#610**](https://github.com/IBM/mcp-context-forge/issues/610) - Edit tool in Admin UI sends invalid "STREAMABLE" value for Request Type - - ✅ [**#603**](https://github.com/IBM/mcp-context-forge/issues/603) - Unexpected error when registering a gateway with the same name. - - ✅ [**#601**](https://github.com/IBM/mcp-context-forge/issues/601) - APIs for gateways in admin and main do not mask auth values - - ✅ [**#598**](https://github.com/IBM/mcp-context-forge/issues/598) - Long input names in tool creation reflected back to user in error message + - ✅ [**#631**](https://github.com/IBM/mcp-context-forge/issues/631) - [Bug]: Inconsistency in acceptable length of Tool Names for tools created via UI and programmatically + - ✅ [**#630**](https://github.com/IBM/mcp-context-forge/issues/630) - [Bug]: Gateway update fails silently in UI, backend throws ValidationInfo error + - ✅ [**#622**](https://github.com/IBM/mcp-context-forge/issues/622) - [Bug]: Test tool UI passes boolean inputs as on/off instead of true/false + - ✅ [**#620**](https://github.com/IBM/mcp-context-forge/issues/620) - [Bug]: Test tool UI passes array inputs as strings + - ✅ [**#613**](https://github.com/IBM/mcp-context-forge/issues/613) - [Bug]: Fix lint-web issues in admin.js + - ✅ [**#610**](https://github.com/IBM/mcp-context-forge/issues/610) - [Bug]: Edit tool in Admin UI sends invalid "STREAMABLE" value for Request Type + - ✅ [**#603**](https://github.com/IBM/mcp-context-forge/issues/603) - [Bug]: Unexpected error when registering a gateway with the same name. + - ✅ [**#601**](https://github.com/IBM/mcp-context-forge/issues/601) - [Bug]: APIs for gateways in admin and main do not mask auth values + - ✅ [**#598**](https://github.com/IBM/mcp-context-forge/issues/598) - [Bug]: Long input names in tool creation reflected back to user in error message - ✅ [**#591**](https://github.com/IBM/mcp-context-forge/issues/591) - [Bug] Edit Prompt Fails When Template Field Is Empty - - ✅ [**#584**](https://github.com/IBM/mcp-context-forge/issues/584) - Can't register Github MCP Server in the MCP Registry - - ✅ [**#579**](https://github.com/IBM/mcp-context-forge/issues/579) - Edit tool update fail integration_type="REST" - - ✅ [**#578**](https://github.com/IBM/mcp-context-forge/issues/578) - Adding invalid gateway URL does not return an error immediately - - ✅ [**#521**](https://github.com/IBM/mcp-context-forge/issues/521) - Gateway ID returned as null by Gateway Create API - - ✅ [**#507**](https://github.com/IBM/mcp-context-forge/issues/507) - Makefile missing .PHONY declarations and other issues - - ✅ [**#434**](https://github.com/IBM/mcp-context-forge/issues/434) - Logs show"Invalid HTTP request received" - - ✅ [**#430**](https://github.com/IBM/mcp-context-forge/issues/430) - make serve doesn't check if I'm already running an instance (run-gunicorn.sh) letting me start the server multiple times - - ✅ [**#423**](https://github.com/IBM/mcp-context-forge/issues/423) - Redundant Conditional Expression in Content Validation - - ✅ [**#373**](https://github.com/IBM/mcp-context-forge/issues/373) - Clarify Difference Between "Reachable" and "Available" Status in Version Info - - ✅ [**#357**](https://github.com/IBM/mcp-context-forge/issues/357) - Improve consistency of displaying error messages + - ✅ [**#584**](https://github.com/IBM/mcp-context-forge/issues/584) - [Bug]: Can't register Github MCP Server in the MCP Registry + - ✅ [**#579**](https://github.com/IBM/mcp-context-forge/issues/579) - [Bug]: Edit tool update fail integration_type="REST" + - ✅ [**#578**](https://github.com/IBM/mcp-context-forge/issues/578) - [Bug]: Adding invalid gateway URL does not return an error immediately + - ✅ [**#521**](https://github.com/IBM/mcp-context-forge/issues/521) - [Bug]: Gateway ID returned as null by Gateway Create API + - ✅ [**#507**](https://github.com/IBM/mcp-context-forge/issues/507) - [Bug]: Makefile missing .PHONY declarations and other issues + - ✅ [**#434**](https://github.com/IBM/mcp-context-forge/issues/434) - [Bug]: Logs show"Invalid HTTP request received" + - ✅ [**#430**](https://github.com/IBM/mcp-context-forge/issues/430) - [Bug]: make serve doesn't check if I'm already running an instance (run-gunicorn.sh) letting me start the server multiple times + - ✅ [**#423**](https://github.com/IBM/mcp-context-forge/issues/423) - [Bug]: Redundant Conditional Expression in Content Validation + - ✅ [**#373**](https://github.com/IBM/mcp-context-forge/issues/373) - [Bug]: Clarify Difference Between "Reachable" and "Available" Status in Version Info + - ✅ [**#357**](https://github.com/IBM/mcp-context-forge/issues/357) - [Bug]: Improve consistency of displaying error messages ???+ check "🔒 Completed Security (1)" - - ✅ [**#425**](https://github.com/IBM/mcp-context-forge/issues/425) - Make JWT Token Expiration Mandatory when REQUIRE_TOKEN_EXPIRATION=true (depends on #87) + - ✅ [**#425**](https://github.com/IBM/mcp-context-forge/issues/425) - [SECURITY FEATURE]: Make JWT Token Expiration Mandatory when REQUIRE_TOKEN_EXPIRATION=true (depends on #87) ???+ check "🔧 Completed Chores (9)" - - ✅ [**#638**](https://github.com/IBM/mcp-context-forge/issues/638) - Add Makefile and GitHub Actions support for Snyk (test, code-test, container-test, helm charts) - - ✅ [**#615**](https://github.com/IBM/mcp-context-forge/issues/615) - Add pypi package linters: check-manifest pyroma and verify target to GitHub Actions - - ✅ [**#590**](https://github.com/IBM/mcp-context-forge/issues/590) - Integrate DevSkim static analysis tool via Makefile - - ✅ [**#410**](https://github.com/IBM/mcp-context-forge/issues/410) - Add `make lint filename|dirname` target to Makefile - - ✅ [**#403**](https://github.com/IBM/mcp-context-forge/issues/403) - Add time server (and configure it post-deploy) to docker-compose.yaml - - ✅ [**#397**](https://github.com/IBM/mcp-context-forge/issues/397) - Migrate run-gunicorn-v2.sh to run-gunicorn.sh and have a single file (improved startup script with configurable flags) - - ✅ [**#390**](https://github.com/IBM/mcp-context-forge/issues/390) - Add lint-web to CI/CD and add additional linters to Makefile (jshint jscpd markuplint) - - ✅ [**#365**](https://github.com/IBM/mcp-context-forge/issues/365) - Fix Database Migration Commands in Makefile - - ✅ [**#363**](https://github.com/IBM/mcp-context-forge/issues/363) - Improve Error Messages - Replace Raw Technical Errors with User-Friendly Messages + - ✅ [**#638**](https://github.com/IBM/mcp-context-forge/issues/638) - [CHORE]: Add Makefile and GitHub Actions support for Snyk (test, code-test, container-test, helm charts) + - ✅ [**#615**](https://github.com/IBM/mcp-context-forge/issues/615) - [CHORE]: Add pypi package linters: check-manifest pyroma and verify target to GitHub Actions + - ✅ [**#590**](https://github.com/IBM/mcp-context-forge/issues/590) - [CHORE]: Integrate DevSkim static analysis tool via Makefile + - ✅ [**#410**](https://github.com/IBM/mcp-context-forge/issues/410) - [CHORE]: Add `make lint filename|dirname` target to Makefile + - ✅ [**#403**](https://github.com/IBM/mcp-context-forge/issues/403) - [CHORE]: Add time server (and configure it post-deploy) to docker-compose.yaml + - ✅ [**#397**](https://github.com/IBM/mcp-context-forge/issues/397) - [CHORE]: Migrate run-gunicorn-v2.sh to run-gunicorn.sh and have a single file (improved startup script with configurable flags) + - ✅ [**#390**](https://github.com/IBM/mcp-context-forge/issues/390) - [CHORE]: Add lint-web to CI/CD and add additional linters to Makefile (jshint jscpd markuplint) + - ✅ [**#365**](https://github.com/IBM/mcp-context-forge/issues/365) - [CHORE]: Fix Database Migration Commands in Makefile + - ✅ [**#363**](https://github.com/IBM/mcp-context-forge/issues/363) - [CHORE]: Improve Error Messages - Replace Raw Technical Errors with User-Friendly Messages --- @@ -229,82 +229,93 @@ Security, Scale & Smart Automation ???+ check "✨ Completed Features (30)" - - ✅ [**#773**](https://github.com/IBM/mcp-context-forge/issues/773) - Add support for external plugins - - ✅ [**#749**](https://github.com/IBM/mcp-context-forge/issues/749) - MCP Reverse Proxy - Bridge Local Servers to Remote Gateways - - ✅ [**#737**](https://github.com/IBM/mcp-context-forge/issues/737) - Bulk Tool Import - - ✅ [**#735**](https://github.com/IBM/mcp-context-forge/issues/735) - Epic: Vendor Agnostic OpenTelemetry Observability Support - - ✅ [**#727**](https://github.com/IBM/mcp-context-forge/issues/727) - Phoenix Observability Integration plugin - - ✅ [**#720**](https://github.com/IBM/mcp-context-forge/issues/720) - Add CLI for authoring and packaging plugins - - ✅ [**#708**](https://github.com/IBM/mcp-context-forge/issues/708) - MCP Elicitation (v2025-06-18) - - ✅ [**#705**](https://github.com/IBM/mcp-context-forge/issues/705) - Option to completely remove Bearer token auth to MCP gateway - - ✅ [**#690**](https://github.com/IBM/mcp-context-forge/issues/690) - Make SSE Keepalive Events Configurable - - ✅ [**#689**](https://github.com/IBM/mcp-context-forge/issues/689) - Getting "Unknown SSE event: keepalive" when trying to use virtual servers - - ✅ [**#682**](https://github.com/IBM/mcp-context-forge/issues/682) - Add tool hooks (tool_pre_invoke / tool_post_invoke) to plugin system - - ✅ [**#673**](https://github.com/IBM/mcp-context-forge/issues/673) - Identify Next Steps for Plugin Development - - ✅ [**#668**](https://github.com/IBM/mcp-context-forge/issues/668) - Add Null Checks and Improve Error Handling in Frontend Form Handlers (admin.js) - - ✅ [**#586**](https://github.com/IBM/mcp-context-forge/issues/586) - Tag support with editing and validation across all APIs endpoints and UI (tags) - - ✅ [**#540**](https://github.com/IBM/mcp-context-forge/issues/540) - Configurable Well-Known URI Handler including security.txt and robots.txt - - ✅ [**#533**](https://github.com/IBM/mcp-context-forge/issues/533) - Add Additional Configurable Security Headers to APIs for Admin UI - - ✅ [**#492**](https://github.com/IBM/mcp-context-forge/issues/492) - Change UI ID field name to UUID - - ✅ [**#404**](https://github.com/IBM/mcp-context-forge/issues/404) - Add resources and prompts/prompt templates to time server - - ✅ [**#380**](https://github.com/IBM/mcp-context-forge/issues/380) - REST Endpoints for Go fast-time-server - - ✅ [**#368**](https://github.com/IBM/mcp-context-forge/issues/368) - Enhance Metrics Tab UI with Virtual Servers and Top 5 Performance Tables - - ✅ [**#364**](https://github.com/IBM/mcp-context-forge/issues/364) - Add Log File Support to MCP Gateway - - ✅ [**#344**](https://github.com/IBM/mcp-context-forge/issues/344) - Implement additional security headers and CORS configuration - - ✅ [**#320**](https://github.com/IBM/mcp-context-forge/issues/320) - Update Streamable HTTP to fully support Virtual Servers - - ✅ [**#319**](https://github.com/IBM/mcp-context-forge/issues/319) - AI Middleware Integration / Plugin Framework for extensible gateway capabilities - - ✅ [**#186**](https://github.com/IBM/mcp-context-forge/issues/186) - Granular Configuration Export & Import (via UI & API) - - ✅ [**#185**](https://github.com/IBM/mcp-context-forge/issues/185) - Portable Configuration Export & Import CLI (registry, virtual servers and prompts) - - ✅ [**#138**](https://github.com/IBM/mcp-context-forge/issues/138) - View & Export Logs from Admin UI - - ✅ [**#137**](https://github.com/IBM/mcp-context-forge/issues/137) - Track Creator & Timestamp Metadata for Servers, Tools, and Resources - - ✅ [**#136**](https://github.com/IBM/mcp-context-forge/issues/136) - Downloadable JSON Client Config Generator from Admin UI - - ✅ [**#94**](https://github.com/IBM/mcp-context-forge/issues/94) - Transport-Translation Bridge (`mcpgateway.translate`) any to any protocol conversion cli tool + - ✅ [**#773**](https://github.com/IBM/mcp-context-forge/issues/773) - [Feature]: add support for external plugins + - ✅ [**#749**](https://github.com/IBM/mcp-context-forge/issues/749) - [Feature Request]: MCP Reverse Proxy - Bridge Local Servers to Remote Gateways + - ✅ [**#737**](https://github.com/IBM/mcp-context-forge/issues/737) - [Feature Request]: Bulk Tool Import + - ✅ [**#735**](https://github.com/IBM/mcp-context-forge/issues/735) - [Epic]: Vendor Agnostic OpenTelemetry Observability Support + - ✅ [**#727**](https://github.com/IBM/mcp-context-forge/issues/727) - [Feature]: Phoenix Observability Integration plugin + - ✅ [**#720**](https://github.com/IBM/mcp-context-forge/issues/720) - [Feature]: Add CLI for authoring and packaging plugins + - ✅ [**#708**](https://github.com/IBM/mcp-context-forge/issues/708) - [Feature Request]: MCP Elicitation (v2025-06-18) + - ✅ [**#705**](https://github.com/IBM/mcp-context-forge/issues/705) - [Feature Request]: Option to completely remove Bearer token auth to MCP gateway + - ✅ [**#690**](https://github.com/IBM/mcp-context-forge/issues/690) - [Feature] Make SSE Keepalive Events Configurable + - ✅ [**#682**](https://github.com/IBM/mcp-context-forge/issues/682) - [Feature]: Add tool hooks (tool_pre_invoke / tool_post_invoke) to plugin system + - ✅ [**#673**](https://github.com/IBM/mcp-context-forge/issues/673) - [ARCHITECTURE] Identify Next Steps for Plugin Development + - ✅ [**#672**](https://github.com/IBM/mcp-context-forge/issues/672) - [CHORE]: Part 2: Replace Raw Errors with Friendly Messages in main.py + - ✅ [**#668**](https://github.com/IBM/mcp-context-forge/issues/668) - [Feature Request]: Add Null Checks and Improve Error Handling in Frontend Form Handlers (admin.js) + - ✅ [**#586**](https://github.com/IBM/mcp-context-forge/issues/586) - [Feature Request]: Tag support with editing and validation across all APIs endpoints and UI (tags) + - ✅ [**#540**](https://github.com/IBM/mcp-context-forge/issues/540) - [SECURITY FEATURE]: Configurable Well-Known URI Handler including security.txt and robots.txt + - ✅ [**#533**](https://github.com/IBM/mcp-context-forge/issues/533) - [SECURITY FEATURE]: Add Additional Configurable Security Headers to APIs for Admin UI + - ✅ [**#492**](https://github.com/IBM/mcp-context-forge/issues/492) - [Feature Request]: Change UI ID field name to UUID + - ✅ [**#452**](https://github.com/IBM/mcp-context-forge/issues/452) - [Bug]: integrationType should only support REST, not MCP (Remove Integration Type: MCP) + - ✅ [**#405**](https://github.com/IBM/mcp-context-forge/issues/405) - [Bug]: Fix the go time server annotation (it shows as destructive) + - ✅ [**#404**](https://github.com/IBM/mcp-context-forge/issues/404) - [Feature Request]: Add resources and prompts/prompt templates to time server + - ✅ [**#380**](https://github.com/IBM/mcp-context-forge/issues/380) - [Feature Request]: REST Endpoints for Go fast-time-server + - ✅ [**#368**](https://github.com/IBM/mcp-context-forge/issues/368) - [Feature Request]: Enhance Metrics Tab UI with Virtual Servers and Top 5 Performance Tables + - ✅ [**#364**](https://github.com/IBM/mcp-context-forge/issues/364) - [Feature Request]: Add Log File Support to MCP Gateway + - ✅ [**#344**](https://github.com/IBM/mcp-context-forge/issues/344) - [CHORE]: Implement additional security headers and CORS configuration + - ✅ [**#320**](https://github.com/IBM/mcp-context-forge/issues/320) - [Feature Request]: Update Streamable HTTP to fully support Virtual Servers + - ✅ [**#319**](https://github.com/IBM/mcp-context-forge/issues/319) - [Feature Request]: AI Middleware Integration / Plugin Framework for extensible gateway capabilities + - ✅ [**#317**](https://github.com/IBM/mcp-context-forge/issues/317) - [CHORE]: Script to add relative file path header to each file and verify top level docstring + - ✅ [**#315**](https://github.com/IBM/mcp-context-forge/issues/315) - [CHORE] Check SPDX headers Makefile and GitHub Actions target - ensure all files have File, Author(s) and SPDX headers + - ✅ [**#313**](https://github.com/IBM/mcp-context-forge/issues/313) - [DESIGN]: Architecture Decisions and Discussions for AI Middleware and Plugin Framework (Enables #319) + - ✅ [**#208**](https://github.com/IBM/mcp-context-forge/issues/208) - [AUTH FEATURE]: HTTP Header Passthrough (forward headers to MCP server) ???+ check "🐛 Completed Bugs (22)" - - ✅ [**#774**](https://github.com/IBM/mcp-context-forge/issues/774) - Tools Annotations not working and need specificity for mentioning annotations - - ✅ [**#765**](https://github.com/IBM/mcp-context-forge/issues/765) - Illegal IP address string passed to inet_aton during discovery process - - ✅ [**#753**](https://github.com/IBM/mcp-context-forge/issues/753) - Tool invocation returns 'Invalid method' error after PR #746 - - ✅ [**#744**](https://github.com/IBM/mcp-context-forge/issues/744) - Gateway fails to connect to services behind CDNs/load balancers due to DNS resolution - - ✅ [**#741**](https://github.com/IBM/mcp-context-forge/issues/741) - Enhance Server Creation/Editing UI for Prompt and Resource Association - - ✅ [**#728**](https://github.com/IBM/mcp-context-forge/issues/728) - Streamable HTTP Translation Feature: Connects but Fails to List Tools, Resources, or Support Tool Calls - - ✅ [**#716**](https://github.com/IBM/mcp-context-forge/issues/716) - Resources and Prompts not displaying in Admin Dashboard while Tools are visible - - ✅ [**#696**](https://github.com/IBM/mcp-context-forge/issues/696) - SSE Tool Invocation Fails After Integration Type Migration post PR #678 - - ✅ [**#694**](https://github.com/IBM/mcp-context-forge/issues/694) - Enhanced Validation Missing in GatewayCreate - - ✅ [**#685**](https://github.com/IBM/mcp-context-forge/issues/685) - Multiple Fixes and improved security for HTTP Header Passthrough Feature - - ✅ [**#666**](https://github.com/IBM/mcp-context-forge/issues/666) - Vague/Unclear Error Message "Validation Failed" When Adding a REST Tool - - ✅ [**#661**](https://github.com/IBM/mcp-context-forge/issues/661) - Database migration runs during doctest execution - - ✅ [**#649**](https://github.com/IBM/mcp-context-forge/issues/649) - Duplicate Gateway Registration with Equivalent URLs Bypasses Uniqueness Check - - ✅ [**#646**](https://github.com/IBM/mcp-context-forge/issues/646) - MCP Server/Federated Gateway Registration is failing - - ✅ [**#560**](https://github.com/IBM/mcp-context-forge/issues/560) - Can't list tools when running inside of a docker - - ✅ [**#557**](https://github.com/IBM/mcp-context-forge/issues/557) - Cleanup tool descriptions to remove newlines and truncate text - - ✅ [**#526**](https://github.com/IBM/mcp-context-forge/issues/526) - Unable to add multiple headers when adding a gateway through UI - - ✅ [**#520**](https://github.com/IBM/mcp-context-forge/issues/520) - Resource mime-type is always stored as text/plain - - ✅ [**#518**](https://github.com/IBM/mcp-context-forge/issues/518) - Runtime error from Redis when multiple sessions exist - - ✅ [**#481**](https://github.com/IBM/mcp-context-forge/issues/481) - Intermittent test_resource_cache.py::test_expiration - AssertionError: assert 'bar' is None - - ✅ [**#452**](https://github.com/IBM/mcp-context-forge/issues/452) - integrationType should only support REST, not MCP (Remove Integration Type: MCP) - - ✅ [**#405**](https://github.com/IBM/mcp-context-forge/issues/405) - Fix the go time server annotation (it shows as destructive) - -???+ check "🔒 Completed Security (3)" - - ✅ [**#540**](https://github.com/IBM/mcp-context-forge/issues/540) - Configurable Well-Known URI Handler including security.txt and robots.txt - - ✅ [**#533**](https://github.com/IBM/mcp-context-forge/issues/533) - Add Additional Configurable Security Headers to APIs for Admin UI - - ✅ [**#208**](https://github.com/IBM/mcp-context-forge/issues/208) - HTTP Header Passthrough (forward headers to MCP server) - -???+ check "🔧 Completed Chores (6)" - - ✅ [**#672**](https://github.com/IBM/mcp-context-forge/issues/672) - Part 2: Replace Raw Errors with Friendly Messages in main.py - - ✅ [**#317**](https://github.com/IBM/mcp-context-forge/issues/317) - Script to add relative file path header to each file and verify top level docstring - - ✅ [**#315**](https://github.com/IBM/mcp-context-forge/issues/315) - Check SPDX headers Makefile and GitHub Actions target - ensure all files have File, Author(s) and SPDX headers - - ✅ [**#280**](https://github.com/IBM/mcp-context-forge/issues/280) - Add mutation testing with mutmut for test quality validation - - ✅ [**#256**](https://github.com/IBM/mcp-context-forge/issues/256) - Implement comprehensive fuzz testing automation and Makefile targets (hypothesis, atheris, schemathesis, RESTler) - - ✅ [**#254**](https://github.com/IBM/mcp-context-forge/issues/254) - Async Code Testing and Performance Profiling Makefile targets (flake8-async, cprofile, snakeviz, aiomonitor) - - + - ✅ [**#774**](https://github.com/IBM/mcp-context-forge/issues/774) - [Bug]: Tools Annotations not working and need specificity for mentioning annotations + - ✅ [**#765**](https://github.com/IBM/mcp-context-forge/issues/765) - [Bug]: illegal IP address string passed to inet_aton during discovery process + - ✅ [**#753**](https://github.com/IBM/mcp-context-forge/issues/753) - [BUG] Tool invocation returns 'Invalid method' error after PR #746 + - ✅ [**#744**](https://github.com/IBM/mcp-context-forge/issues/744) - [BUG] Gateway fails to connect to services behind CDNs/load balancers due to DNS resolution + - ✅ [**#741**](https://github.com/IBM/mcp-context-forge/issues/741) - [Bug]: Enhance Server Creation/Editing UI for Prompt and Resource Association + - ✅ [**#728**](https://github.com/IBM/mcp-context-forge/issues/728) - [Bug]: Streamable HTTP Translation Feature: Connects but Fails to List Tools, Resources, or Support Tool Calls + - ✅ [**#716**](https://github.com/IBM/mcp-context-forge/issues/716) - [Bug]: Resources and Prompts not displaying in Admin Dashboard while Tools are visible + - ✅ [**#704**](https://github.com/IBM/mcp-context-forge/issues/704) - [Bug]: Virtual Servers don't actually work as advertised v0.5.0 + - ✅ [**#696**](https://github.com/IBM/mcp-context-forge/issues/696) - [Bug]: SSE Tool Invocation Fails After Integration Type Migration post PR #678 + - ✅ [**#694**](https://github.com/IBM/mcp-context-forge/issues/694) - [BUG]: Enhanced Validation Missing in GatewayCreate + - ✅ [**#689**](https://github.com/IBM/mcp-context-forge/issues/689) - Getting "Unknown SSE event: keepalive" when trying to use virtual servers + - ✅ [**#685**](https://github.com/IBM/mcp-context-forge/issues/685) - [Bug]: Multiple Fixes and improved security for HTTP Header Passthrough Feature + - ✅ [**#666**](https://github.com/IBM/mcp-context-forge/issues/666) - [Bug]:Vague/Unclear Error Message "Validation Failed" When Adding a REST Tool + - ✅ [**#661**](https://github.com/IBM/mcp-context-forge/issues/661) - [Bug]: Database migration runs during doctest execution + - ✅ [**#649**](https://github.com/IBM/mcp-context-forge/issues/649) - [Bug]: Duplicate Gateway Registration with Equivalent URLs Bypasses Uniqueness Check + - ✅ [**#646**](https://github.com/IBM/mcp-context-forge/issues/646) - [Bug]: MCP Server/Federated Gateway Registration is failing + - ✅ [**#560**](https://github.com/IBM/mcp-context-forge/issues/560) - [Bug]: Can't list tools when running inside of a docker + - ✅ [**#557**](https://github.com/IBM/mcp-context-forge/issues/557) - [BUG] Cleanup tool descriptions to remove newlines and truncate text + - ✅ [**#526**](https://github.com/IBM/mcp-context-forge/issues/526) - [Bug]: Unable to add multiple headers when adding a gateway through UI (draft) + - ✅ [**#520**](https://github.com/IBM/mcp-context-forge/issues/520) - [Bug]: Resource mime-type is always stored as text/plain + - ✅ [**#518**](https://github.com/IBM/mcp-context-forge/issues/518) - [Bug]: Runtime error from Redis when multiple sessions exist + - ✅ [**#417**](https://github.com/IBM/mcp-context-forge/issues/417) - [Bug]: Intermittent doctest failure in /mcpgateway/cache/resource_cache.py:7 + +???+ check "🔧 Completed Chores (8)" + - ✅ [**#481**](https://github.com/IBM/mcp-context-forge/issues/481) - [Bug]: Intermittent test_resource_cache.py::test_expiration - AssertionError: assert 'bar' is None (draft) + - ✅ [**#480**](https://github.com/IBM/mcp-context-forge/issues/480) - [Bug]: Alembic treated as first party dependency by isort + - ✅ [**#479**](https://github.com/IBM/mcp-context-forge/issues/479) - [Bug]: Update make commands for alembic + - ✅ [**#478**](https://github.com/IBM/mcp-context-forge/issues/478) - [Bug]: Alembic migration is broken + - ✅ [**#436**](https://github.com/IBM/mcp-context-forge/issues/436) - [Bug]: Verify content length using the content itself when the content-length header is absent. + - ✅ [**#280**](https://github.com/IBM/mcp-context-forge/issues/280) - [CHORE]: Add mutation testing with mutmut for test quality validation + - ✅ [**#256**](https://github.com/IBM/mcp-context-forge/issues/256) - [CHORE]: Implement comprehensive fuzz testing automation and Makefile targets (hypothesis, atheris, schemathesis , RESTler) + - ✅ [**#254**](https://github.com/IBM/mcp-context-forge/issues/254) - [CHORE]: Async Code Testing and Performance Profiling Makefile targets (flake8-async, cprofile, snakeviz, aiomonitor) + +???+ check "📚 Completed Documentation (4)" + - ✅ [**#306**](https://github.com/IBM/mcp-context-forge/issues/306) - Quick Start (manual install) gunicorn fails + - ✅ [**#186**](https://github.com/IBM/mcp-context-forge/issues/186) - [Feature Request]: Granular Configuration Export & Import (via UI & API) + - ✅ [**#185**](https://github.com/IBM/mcp-context-forge/issues/185) - [Feature Request]: Portable Configuration Export & Import CLI (registry, virtual servers and prompts) + - ✅ [**#94**](https://github.com/IBM/mcp-context-forge/issues/94) - [Feature Request]: Transport-Translation Bridge (`mcpgateway.translate`) any to any protocol conversion cli tool + +???+ check "❓ Completed Questions (3)" + - ✅ [**#510**](https://github.com/IBM/mcp-context-forge/issues/510) - [QUESTION]: Create users - User management & RBAC + - ✅ [**#509**](https://github.com/IBM/mcp-context-forge/issues/509) - [QUESTION]: Enterprise LDAP Integration + - ✅ [**#393**](https://github.com/IBM/mcp-context-forge/issues/393) - [BUG] Both resources and prompts not loading after adding a federated gateway + +???+ check "📦 Completed Sample Servers (3)" + - ✅ [**#138**](https://github.com/IBM/mcp-context-forge/issues/138) - [Feature Request]: View & Export Logs from Admin UI + - ✅ [**#137**](https://github.com/IBM/mcp-context-forge/issues/137) - [Feature Request]: Track Creator & Timestamp Metadata for Servers, Tools, and Resources + - ✅ [**#136**](https://github.com/IBM/mcp-context-forge/issues/136) - [Feature Request]: Downloadable JSON Client Config Generator from Admin UI --- ## Release 0.7.0 - Multitenancy and RBAC (Private/Team/Global catalogs), Extended Connectivity, Core Observability & Starter Agents (OpenAI and A2A) -!!! success "Release 0.7.0 - Nearly Complete (78%)" - **Due:** 16 Sep 2025 | **Status:** Open +!!! success "Release 0.7.0 - Completed (100%)" + **Due:** 16 Sep 2025 | **Status:** Closed Multitenancy and RBAC (Private/Team/Global catalogs), Extended Connectivity, Core Observability & Starter Agents (OpenAI and A2A) ???+ check "✨ Completed Features (21)" @@ -324,8 +335,8 @@ - ✅ [**#544**](https://github.com/IBM/mcp-context-forge/issues/544) - [SECURITY FEATURE]: Database-Backed User Authentication with Argon2id (replace BASIC auth) - ✅ [**#491**](https://github.com/IBM/mcp-context-forge/issues/491) - [Feature Request]: UI Keyboard shortcuts - ✅ [**#426**](https://github.com/IBM/mcp-context-forge/issues/426) - [SECURITY FEATURE]: Configurable Password and Secret Policy Engine - - ✅ [**#282**](https://github.com/IBM/mcp-context-forge/issues/282) - [SECURITY FEATURE]: Per-Virtual-Server API Keys with Scoped Access - ✅ [**#283**](https://github.com/IBM/mcp-context-forge/issues/283) - [SECURITY FEATURE]: Role-Based Access Control (RBAC) - User/Team/Global Scopes for full multi-tenancy support + - ✅ [**#282**](https://github.com/IBM/mcp-context-forge/issues/282) - [SECURITY FEATURE]: Per-Virtual-Server API Keys with Scoped Access - ✅ [**#278**](https://github.com/IBM/mcp-context-forge/issues/278) - [Feature Request]: Authentication & Authorization - Google SSO Integration Tutorial (Depends on #220) - ✅ [**#220**](https://github.com/IBM/mcp-context-forge/issues/220) - [AUTH FEATURE]: Authentication & Authorization - SSO + Identity-Provider Integration - ✅ [**#87**](https://github.com/IBM/mcp-context-forge/issues/87) - [Feature Request]: Epic: Secure JWT Token Catalog with Per-User Expiry and Revocation @@ -337,123 +348,201 @@ - ✅ [**#587**](https://github.com/IBM/mcp-context-forge/issues/587) - [Bug]: REST Tool giving error - ✅ [**#232**](https://github.com/IBM/mcp-context-forge/issues/232) - [Bug]: Leaving Auth to None fails -???+ check "📚 Completed Documentation (3)" - - ✅ [**#323**](https://github.com/IBM/mcp-context-forge/issues/323) - Add Developer Guide for using fast-time-server via JSON-RPC commands using curl or stdio - - ✅ [**#19**](https://github.com/IBM/mcp-context-forge/issues/19) - Add Developer Guide for using MCP via the CLI (curl commands, JSON-RPC) +???+ check "📚 Completed Documentation (4)" - ✅ [**#818**](https://github.com/IBM/mcp-context-forge/issues/818) - [Docs]: Readme ghcr.io/ibm/mcp-context-forge:0.6.0 image still building - -???+ danger "🐛 Open Bugs (5)" - - [**#969**](https://github.com/IBM/mcp-context-forge/issues/969) - Backend Multi-Tenancy Issues - Critical bugs and missing features - - [**#967**](https://github.com/IBM/mcp-context-forge/issues/967) - UI Gaps in Multi-Tenancy Support - Visibility fields missing for most resource types - - [**#625**](https://github.com/IBM/mcp-context-forge/issues/625) - [Bug]: Gateway unable to register gateway or call tools on MacOS - - [**#464**](https://github.com/IBM/mcp-context-forge/issues/464) - [Bug]: MCP Server "Active" status not getting updated under "Gateways/MCP Servers" when the MCP Server shutdown. - - [**#448**](https://github.com/IBM/mcp-context-forge/issues/448) - [Bug]: MCP server with custom base path "/api" instead of "mcp" or "sse" is not working - -???+ danger "✨ Open Features (2)" - - [**#386**](https://github.com/IBM/mcp-context-forge/issues/386) - [Feature Request]: Gateways/MCP Servers Page Refresh - - [**#172**](https://github.com/IBM/mcp-context-forge/issues/172) - [Feature Request]: Enable Auto Refresh and Reconnection for MCP Servers in Gateways - -???+ danger "📚 Open Documentation (1)" - - [**#834**](https://github.com/IBM/mcp-context-forge/issues/834) - [Bug]: Existing tool configurations are not updating after changes to the MCP server configuration. + - ✅ [**#323**](https://github.com/IBM/mcp-context-forge/issues/323) - [Docs]: Add Developer Guide for using fast-time-server via JSON-RPC commands using curl or stdio + - ✅ [**#19**](https://github.com/IBM/mcp-context-forge/issues/19) - [Docs]: Add Developer Guide for using MCP via the CLI (curl commands, JSON-RPC) + - ✅ [**#834**](https://github.com/IBM/mcp-context-forge/issues/834) - [Bug]: Existing tool configurations are not updating after changes to the MCP server configuration. --- ## Release 0.8.0 - Enterprise Security & Policy Guardrails -!!! danger "Release 0.8.0 - In Progress (3%)" - **Due:** 30 Sep 2025 | **Status:** Open +!!! success "Release 0.8.0 - Completed (100%)" + **Due:** 07 Oct 2025 | **Status:** Closed Enterprise Security & Policy Guardrails -???+ check "🐛 Completed Bugs (2)" - - ✅ [**#949**](https://github.com/IBM/mcp-context-forge/issues/949) - [Bug]: Tool invocation for an MCP server authorized by OAUTH2 fails - - ✅ [**#948**](https://github.com/IBM/mcp-context-forge/issues/948) - [Bug]:MCP OAUTH2 authenticate server is shown as offline after is added - -???+ check "🏗️ Completed Sample Servers (2)" +???+ check "✨ Completed Features (17)" + - ✅ [**#1176**](https://github.com/IBM/mcp-context-forge/issues/1176) - [Feature Request]: Implement Team-Level Scoping for API Tokens + - ✅ [**#1043**](https://github.com/IBM/mcp-context-forge/issues/1043) - [Feature]: Sample MCP Server - Implement Pandoc MCP server in Go + - ✅ [**#1035**](https://github.com/IBM/mcp-context-forge/issues/1035) - [Feature Request]: Add "Team" Column to All Admin UI Tables (Tools, Gateway Server, Virtual Servers, Prompts, Resources) + - ✅ [**#979**](https://github.com/IBM/mcp-context-forge/issues/979) - [Feature Request]: OAuth Dynamic Client Registration + - ✅ [**#964**](https://github.com/IBM/mcp-context-forge/issues/964) - Support dynamic environment variable injection in mcpgateway.translate for STDIO MCP servers - ✅ [**#920**](https://github.com/IBM/mcp-context-forge/issues/920) - Sample MCP Server - Go (calculator-server) - ✅ [**#900**](https://github.com/IBM/mcp-context-forge/issues/900) - Sample MCP Server - Python (data-analysis-server) + - ✅ [**#699**](https://github.com/IBM/mcp-context-forge/issues/699) - [Feature]: Metrics Enhancement (export all data, capture all metrics, fix last used timestamps, UI improvements) + - ✅ [**#298**](https://github.com/IBM/mcp-context-forge/issues/298) - [Feature Request]: A2A Initial Support - Add A2A Servers as Tools + - ✅ [**#243**](https://github.com/IBM/mcp-context-forge/issues/243) - [Feature Request]: a2a compatibility? + - ✅ [**#229**](https://github.com/IBM/mcp-context-forge/issues/229) - [SECURITY FEATURE]: Guardrails - Input/Output Sanitization & PII Masking + - ✅ [**#1045**](https://github.com/IBM/mcp-context-forge/issues/1045) - Sample MCP Server - Python (docx-server) + - ✅ [**#1052**](https://github.com/IBM/mcp-context-forge/issues/1052) - Sample MCP Server - Python (chunker-server) + - ✅ [**#1053**](https://github.com/IBM/mcp-context-forge/issues/1053) - Sample MCP Server - Python (code-splitter-server) + - ✅ [**#1054**](https://github.com/IBM/mcp-context-forge/issues/1054) - Sample MCP Server - Python (xlsx-server) + - ✅ [**#1055**](https://github.com/IBM/mcp-context-forge/issues/1055) - Sample MCP Server - Python (libreoffice-server) + - ✅ [**#1056**](https://github.com/IBM/mcp-context-forge/issues/1056) - Sample MCP Server - Python (csv-pandas-chat-server) + +???+ check "🐛 Completed Bugs (16)" + - ✅ [**#1178**](https://github.com/IBM/mcp-context-forge/issues/1178) - [Bug]: The header in UI overlaps with all the modals + - ✅ [**#1117**](https://github.com/IBM/mcp-context-forge/issues/1117) - [Bug]:Login not working with 0.7.0 version + - ✅ [**#1109**](https://github.com/IBM/mcp-context-forge/issues/1109) - [Bug]:MCP Gateway UI OAuth2 Integration Fails with Keycloak Due to Missing x-www-form-urlencoded Support + - ✅ [**#1104**](https://github.com/IBM/mcp-context-forge/issues/1104) - [Bug]: X-Upstream-Authorization Header Not Working When Auth Type is None + - ✅ [**#1101**](https://github.com/IBM/mcp-context-forge/issues/1101) - [Bug]:login issue + - ✅ [**#1078**](https://github.com/IBM/mcp-context-forge/issues/1078) - [Bug]: OAuth Token Multi-Tenancy Support: User-Specific Token Handling Required + - ✅ [**#1048**](https://github.com/IBM/mcp-context-forge/issues/1048) - [Bug]: Login issue - Serving over HTTP requires SECURE_COOKIES=false (warning required) + - ✅ [**#1046**](https://github.com/IBM/mcp-context-forge/issues/1046) - [Bug]: pass-through headers are not functioning as expected + - ✅ [**#1039**](https://github.com/IBM/mcp-context-forge/issues/1039) - [Bug]:Update Gateway fails + - ✅ [**#1025**](https://github.com/IBM/mcp-context-forge/issues/1025) - [Bug]:After edit/save of an MCP Server with OAUTh2 Authentication I need to also fetch tools. + - ✅ [**#1022**](https://github.com/IBM/mcp-context-forge/issues/1022) - [Bug] "Join Request" button shows no pending request for team membership + - ✅ [**#959**](https://github.com/IBM/mcp-context-forge/issues/959) - [Bug]: Unable to Re-add Team Member Due to Unique Constraint on (team_id, user_email) + - ✅ [**#949**](https://github.com/IBM/mcp-context-forge/issues/949) - [Bug]: Tool invocation for an MCP server authorized by OAUTH2 fails + - ✅ [**#948**](https://github.com/IBM/mcp-context-forge/issues/948) - [Bug]:MCP OAUTH2 authenticate server is shown as offline after is added + - ✅ [**#941**](https://github.com/IBM/mcp-context-forge/issues/941) - [Bug]: Access Token scoping not working + - ✅ [**#939**](https://github.com/IBM/mcp-context-forge/issues/939) - [Bug]: Missing Document links in SSO page for Team/RBAC management -???+ danger "🔌 Open Plugin Features (12)" - - [**#1005**](https://github.com/IBM/mcp-context-forge/issues/1005) - [Plugin] Create VirusTotal Checker Plugin using Plugin Framework - - [**#1004**](https://github.com/IBM/mcp-context-forge/issues/1004) - [Plugin] Create URL Reputation Plugin using Plugin Framework - - [**#1003**](https://github.com/IBM/mcp-context-forge/issues/1003) - [Plugin] Create Schema Guard Plugin using Plugin Framework - - [**#1002**](https://github.com/IBM/mcp-context-forge/issues/1002) - [Plugin] Create Retry with Backoff Plugin using Plugin Framework - - [**#1001**](https://github.com/IBM/mcp-context-forge/issues/1001) - [Plugin] Create Rate Limiter Plugin using Plugin Framework - - [**#1000**](https://github.com/IBM/mcp-context-forge/issues/1000) - [Plugin] Create Output Length Guard Plugin using Plugin Framework - - [**#999**](https://github.com/IBM/mcp-context-forge/issues/999) - [Plugin] Create Markdown Cleaner Plugin using Plugin Framework - - [**#998**](https://github.com/IBM/mcp-context-forge/issues/998) - [Plugin] Create JSON Repair Plugin using Plugin Framework - - [**#997**](https://github.com/IBM/mcp-context-forge/issues/997) - [Plugin] Create HTML to Markdown Plugin using Plugin Framework - - [**#996**](https://github.com/IBM/mcp-context-forge/issues/996) - [Plugin] Create File Type Allowlist Plugin using Plugin Framework - - [**#995**](https://github.com/IBM/mcp-context-forge/issues/995) - [Plugin] Create Code Safety Linter Plugin using Plugin Framework - - [**#994**](https://github.com/IBM/mcp-context-forge/issues/994) - [Plugin] Create Cached Tool Result Plugin using Plugin Framework - -???+ danger "🔒 Open Security Features (44)" - - [**#979**](https://github.com/IBM/mcp-context-forge/issues/979) - [Feature Request]: OAuth Dynamic Client Registration +???+ check "🔧 Completed Chores (3)" + - ✅ [**#931**](https://github.com/IBM/mcp-context-forge/issues/931) - [Bug]: Helm install does not work when kubeVersion has vendor specific suffix + - ✅ [**#867**](https://github.com/IBM/mcp-context-forge/issues/867) - [Bug]: update_gateway does not persist passthrough_headers field + - ✅ [**#845**](https://github.com/IBM/mcp-context-forge/issues/845) - [Bug]:2025-08-28 05:47:06,733 - mcpgateway.services.gateway_service - ERROR - FileLock health check failed: can't start new thread + +???+ check "📚 Completed Documentation (3)" + - ✅ [**#865**](https://github.com/IBM/mcp-context-forge/issues/865) - [Bug]: Static assets return 404 when APP_ROOT_PATH is configured + - ✅ [**#856**](https://github.com/IBM/mcp-context-forge/issues/856) - [Bug]: Admin UI: Associated tools checkboxes on Virtual Servers edit not pre-populated due to ID vs name mismatch + - ✅ [**#810**](https://github.com/IBM/mcp-context-forge/issues/810) - [Bug]: Ensure Test Cases Use Mock Database instead of Main DB + +???+ check "🔌 Completed Plugin Features (29)" + - ✅ [**#1077**](https://github.com/IBM/mcp-context-forge/issues/1077) - [Plugin] Create ClamAV External Plugin using Plugin Framework + - ✅ [**#1076**](https://github.com/IBM/mcp-context-forge/issues/1076) - [Plugin] Create Summarizer Plugin using Plugin Framework + - ✅ [**#1075**](https://github.com/IBM/mcp-context-forge/issues/1075) - [Plugin] Create Watchdog Plugin using Plugin Framework + - ✅ [**#1074**](https://github.com/IBM/mcp-context-forge/issues/1074) - [Plugin] Create Timezone Translator Plugin using Plugin Framework + - ✅ [**#1073**](https://github.com/IBM/mcp-context-forge/issues/1073) - [Plugin] Create Privacy Notice Injector Plugin using Plugin Framework + - ✅ [**#1072**](https://github.com/IBM/mcp-context-forge/issues/1072) - [Plugin] Create License Header Injector Plugin using Plugin Framework + - ✅ [**#1071**](https://github.com/IBM/mcp-context-forge/issues/1071) - [Plugin] Create Response Cache by Prompt Plugin using Plugin Framework + - ✅ [**#1070**](https://github.com/IBM/mcp-context-forge/issues/1070) - [Plugin] Create Circuit Breaker Plugin using Plugin Framework + - ✅ [**#1069**](https://github.com/IBM/mcp-context-forge/issues/1069) - [Plugin] Create Citation Validator Plugin using Plugin Framework + - ✅ [**#1068**](https://github.com/IBM/mcp-context-forge/issues/1068) - [Plugin] Create Code Formatter Plugin using Plugin Framework + - ✅ [**#1067**](https://github.com/IBM/mcp-context-forge/issues/1067) - [Plugin] Create AI Artifacts Normalizer Plugin using Plugin Framework + - ✅ [**#1066**](https://github.com/IBM/mcp-context-forge/issues/1066) - [Plugin] Create Robots License Guard Plugin using Plugin Framework + - ✅ [**#1065**](https://github.com/IBM/mcp-context-forge/issues/1065) - [Plugin] Create SQL Sanitizer Plugin using Plugin Framework + - ✅ [**#1064**](https://github.com/IBM/mcp-context-forge/issues/1064) - [Plugin] Create Harmful Content Detector Plugin using Plugin Framework + - ✅ [**#1063**](https://github.com/IBM/mcp-context-forge/issues/1063) - [Plugin] Create Safe HTML Sanitizer Plugin using Plugin Framework + - ✅ [**#1005**](https://github.com/IBM/mcp-context-forge/issues/1005) - [Plugin] Create VirusTotal Checker Plugin using Plugin Framework + - ✅ [**#1004**](https://github.com/IBM/mcp-context-forge/issues/1004) - [Plugin] Create URL Reputation Plugin using Plugin Framework + - ✅ [**#1003**](https://github.com/IBM/mcp-context-forge/issues/1003) - [Plugin] Create Schema Guard Plugin using Plugin Framework + - ✅ [**#1002**](https://github.com/IBM/mcp-context-forge/issues/1002) - [Plugin] Create Retry with Backoff Plugin using Plugin Framework + - ✅ [**#1001**](https://github.com/IBM/mcp-context-forge/issues/1001) - [Plugin] Create Rate Limiter Plugin using Plugin Framework + - ✅ [**#1000**](https://github.com/IBM/mcp-context-forge/issues/1000) - [Plugin] Create Output Length Guard Plugin using Plugin Framework + - ✅ [**#999**](https://github.com/IBM/mcp-context-forge/issues/999) - [Plugin] Create Markdown Cleaner Plugin using Plugin Framework + - ✅ [**#998**](https://github.com/IBM/mcp-context-forge/issues/998) - [Plugin] Create JSON Repair Plugin using Plugin Framework + - ✅ [**#997**](https://github.com/IBM/mcp-context-forge/issues/997) - [Plugin] Create HTML to Markdown Plugin using Plugin Framework + - ✅ [**#996**](https://github.com/IBM/mcp-context-forge/issues/996) - [Plugin] Create File Type Allowlist Plugin using Plugin Framework + - ✅ [**#995**](https://github.com/IBM/mcp-context-forge/issues/995) - [Plugin] Create Code Safety Linter Plugin using Plugin Framework + - ✅ [**#994**](https://github.com/IBM/mcp-context-forge/issues/994) - [Plugin] Create Cached Tool Result Plugin using Plugin Framework + - ✅ [**#895**](https://github.com/IBM/mcp-context-forge/issues/895) - [Plugin] Create Header Injector Plugin using Plugin Framework + - ✅ [**#894**](https://github.com/IBM/mcp-context-forge/issues/894) - [Plugin] Create Secrets Detection Plugin using Plugin Framework + - ✅ [**#893**](https://github.com/IBM/mcp-context-forge/issues/893) - [Plugin] Create JSON Schema Validator Plugin using Plugin Framework + +???+ check "📦 Completed Sample Servers (10)" + - ✅ [**#1062**](https://github.com/IBM/mcp-context-forge/issues/1062) - Sample MCP Server - Python (url-to-markdown-server) + - ✅ [**#1061**](https://github.com/IBM/mcp-context-forge/issues/1061) - Sample MCP Server - Python (python-sandbox-server) + - ✅ [**#1060**](https://github.com/IBM/mcp-context-forge/issues/1060) - Sample MCP Server - Python (latex-server) + - ✅ [**#1059**](https://github.com/IBM/mcp-context-forge/issues/1059) - Sample MCP Server - Python (graphviz-server) + - ✅ [**#1058**](https://github.com/IBM/mcp-context-forge/issues/1058) - Sample MCP Server - Python (mermaid-server) + - ✅ [**#1057**](https://github.com/IBM/mcp-context-forge/issues/1057) - Sample MCP Server - Python (plotly-server) + - ✅ [**#841**](https://github.com/IBM/mcp-context-forge/issues/841) - [Bug]: For A2A Agent, tools are not getting listed under Global Tools + - ✅ [**#839**](https://github.com/IBM/mcp-context-forge/issues/839) - [Bug]:Getting 401 un-authorized on Testing tools in "In-Cognito" mode. + - ✅ [**#836**](https://github.com/IBM/mcp-context-forge/issues/836) - [Bug]: Server Tags Not Propagated to Tools via /tools Endpoint + +--- + +## Release 0.9.0 - Interoperability, marketplaces & advanced connectivity + +!!! danger "Release 0.9.0 - In Progress (1%)" + **Due:** 04 Nov 2025 | **Status:** Open + Interoperability, marketplaces & advanced connectivity + +???+ check "✨ Completed Features (1)" + - ✅ [**#869**](https://github.com/IBM/mcp-context-forge/issues/869) - [Question]: 0.7.0 Release timeline + +??? note "✨ Features (23)" + - [**#1140**](https://github.com/IBM/mcp-context-forge/issues/1140) - [Feature Request]: Reduce Complexity in Plugin Configuration Framework + - [**#1137**](https://github.com/IBM/mcp-context-forge/issues/1137) - [Feature Request]: Add missing hooks to OPA plugin + - [**#1136**](https://github.com/IBM/mcp-context-forge/issues/1136) - [Feature Request]: Feature Request: Add depends_on key in plugin configurations + - [**#1122**](https://github.com/IBM/mcp-context-forge/issues/1122) - [Feature Request]: Investigate Bearer Token Validation in MCP/Forge with Keycloak JWT + - [**#1111**](https://github.com/IBM/mcp-context-forge/issues/1111) - [Feature Request]: Support application/x-www-form-urlencoded Requests in MCP Gateway UI for OAuth2 / Keycloak Integration + - [**#1093**](https://github.com/IBM/mcp-context-forge/issues/1093) - [Feature Request]: Role-Based Access Control (RBAC) - support generic oAuth provider or ldap provider + - [**#1042**](https://github.com/IBM/mcp-context-forge/issues/1042) - [Feature Request]: Implementation Plan for Root Directory + - [**#1019**](https://github.com/IBM/mcp-context-forge/issues/1019) - [Feature] Authentication Architecture through Plugin System - [**#975**](https://github.com/IBM/mcp-context-forge/issues/975) - Feature Request: Implement Session Persistence & Pooling for Improved Performance and State Continuity - [**#974**](https://github.com/IBM/mcp-context-forge/issues/974) - [Feature Request]: Make users change default admin passwords and secrets for production deployments. - - [**#964**](https://github.com/IBM/mcp-context-forge/issues/964) - Support dynamic environment variable injection in mcpgateway.translate for STDIO MCP servers - - [**#950**](https://github.com/IBM/mcp-context-forge/issues/950) - Session Management & Tool Invocation with Gateway vs Direct MCP Client–Server - - [**#946**](https://github.com/IBM/mcp-context-forge/issues/946) - [Bug]: Alembic migrations fails in docker compose setup - - [**#945**](https://github.com/IBM/mcp-context-forge/issues/945) - [Bug]: Unique Constraint is not allowing Users to create servers/tools/resources/prompts with Names already used by another User - - [**#941**](https://github.com/IBM/mcp-context-forge/issues/941) - [Bug]: Access Token scoping not working - - [**#939**](https://github.com/IBM/mcp-context-forge/issues/939) - [Bug]: Missing Document links in SSO page for Team/RBAC management - [**#932**](https://github.com/IBM/mcp-context-forge/issues/932) - [Feature Request]: Air-Gapped Environment Support - - [**#931**](https://github.com/IBM/mcp-context-forge/issues/931) - [Bug]: Helm install does not work when kubeVersion has vendor specific suffix - - [**#926**](https://github.com/IBM/mcp-context-forge/issues/926) - Bootstrap fails to assign platform_admin role due to foreign key constraint violation - - [**#922**](https://github.com/IBM/mcp-context-forge/issues/922) - [Bug]: In 0.6.0 Version, IFraming the admin UI is not working. - - [**#810**](https://github.com/IBM/mcp-context-forge/issues/810) - [Bug]: Ensure Test Cases Use Mock Database instead of Main DB - - [**#806**](https://github.com/IBM/mcp-context-forge/issues/806) - [CHORE]: Bulk Import – Missing error messages and registration feedback in UI + - [**#848**](https://github.com/IBM/mcp-context-forge/issues/848) - [Feature Request]: Allow same prompt name when adding two different mcp server + - [**#835**](https://github.com/IBM/mcp-context-forge/issues/835) - [Feature Request]: Adding Custom annotation for the tools - [**#782**](https://github.com/IBM/mcp-context-forge/issues/782) - [Feature Request]: OAuth Enhancement following PR 768 - [**#758**](https://github.com/IBM/mcp-context-forge/issues/758) - Implement missing MCP protocol methods - [**#756**](https://github.com/IBM/mcp-context-forge/issues/756) - [Feature Request]: REST Passthrough APIs with Pre/Post Plugins (JSONPath and filters) - - [**#751**](https://github.com/IBM/mcp-context-forge/issues/751) - [Feature] Implement MCP Evaluation Benchmarks Suite - [**#743**](https://github.com/IBM/mcp-context-forge/issues/743) - [Feature Request]: Enhance Server Creation/Editing UI for Prompt and Resource Association - - [**#738**](https://github.com/IBM/mcp-context-forge/issues/738) - [Feature Request]: Configuration Database for Dynamic Settings Management - [**#732**](https://github.com/IBM/mcp-context-forge/issues/732) - [Feature Request]: Enhance Handling of Long Tool Descriptions - - [**#699**](https://github.com/IBM/mcp-context-forge/issues/699) - [Feature]: Metrics Enhancement (export all data, capture all metrics, fix last used timestamps, UI improvements) + - [**#706**](https://github.com/IBM/mcp-context-forge/issues/706) - [Feature Request]: ABAC Virtual Server Support - [**#683**](https://github.com/IBM/mcp-context-forge/issues/683) - [Feature Request]: Debug headers and passthrough headers, e.g. X-Tenant-Id, X-Trace-Id, Authorization for time server (go) (draft) - - [**#674**](https://github.com/IBM/mcp-context-forge/issues/674) - [CHORE]: Automate release management process (draft) - - [**#654**](https://github.com/IBM/mcp-context-forge/issues/654) - [Feature Request]: Pre-register checks (mcp server scan) (draft) - - [**#647**](https://github.com/IBM/mcp-context-forge/issues/647) - Configurable caching for tools (draft) - - [**#636**](https://github.com/IBM/mcp-context-forge/issues/636) - [Feature]: Add PyInstaller support for building standalone binaries for all platforms - - [**#595**](https://github.com/IBM/mcp-context-forge/issues/595) - [CHORE] Investigate potential migration to UUID7 (draft) - - [**#589**](https://github.com/IBM/mcp-context-forge/issues/589) - [CHORE]: generating build provenance attestations for workflow artifacts (draft) - - [**#574**](https://github.com/IBM/mcp-context-forge/issues/574) - [CHORE]: Run pyupgrade to upgrade python syntax (draft) - - [**#568**](https://github.com/IBM/mcp-context-forge/issues/568) - [Feature Request]: Configurable client require TLS cert, and certificate setup for MCP Servers with private CA (draft) - - [**#566**](https://github.com/IBM/mcp-context-forge/issues/566) - [Feature Request]: Add support for limiting specific fields to user defined values (draft) - - [**#565**](https://github.com/IBM/mcp-context-forge/issues/565) - [Feature Request]: Docs for https://github.com/block/goose (draft) - - [**#543**](https://github.com/IBM/mcp-context-forge/issues/543) - [SECURITY FEATURE]: CSRF Token Protection System - - [**#542**](https://github.com/IBM/mcp-context-forge/issues/542) - [SECURITY FEATURE]: Helm Chart - Enterprise Secrets Management Integration (Vault) - - [**#541**](https://github.com/IBM/mcp-context-forge/issues/541) - [SECURITY FEATURE]: Enhanced Session Management for Admin UI - - [**#539**](https://github.com/IBM/mcp-context-forge/issues/539) - [SECURITY FEATURE]: Tool Execution Limits & Resource Controls - - [**#538**](https://github.com/IBM/mcp-context-forge/issues/538) - [SECURITY FEATURE] Content Size & Type Security Limits for Resources & Prompts - - [**#537**](https://github.com/IBM/mcp-context-forge/issues/537) - [SECURITY FEATURE]: Simple Endpoint Feature Flags (selectively enable or disable tools, resources, prompts, servers, gateways, roots) - - [**#536**](https://github.com/IBM/mcp-context-forge/issues/536) - [SECURITY FEATURE]: Generic IP-Based Access Control (allowlist) - - [**#535**](https://github.com/IBM/mcp-context-forge/issues/535) - [SECURITY FEATURE]: Audit Logging System - [**#534**](https://github.com/IBM/mcp-context-forge/issues/534) - [SECURITY FEATURE]: Add Security Configuration Validation and Startup Checks - - [**#505**](https://github.com/IBM/mcp-context-forge/issues/505) - [Feature Request]: Add ENV token forwarding management per tool (draft) + - [**#295**](https://github.com/IBM/mcp-context-forge/issues/295) - [Feature Request]: MCP Server Marketplace and Registry + - [**#277**](https://github.com/IBM/mcp-context-forge/issues/277) - [Feature Request]: Authentication & Authorization - GitHub SSO Integration Tutorial (Depends on #220) -???+ danger "🐛 Open Bugs (14)" - - [**#959**](https://github.com/IBM/mcp-context-forge/issues/959) - [Bug]: Unable to Re-add Team Member Due to Unique Constraint on (team_id, user_email) - - [**#867**](https://github.com/IBM/mcp-context-forge/issues/867) - [Bug]: update_gateway does not persist passthrough_headers field - - [**#865**](https://github.com/IBM/mcp-context-forge/issues/865) - [Bug]: Static assets return 404 when APP_ROOT_PATH is configured +??? note "🐛 Bugs (18)" + - [**#1098**](https://github.com/IBM/mcp-context-forge/issues/1098) - [Bug]:Unable to see request payload being sent + - [**#1094**](https://github.com/IBM/mcp-context-forge/issues/1094) - [Bug]: Creating an MCP OAUTH2 server fails if using API. + - [**#1092**](https://github.com/IBM/mcp-context-forge/issues/1092) - [Bug]: after issue 1078 change, how to add X-Upstream-Authorization header when click Authorize in admin UI + - [**#1047**](https://github.com/IBM/mcp-context-forge/issues/1047) - [Bug]:MCP Server/Federated Gateway Registration is failing + - [**#1024**](https://github.com/IBM/mcp-context-forge/issues/1024) - [Bug]: plugin that is using tool_prefetch hook cannot access PASSTHROUGH_HEADERS, tags for an MCP Server Need MCP-GW restart + - [**#969**](https://github.com/IBM/mcp-context-forge/issues/969) - Backend Multi-Tenancy Issues - Critical bugs and missing features + - [**#967**](https://github.com/IBM/mcp-context-forge/issues/967) - UI Gaps in Multi-Tenancy Support - Visibility fields missing for most resource types + - [**#946**](https://github.com/IBM/mcp-context-forge/issues/946) - [Bug]: Alembic migrations fails in docker compose setup + - [**#945**](https://github.com/IBM/mcp-context-forge/issues/945) - [Bug]: Unique Constraint is not allowing Users to create servers/tools/resources/prompts with Names already used by another User + - [**#926**](https://github.com/IBM/mcp-context-forge/issues/926) - [BUG] Bootstrap fails to assign platform_admin role due to foreign key constraint violation + - [**#922**](https://github.com/IBM/mcp-context-forge/issues/922) - [Bug]: In 0.6.0 Version, IFraming the admin UI is not working. - [**#861**](https://github.com/IBM/mcp-context-forge/issues/861) - [Bug]: Passthrough header parameters not persisted to database - - [**#856**](https://github.com/IBM/mcp-context-forge/issues/856) - [Bug]: Admin UI: Associated tools checkboxes on Virtual Servers edit not pre-populated due to ID vs name mismatch - - [**#848**](https://github.com/IBM/mcp-context-forge/issues/848) - [Feature Request]: Allow same prompt name when adding two different mcp server - - [**#845**](https://github.com/IBM/mcp-context-forge/issues/845) - [Bug]:2025-08-28 05:47:06,733 - mcpgateway.services.gateway_service - ERROR - FileLock health check failed: can't start new thread - [**#842**](https://github.com/IBM/mcp-context-forge/issues/842) - [Bug]: 401 on privileged actions after cold restart despite valid login - - [**#841**](https://github.com/IBM/mcp-context-forge/issues/841) - [Bug]: For A2A Agent, tools are not getting listed under Global Tools - - [**#840**](https://github.com/IBM/mcp-context-forge/issues/840) - [Bug]: For A2A Agent test not working - - [**#839**](https://github.com/IBM/mcp-context-forge/issues/839) - [Bug]:Getting 401 un-authorized on Testing tools in "In-Cognito" mode. - - [**#836**](https://github.com/IBM/mcp-context-forge/issues/836) - [Bug]: Server Tags Not Propagated to Tools via /tools Endpoint - - [**#835**](https://github.com/IBM/mcp-context-forge/issues/835) - [Feature Request]: Adding Custom annotation for the tools + - [**#625**](https://github.com/IBM/mcp-context-forge/issues/625) - [Bug]: Gateway unable to register gateway or call tools on MacOS + - [**#464**](https://github.com/IBM/mcp-context-forge/issues/464) - [Bug]: MCP Server "Active" status not getting updated under "Gateways/MCP Servers" when the MCP Server shutdown. + - [**#448**](https://github.com/IBM/mcp-context-forge/issues/448) - [Bug]:MCP server with custom base path "/api" instead of "mcp" or "sse" is not working + - [**#409**](https://github.com/IBM/mcp-context-forge/issues/409) - [Bug]: Add configurable limits for data cleaning / XSS prevention in .env.example and helm (draft) - [**#383**](https://github.com/IBM/mcp-context-forge/issues/383) - [Bug]: Remove migration step from Helm chart (now automated, no longer needed) -???+ danger "🔌 Additional Plugin Features (3)" - - [**#895**](https://github.com/IBM/mcp-context-forge/issues/895) - [Plugin] Create Header Injector Plugin using Plugin Framework - - [**#894**](https://github.com/IBM/mcp-context-forge/issues/894) - [Plugin] Create Secrets Detection Plugin using Plugin Framework - - [**#893**](https://github.com/IBM/mcp-context-forge/issues/893) - [Plugin] Create JSON Schema Validator Plugin using Plugin Framework +??? note "🔒 Security (2)" + - [**#568**](https://github.com/IBM/mcp-context-forge/issues/568) - [Feature]: mTLS support (gateway and plugins), configurable client require TLS cert, and certificate setup for MCP Servers with private CA + - [**#342**](https://github.com/IBM/mcp-context-forge/issues/342) - [SECURITY FEATURE]: Implement database-level security constraints and SQL injection prevention + +??? note "🔧 Chores (4)" + - [**#1108**](https://github.com/IBM/mcp-context-forge/issues/1108) - [Bug]: When using postgresql as database, high postgresql transaction rollback rate detected + - [**#386**](https://github.com/IBM/mcp-context-forge/issues/386) - [Feature Request]: Gateways/MCP Servers Page Refresh + - [**#301**](https://github.com/IBM/mcp-context-forge/issues/301) - [Feature Request]: Full Circuit Breakers for Unstable MCP Server Backends support (extend existing healthchecks with half-open state) + - [**#300**](https://github.com/IBM/mcp-context-forge/issues/300) - [Feature Request]: Structured JSON Logging with Correlation IDs + +??? note "📚 Documentation (1)" + - [**#172**](https://github.com/IBM/mcp-context-forge/issues/172) - [Feature Request]: Enable Auto Refresh and Reconnection for MCP Servers in Gateways + +??? note "🔌 Plugin Features (4)" + - [**#1020**](https://github.com/IBM/mcp-context-forge/issues/1020) - [Feature] Edit Button Functionality - A2A + - [**#840**](https://github.com/IBM/mcp-context-forge/issues/840) - [Bug]: For A2A Agent test not working + - [**#285**](https://github.com/IBM/mcp-context-forge/issues/285) - [Feature Request]: Configuration Validation & Schema Enforcement using Pydantic V2 models, config validator cli flag + - [**#271**](https://github.com/IBM/mcp-context-forge/issues/271) - [SECURITY FEATURE]: Policy-as-Code Engine - Rego Prototype + +??? note "📦 Sample Servers (3)" + - [**#258**](https://github.com/IBM/mcp-context-forge/issues/258) - [Feature Request]: Universal Client Retry Mechanisms with Exponential Backoff & Random Jitter + - [**#80**](https://github.com/IBM/mcp-context-forge/issues/80) - [Feature Request]: Publish a multi-architecture container (including ARM64) support + +--- + +## Release 1.0.0 - Release 1.0 General Availability & Release Candidate Hardening - stable & audited + +!!! danger "Release 1.0.0 - In Progress (0%)" + **Due:** 02 Dec 2025 | **Status:** Open + Release 1.0 General Availability & Release Candidate Hardening - stable & audited -???+ danger "🏗️ Open Sample Servers & Agents (15)" +??? note "✨ Features (62)" + - [**#1171**](https://github.com/IBM/mcp-context-forge/issues/1171) - [Feature]: gRPC-to-MCP Protocol Translation + - [**#1138**](https://github.com/IBM/mcp-context-forge/issues/1138) - [Feature Request]: Support for container builds for s390x + - [**#950**](https://github.com/IBM/mcp-context-forge/issues/950) - Session Management & Tool Invocation with Gateway vs Direct MCP Client–Server - [**#921**](https://github.com/IBM/mcp-context-forge/issues/921) - Sample MCP Server - Python (weather-data-server) - [**#919**](https://github.com/IBM/mcp-context-forge/issues/919) - Sample MCP Server - Python (qr-code-server) - [**#912**](https://github.com/IBM/mcp-context-forge/issues/912) - Sample Agent - IBM BeeAI Framework Integration (OpenAI & A2A Endpoints) @@ -469,20 +558,99 @@ - [**#902**](https://github.com/IBM/mcp-context-forge/issues/902) - Sample MCP Server - Rust (performance-benchmark-server) - [**#901**](https://github.com/IBM/mcp-context-forge/issues/901) - Sample MCP Server - Rust (crypto-tools-server) - [**#899**](https://github.com/IBM/mcp-context-forge/issues/899) - Sample MCP Server - Python (ml-inference-server) - -???+ danger "🖥️ Open Sample Servers (3)" - [**#898**](https://github.com/IBM/mcp-context-forge/issues/898) - Sample MCP Server - Go (system-monitor-server) - [**#897**](https://github.com/IBM/mcp-context-forge/issues/897) - Sample MCP Server - Go (database-query-server) - [**#896**](https://github.com/IBM/mcp-context-forge/issues/896) - Add Prompt Authoring Tools Category to MCP Eval Server + - [**#892**](https://github.com/IBM/mcp-context-forge/issues/892) - Update and test IBM Cloud deployment documentation and automation + - [**#806**](https://github.com/IBM/mcp-context-forge/issues/806) - [CHORE]: Bulk Import – Missing error messages and registration feedback in UI + - [**#751**](https://github.com/IBM/mcp-context-forge/issues/751) - [Feature] MCP Server - Implement MCP Evaluation Benchmarks Suite + - [**#738**](https://github.com/IBM/mcp-context-forge/issues/738) - [Feature Request]: Configuration Database for Dynamic Settings Management + - [**#674**](https://github.com/IBM/mcp-context-forge/issues/674) - [CHORE]: Automate release management process (draft) + - [**#595**](https://github.com/IBM/mcp-context-forge/issues/595) - [CHORE] Investigate potential migration to UUID7 (draft) + - [**#589**](https://github.com/IBM/mcp-context-forge/issues/589) - [CHORE]: generating build provenance attestations for workflow artifacts (draft) + - [**#574**](https://github.com/IBM/mcp-context-forge/issues/574) - [CHORE]: Run pyupgrade to upgrade python syntax (draft) + - [**#565**](https://github.com/IBM/mcp-context-forge/issues/565) - [Feature Request]: Docs for https://github.com/block/goose (draft) + - [**#546**](https://github.com/IBM/mcp-context-forge/issues/546) - [Feature Request]: Protocol Version Negotiation & Backward Compatibility + - [**#543**](https://github.com/IBM/mcp-context-forge/issues/543) - [SECURITY FEATURE]: CSRF Token Protection System + - [**#542**](https://github.com/IBM/mcp-context-forge/issues/542) - [SECURITY FEATURE]: Helm Chart - Enterprise Secrets Management Integration (Vault) + - [**#541**](https://github.com/IBM/mcp-context-forge/issues/541) - [SECURITY FEATURE]: Enhanced Session Management for Admin UI + - [**#539**](https://github.com/IBM/mcp-context-forge/issues/539) - [SECURITY FEATURE]: Tool Execution Limits & Resource Controls + - [**#538**](https://github.com/IBM/mcp-context-forge/issues/538) - [SECURITY FEATURE] Content Size & Type Security Limits for Resources & Prompts + - [**#537**](https://github.com/IBM/mcp-context-forge/issues/537) - [SECURITY FEATURE]: Simple Endpoint Feature Flags (selectively enable or disable tools, resources, prompts, servers, gateways, roots) + - [**#536**](https://github.com/IBM/mcp-context-forge/issues/536) - [SECURITY FEATURE]: Generic IP-Based Access Control (allowlist) + - [**#535**](https://github.com/IBM/mcp-context-forge/issues/535) - [SECURITY FEATURE]: Audit Logging System + - [**#505**](https://github.com/IBM/mcp-context-forge/issues/505) - [Feature Request]: Add ENV token forwarding management per tool (draft) + - [**#432**](https://github.com/IBM/mcp-context-forge/issues/432) - [PERFORMANCE]: Performance Optimization Implementation and Guide for MCP Gateway (baseline) + - [**#414**](https://github.com/IBM/mcp-context-forge/issues/414) - [CHORE]: Restructure Makefile targets (ex: move grype to container scanning section), or have a dedicated security scanning section + - [**#408**](https://github.com/IBM/mcp-context-forge/issues/408) - [CHORE]: Add normalize script to pre-commit hooks (draft) + - [**#407**](https://github.com/IBM/mcp-context-forge/issues/407) - [CHORE]: Improve pytest and plugins (draft) + - [**#402**](https://github.com/IBM/mcp-context-forge/issues/402) - [CHORE]: Add post-deploy step to helm that configures the Time Server as a Gateway (draft) + - [**#398**](https://github.com/IBM/mcp-context-forge/issues/398) - [CHORE]: Enforce pre-commit targets for doctest coverage, pytest coverage, pylint score 10/10, flake8 pass and add badges + - [**#391**](https://github.com/IBM/mcp-context-forge/issues/391) - [CHORE]: Setup SonarQube quality gate (draft) + - [**#377**](https://github.com/IBM/mcp-context-forge/issues/377) - [CHORE]: Fix PostgreSQL Volume Name Conflicts in Helm Chart (draft) + - [**#341**](https://github.com/IBM/mcp-context-forge/issues/341) - [CHORE]: Enhance UI security with DOMPurify and content sanitization + - [**#318**](https://github.com/IBM/mcp-context-forge/issues/318) - [CHORE]: Publish Agents and Tools that leverage codebase and templates (draft) + - [**#312**](https://github.com/IBM/mcp-context-forge/issues/312) - [CHORE]: End-to-End MCP Gateway Stack Testing Harness (mcpgateway, translate, wrapper, mcp-servers) + - [**#307**](https://github.com/IBM/mcp-context-forge/issues/307) - [CHORE]: GitHub Actions to build docs, with diagrams and test report, and deploy to GitHub Pages using MkDocs on every push to main + - [**#294**](https://github.com/IBM/mcp-context-forge/issues/294) - [Feature Request]: Automated MCP Server Testing and Certification + - [**#292**](https://github.com/IBM/mcp-context-forge/issues/292) - [CHORE]: Enable AI Alliance Analytics Stack Integration + - [**#291**](https://github.com/IBM/mcp-context-forge/issues/291) - [CHORE]: Comprehensive Scalability & Soak-Test Harness (Long-term Stability & Load) - locust, pytest-benchmark, smocker mocked MCP servers + - [**#290**](https://github.com/IBM/mcp-context-forge/issues/290) - [CHORE]: Enhance Gateway Tuning Guide with PostgreSQL Deep-Dive + - [**#289**](https://github.com/IBM/mcp-context-forge/issues/289) - [Feature Request]: Multi-Layer Caching System (Memory + Redis) + - [**#288**](https://github.com/IBM/mcp-context-forge/issues/288) - [Feature Request]: MariaDB Support Testing, Documentation, CI/CD (alongside PostgreSQL & SQLite) + - [**#287**](https://github.com/IBM/mcp-context-forge/issues/287) - [Feature Request]: API Path Versioning /v1 and /experimental prefix + - [**#286**](https://github.com/IBM/mcp-context-forge/issues/286) - [Feature Request]: Dynamic Configuration UI & Admin API (store config in database after db init) + - [**#284**](https://github.com/IBM/mcp-context-forge/issues/284) - [AUTH FEATURE]: LDAP / Active-Directory Integration + - [**#281**](https://github.com/IBM/mcp-context-forge/issues/281) - [CHORE]: Set up contract testing with Pact (pact-python) including Makefile and GitHub Actions targets + - [**#276**](https://github.com/IBM/mcp-context-forge/issues/276) - [Feature Request]: Terraform Module – "mcp-gateway-ibm-cloud" supporting IKS, ROKS, Code Engine targets + - [**#275**](https://github.com/IBM/mcp-context-forge/issues/275) - [Feature Request]: Terraform Module - "mcp-gateway-gcp" supporting GKE and Cloud Run + - [**#274**](https://github.com/IBM/mcp-context-forge/issues/274) - [Feature Request]: Terraform Module - "mcp-gateway-azure" supporting AKS and ACA + - [**#273**](https://github.com/IBM/mcp-context-forge/issues/273) - [Feature Request]: Terraform Module - "mcp-gateway-aws" supporting both EKS and ECS Fargate targets + - [**#272**](https://github.com/IBM/mcp-context-forge/issues/272) - [Feature Request]: Observability - Pre-built Grafana Dashboards & Loki Log Export + - [**#267**](https://github.com/IBM/mcp-context-forge/issues/267) - [Feature Request]: Sample MCP Server – Java Implementation ("plantuml-server") + - [**#266**](https://github.com/IBM/mcp-context-forge/issues/266) - [Feature Request]: Sample MCP Server - Rust Implementation ("filesystem-server") + - [**#264**](https://github.com/IBM/mcp-context-forge/issues/264) - [DOCS]: GA Documentation Review & End-to-End Validation Audit + - [**#261**](https://github.com/IBM/mcp-context-forge/issues/261) - [CHORE]: Implement 90% Test Coverage Quality Gate and automatic badge and coverage html / markdown report publication + - [**#260**](https://github.com/IBM/mcp-context-forge/issues/260) - [CHORE]: Manual security testing plan and template for release validation and production deployments + - [**#259**](https://github.com/IBM/mcp-context-forge/issues/259) - [CHORE]: SAST (Semgrep) and DAST (OWASP ZAP) automated security testing Makefile targets and GitHub Actions + - [**#257**](https://github.com/IBM/mcp-context-forge/issues/257) - [SECURITY FEATURE]: Gateway-Level Rate Limiting, DDoS Protection & Abuse Detection + - [**#255**](https://github.com/IBM/mcp-context-forge/issues/255) - [CHORE]: Implement comprehensive Playwright test automation for the entire MCP Gateway Admin UI with Makefile targets and GitHub Actions + - [**#252**](https://github.com/IBM/mcp-context-forge/issues/252) - [CHORE]: Establish database migration testing pipeline with rollback validation across SQLite, Postgres, and Redis + - [**#251**](https://github.com/IBM/mcp-context-forge/issues/251) - [CHORE]: Automatic performance testing and tracking for every build (hey) including SQLite and Postgres / Redis configurations + - [**#250**](https://github.com/IBM/mcp-context-forge/issues/250) - [CHORE]: Implement automatic API documentation generation using mkdocstrings and update Makefile + - [**#234**](https://github.com/IBM/mcp-context-forge/issues/234) - [Feature Request]: 🧠 Protocol Feature – Elicitation Support (MCP 2025-06-18) + - [**#230**](https://github.com/IBM/mcp-context-forge/issues/230) - [SECURITY FEATURE]: Cryptographic Request & Response Signing + - [**#223**](https://github.com/IBM/mcp-context-forge/issues/223) - [CHORE]: Helm Chart Test Harness & Red Hat chart-verifier + - [**#222**](https://github.com/IBM/mcp-context-forge/issues/222) - [CHORE]: Helm chart build Makefile with lint and values.schema.json validation + CODEOWNERS, CHANGELOG.md, .helmignore and CONTRIBUTING.md + - [**#221**](https://github.com/IBM/mcp-context-forge/issues/221) - [SECURITY FEATURE]: Gateway-Level Input Validation & Output Sanitization (prevent traversal) + - [**#218**](https://github.com/IBM/mcp-context-forge/issues/218) - [Feature Request]: Prometheus Metrics Instrumentation using prometheus-fastapi-instrumentator + - [**#217**](https://github.com/IBM/mcp-context-forge/issues/217) - [Feature Request]: Graceful-Shutdown Hooks for API & Worker Containers (SIGTERM-safe rollouts, DB-pool cleanup, zero-drop traffic) + - [**#216**](https://github.com/IBM/mcp-context-forge/issues/216) - [CHORE]: Add spec-validation targets and make the OpenAPI build go green + - [**#212**](https://github.com/IBM/mcp-context-forge/issues/212) - [CHORE]: Achieve zero flagged SonarQube issues + - [**#211**](https://github.com/IBM/mcp-context-forge/issues/211) - [CHORE]: Achieve Zero Static-Type Errors Across All Checkers (mypy, ty, pyright, pyrefly) + - [**#209**](https://github.com/IBM/mcp-context-forge/issues/209) - [Feature Request]: Anthropic Desktop Extensions DTX directory/marketplace + - [**#182**](https://github.com/IBM/mcp-context-forge/issues/182) - [Feature Request]: Semantic tool auto-filtering + - [**#175**](https://github.com/IBM/mcp-context-forge/issues/175) - [Feature Request]: Add OpenLLMetry Integration for Observability + - [**#130**](https://github.com/IBM/mcp-context-forge/issues/130) - [Feature Request]: Dynamic LLM-Powered Tool Generation via Prompt + - [**#123**](https://github.com/IBM/mcp-context-forge/issues/123) - [Feature Request]: Dynamic Server Catalog via Rule, Regexp, Tags - or Embedding / LLM-Based Selection + - [**#114**](https://github.com/IBM/mcp-context-forge/issues/114) - [Feature Request]: Connect to Dockerized MCP Servers via STDIO + - [**#22**](https://github.com/IBM/mcp-context-forge/issues/22) - [Docs]: Add BeeAI Framework client integration (Python & TypeScript) + +--- + +## Release 1.1.0 - Post-GA Testing, Bugfixing, Documentation, Performance and Scale -???+ danger "📚 Open Documentation (30)" +!!! danger "Release 1.1.0 - Planned" + **Due:** 06 Jan 2026 | **Status:** Open + Post-GA Testing, Bugfixing, Documentation, Performance and Scale + +??? note "✨ Features (39)" - [**#918**](https://github.com/IBM/mcp-context-forge/issues/918) - Document Javadocs.dev MCP Server integration with MCP Gateway - [**#917**](https://github.com/IBM/mcp-context-forge/issues/917) - Document Hugging Face MCP Server integration with MCP Gateway - [**#916**](https://github.com/IBM/mcp-context-forge/issues/916) - Document monday.com MCP Server integration with MCP Gateway - [**#915**](https://github.com/IBM/mcp-context-forge/issues/915) - Document GitHub MCP Server integration with MCP Gateway - [**#914**](https://github.com/IBM/mcp-context-forge/issues/914) - Document Box MCP Server integration with MCP Gateway - [**#913**](https://github.com/IBM/mcp-context-forge/issues/913) - Document Atlassian MCP Server integration with MCP Gateway - - [**#892**](https://github.com/IBM/mcp-context-forge/issues/892) - Update and test IBM Cloud deployment documentation and automation - [**#891**](https://github.com/IBM/mcp-context-forge/issues/891) - Document BeeAI Framework integration with MCP Gateway - [**#890**](https://github.com/IBM/mcp-context-forge/issues/890) - Document Langflow as MCP Server integration with MCP Gateway - [**#889**](https://github.com/IBM/mcp-context-forge/issues/889) - Document MCP Composer integration with MCP Gateway @@ -504,136 +672,74 @@ - [**#873**](https://github.com/IBM/mcp-context-forge/issues/873) - Document watsonx Orchestrate integration with MCP Gateway - [**#872**](https://github.com/IBM/mcp-context-forge/issues/872) - Document watsonx.ai integration with MCP Gateway - [**#871**](https://github.com/IBM/mcp-context-forge/issues/871) - Document Langflow integration with MCP Gateway - - [**#503**](https://github.com/IBM/mcp-context-forge/issues/503) - Tutorial: OpenWebUI with Ollama, LiteLLM, MCPO, and MCP Gateway Deployment Guide (Draft) - - [**#277**](https://github.com/IBM/mcp-context-forge/issues/277) - [Feature Request]: Authentication & Authorization - GitHub SSO Integration Tutorial (Depends on #220) - -!!! info "177 Total Issues (4 completed, 173 open)" - This release contains a comprehensive set of enterprise security features, plugins, sample servers, and documentation. Due to the large scope, issues are grouped by category for better organization. - - **Issue Breakdown:** - - 🔌 15 Plugin Features (12 main + 3 additional) - - 🔒 44 Security Features - - 🐛 16 Bugs (2 completed + 14 open) - - 🏗️ 20 Sample Servers & Agents - - 📚 30 Documentation Issues - - 🔧 Various chores and infrastructure improvements + - [**#707**](https://github.com/IBM/mcp-context-forge/issues/707) - [Feature Request]: Customizable Admin Panel + - [**#654**](https://github.com/IBM/mcp-context-forge/issues/654) - [Feature Request]: Pre-register checks (mcp server scan) (draft) + - [**#647**](https://github.com/IBM/mcp-context-forge/issues/647) - Configurable caching for tools (draft) + - [**#566**](https://github.com/IBM/mcp-context-forge/issues/566) - [Feature Request]: Add support for limiting specific fields to user defined values (draft) + - [**#545**](https://github.com/IBM/mcp-context-forge/issues/545) - [Feature Request]: Hot-Reload Configuration Without Restart (move from .env to configuration database table) (draft) + - [**#503**](https://github.com/IBM/mcp-context-forge/issues/503) - [Docs]: Tutorial: OpenWebUI with Ollama, LiteLLM, MCPO, and MCP Gateway Deployment Guide (Draft) + - [**#293**](https://github.com/IBM/mcp-context-forge/issues/293) - [Feature Request]: Intelligent Load Balancing for Redundant MCP Servers + - [**#270**](https://github.com/IBM/mcp-context-forge/issues/270) - [Feature Request]: MCP Server – Go Implementation ("libreoffice-server") + - [**#269**](https://github.com/IBM/mcp-context-forge/issues/269) - [Feature Request]: MCP Server - Go Implementation (LaTeX Service) + - [**#268**](https://github.com/IBM/mcp-context-forge/issues/268) - [Feature Request]: Sample MCP Server - Haskell Implementation ("pandoc-server") (html, docx, pptx, latex conversion) + - [**#263**](https://github.com/IBM/mcp-context-forge/issues/263) - [Feature Request]: Sample Agent - CrewAI Integration (OpenAI & A2A Endpoints) + - [**#262**](https://github.com/IBM/mcp-context-forge/issues/262) - [Feature Request]: Sample Agent - LangChain Integration (OpenAI & A2A Endpoints) + - [**#253**](https://github.com/IBM/mcp-context-forge/issues/253) - [CHORE]: Implement chaos engineering tests for fault tolerance validation (network partitions, service failures) --- -## Release 0.9.0 - Interoperability, marketplaces & advanced connectivity +## Release 1.2.0 - Release 1.2.0 - Catalog Enhancements, Ratings, experience and UI -!!! danger "Release 0.9.0 - In Progress (8%)" - **Due:** 14 Oct 2025 | **Status:** Open - Interoperability, marketplaces & advanced connectivity +!!! danger "Release 1.2.0 - Planned" + **Due:** 03 Feb 2026 | **Status:** Open + Release 1.2.0 - Catalog Enhancements, Ratings, experience and UI -???+ check "✨ Completed Features (2)" - - ✅ [**#298**](https://github.com/IBM/mcp-context-forge/issues/298) - A2A Initial Support - Add A2A Servers as Tools - - ✅ [**#243**](https://github.com/IBM/mcp-context-forge/issues/243) - a2a compatibility? - -???+ danger "✨ Open Features (13)" - - [**#546**](https://github.com/IBM/mcp-context-forge/issues/546) - Protocol Version Negotiation & Backward Compatibility - - [**#545**](https://github.com/IBM/mcp-context-forge/issues/545) - Hot-Reload Configuration Without Restart (move from .env to configuration database table) (draft) - - [**#295**](https://github.com/IBM/mcp-context-forge/issues/295) - MCP Server Marketplace - - [**#294**](https://github.com/IBM/mcp-context-forge/issues/294) - Automated MCP Server Testing and Certification - - [**#288**](https://github.com/IBM/mcp-context-forge/issues/288) - MariaDB Support Testing, Documentation, CI/CD (alongside PostgreSQL & SQLite) - - [**#276**](https://github.com/IBM/mcp-context-forge/issues/276) - Terraform Module – "mcp-gateway-ibm-cloud" supporting IKS, ROKS, Code Engine targets - - [**#275**](https://github.com/IBM/mcp-context-forge/issues/275) - Terraform Module - "mcp-gateway-gcp" supporting GKE and Cloud Run - - [**#274**](https://github.com/IBM/mcp-context-forge/issues/274) - Terraform Module - "mcp-gateway-azure" supporting AKS and ACA - - [**#273**](https://github.com/IBM/mcp-context-forge/issues/273) - Terraform Module - "mcp-gateway-aws" supporting both EKS and ECS Fargate targets - - [**#272**](https://github.com/IBM/mcp-context-forge/issues/272) - Observability - Pre-built Grafana Dashboards & Loki Log Export - - [**#270**](https://github.com/IBM/mcp-context-forge/issues/270) - MCP Server – Go Implementation ("libreoffice-server") - - [**#269**](https://github.com/IBM/mcp-context-forge/issues/269) - MCP Server - Go Implementation (LaTeX Service) - - [**#268**](https://github.com/IBM/mcp-context-forge/issues/268) - Sample MCP Server - Haskell Implementation ("pandoc-server") (html, docx, pptx, latex conversion) - -???+ danger "✨ Open Features (8)" - - [**#267**](https://github.com/IBM/mcp-context-forge/issues/267) - Sample MCP Server – Java Implementation ("plantuml-server") - - [**#266**](https://github.com/IBM/mcp-context-forge/issues/266) - Sample MCP Server - Rust Implementation ("filesystem-server") - - [**#209**](https://github.com/IBM/mcp-context-forge/issues/209) - Anthropic Desktop Extensions DTX directory/marketplace - - [**#182**](https://github.com/IBM/mcp-context-forge/issues/182) - Semantic tool auto-filtering - - [**#130**](https://github.com/IBM/mcp-context-forge/issues/130) - Dynamic LLM-Powered Tool Generation via Prompt - - [**#123**](https://github.com/IBM/mcp-context-forge/issues/123) - Dynamic Server Catalog via Rule, Regexp, Tags - or LLM-Based Selection - - [**#114**](https://github.com/IBM/mcp-context-forge/issues/114) - Connect to Dockerized MCP Servers via STDIO - - [**#80**](https://github.com/IBM/mcp-context-forge/issues/80) - Publish a multi-architecture container (including ARM64) support - -???+ danger "🔧 Open Chores (1)" - - [**#290**](https://github.com/IBM/mcp-context-forge/issues/290) - Enhance Gateway Tuning Guide with PostgreSQL Deep-Dive +??? note "✨ Features (3)" + - [**#636**](https://github.com/IBM/mcp-context-forge/issues/636) - [Feature]: Add PyInstaller support for building standalone binaries for all platforms + - [**#547**](https://github.com/IBM/mcp-context-forge/issues/547) - [Feature]: Built-in MCP Server Health Dashboard + - [**#296**](https://github.com/IBM/mcp-context-forge/issues/296) - [Feature Request]: MCP Server Rating and Review System --- -## Release 1.0.0 - General Availability & Release Candidate Hardening - stable & audited +## Release 1.3.0 - Catalog Improvements, A2A Improvements, MCP Standard Review and Sync, Technical Debt -!!! danger "Release 1.0.0 - In Progress (0%)" - **Due:** 11 Nov 2025 | **Status:** Open - General Availability & Release Candidate Hardening - stable & audited +!!! danger "Release 1.3.0 - Planned" + **Due:** 03 Mar 2026 | **Status:** Open + Catalog Improvements, A2A Improvements, MCP Standard Review and Sync, Technical Debt -???+ danger "📚 Open Documentation (2)" - - [**#264**](https://github.com/IBM/mcp-context-forge/issues/264) - GA Documentation Review & End-to-End Validation Audit - - [**#22**](https://github.com/IBM/mcp-context-forge/issues/22) - Add BeeAI Framework client integration (Python & TypeScript) +??? note "✨ Features (1)" + - [**#299**](https://github.com/IBM/mcp-context-forge/issues/299) - [Feature Request]: A2A Ecosystem Integration & Marketplace (Extends A2A support) --- -## Release 1.1.0 - Post-GA Testing, Bugfixing, Documentation, Performance and Scale +## Release 1.4.0 - Technical Debt and Quality -!!! danger "Release 1.1.0 - In Progress (0%)" - **Due:** 25 Nov 2025 | **Status:** Open - Post-GA Testing, Bugfixing, Documentation, Performance and Scale +!!! danger "Release 1.4.0 - Planned" + **Due:** 07 Apr 2026 | **Status:** Open + Technical Debt and Quality -???+ danger "✨ Open Features (2)" - - [**#707**](https://github.com/IBM/mcp-context-forge/issues/707) - Customizable Admin Panel - - [**#293**](https://github.com/IBM/mcp-context-forge/issues/293) - Intelligent Load Balancing for Redundant MCP Servers +**0 Open Issues** - Milestone details TBD --- -## Release 1.2.0 - Catalog Enhancements, Ratings, experience and UI +## Release 1.5.0 - Documentation, Technical Debt, Bugfixes -!!! danger "Release 1.2.0 - In Progress (0%)" - **Due:** 09 Dec 2025 | **Status:** Open - Catalog Enhancements, Ratings, experience and UI +!!! danger "Release 1.5.0 - Planned" + **Due:** 05 May 2026 | **Status:** Open + Documentation, Technical Debt, Bugfixes -???+ danger "✨ Open Features (2)" - - [**#547**](https://github.com/IBM/mcp-context-forge/issues/547) - Built-in MCP Server Health Dashboard - - [**#296**](https://github.com/IBM/mcp-context-forge/issues/296) - MCP Server Rating and Review System +**0 Open Issues** - Milestone details TBD --- -## Release 1.3.0 - Catalog Improvements, A2A Improvements, MCP Standard Review and Sync, Technical Debt +## Release 1.6.0 - New MCP Servers and Agents -!!! danger "Release 1.3.0 - In Progress (0%)" - **Due:** 23 Dec 2025 | **Status:** Open - Catalog Improvements, A2A Improvements, MCP Standard Review and Sync, Technical Debt - -???+ danger "✨ Open Features (1)" - - [**#299**](https://github.com/IBM/mcp-context-forge/issues/299) - A2A Ecosystem Integration & Marketplace (Extends A2A support) - ---- +!!! danger "Release 1.6.0 - Planned" + **Due:** 02 Jun 2026 | **Status:** Open + New MCP Servers and Agents -## Unassigned Issues - -!!! warning "Issues Without Release Assignment" - The following issues are not assigned to any specific release (open or completed): - -??? abstract "✨ Features (2 completed, 1 open)" - - ✅ [**#752**](https://github.com/IBM/mcp-context-forge/issues/752) - [Feature] Create mcp-eval-server: MCP Server for Agent Performance Evaluation - - ✅ [**#679**](https://github.com/IBM/mcp-context-forge/issues/679) - [Feature] Add enabled field to plugins/config.yaml - - [**#978**](https://github.com/IBM/mcp-context-forge/issues/978) - Support Content-Type: application/x-www-form-urlencoded - -??? abstract "🐛 Bugs (12 completed, 0 open)" - - ✅ [**#962**](https://github.com/IBM/mcp-context-forge/issues/962) - Bridge stdio MCP with ENV variable requirement - - ✅ [**#954**](https://github.com/IBM/mcp-context-forge/issues/954) - [Bug]: Metadata fields not populated in view - - ✅ [**#952**](https://github.com/IBM/mcp-context-forge/issues/952) - [Bug]: Tool's long descriptions make Create MCP Server to fail - - ✅ [**#943**](https://github.com/IBM/mcp-context-forge/issues/943) - [Bug]: Team/RBAC feature not working as expected - - ✅ [**#857**](https://github.com/IBM/mcp-context-forge/issues/857) - [Bug]: Prompts, Servers, Tools, Resources - Filtering via tags from swagger UI - not working - - ✅ [**#855**](https://github.com/IBM/mcp-context-forge/issues/855) - [Bug]: Tool calls are failing due to 20s timeout - - ✅ [**#804**](https://github.com/IBM/mcp-context-forge/issues/804) - [Bug]: JSON-RPC methods misrouted as tools in MCP Gateway v0.5.0 (Tool not found: notifications/initialized / tools/call) - - ✅ [**#803**](https://github.com/IBM/mcp-context-forge/issues/803) - [Bug]: streamable_http - ERROR - Error in message router - ClosedResourceError - - ✅ [**#779**](https://github.com/IBM/mcp-context-forge/issues/779) - [Bug]: Refactor and Optimize MCP Gateway Wrapper for Performance and Maintainability - - ✅ [**#740**](https://github.com/IBM/mcp-context-forge/issues/740) - [Bug]:"REST" Add Tool and All Integration Edit Tool Not Working After PR #731 - - ✅ [**#715**](https://github.com/IBM/mcp-context-forge/issues/715) - [Bug]:Tool Edit Screen Issues – Field Mismatch & MCP Tool Validation Error - - ✅ [**#700**](https://github.com/IBM/mcp-context-forge/issues/700) - [Bug]: Move async_testing to tests/async - -???+ check "❓ Completed Questions (2)" - - ✅ [**#510**](https://github.com/IBM/mcp-context-forge/issues/510) - Create users - User management & RBAC - - ✅ [**#509**](https://github.com/IBM/mcp-context-forge/issues/509) - Enterprise LDAP Integration +??? note "✨ Features (1)" + - [**#548**](https://github.com/IBM/mcp-context-forge/issues/548) - [Feature]: GraphQL API Support for Tool Discovery --- @@ -645,6 +751,8 @@ - ⚡ **Performance** - Performance optimizations - 🔧 **Chore** - Maintenance, tooling, or infrastructure work - 📚 **Documentation** - Documentation improvements or additions +- 🔌 **Plugin Features** - Plugin framework and plugin implementations +- 📦 **Sample Servers** - Sample MCP server implementations - ❓ **Question** - User questions (typically closed after resolution) - ✅ **Completed** - Issue has been resolved and closed diff --git a/docs/docs/architecture/security-features.md b/docs/docs/architecture/security-features.md index 3b684f429..54f921c58 100644 --- a/docs/docs/architecture/security-features.md +++ b/docs/docs/architecture/security-features.md @@ -1,8 +1,6 @@ # MCP Gateway Security Features -**⚠️ Important**: MCP Gateway is an **OPEN SOURCE PROJECT** provided "as-is" with **NO OFFICIAL SUPPORT** from IBM or its affiliates. Community contributions and best-effort maintenance are provided by project maintainers and contributors. - -**Current Version: 0.7.0 (Beta)** - MCP Gateway is currently in early beta. Security features are continuously evolving toward the 1.0 release. +**Current Version: 0.8.0 (Beta)** - MCP Gateway is currently in beta. Security features are continuously evolving toward the 1.0 release. ## Comprehensive Security Capabilities @@ -248,10 +246,16 @@ MCP Gateway implements a comprehensive, multi-layered security approach with "de ## Security Compliance & Standards -### 🏆 Currently Implemented (v0.7.0) +### 🏆 Currently Implemented (v0.8.0) -* **Authentication**: JWT tokens with configurable secrets, Basic Auth support (✅ [#663](https://github.com/IBM/mcp-context-forge/issues/663), ✅ [#705](https://github.com/IBM/mcp-context-forge/issues/705)) -* **Input Validation**: Comprehensive validation across all API endpoints using Pydantic (✅ [#339](https://github.com/IBM/mcp-context-forge/issues/339), ✅ [#340](https://github.com/IBM/mcp-context-forge/issues/340)) +* **Multi-Tenancy & RBAC** (v0.7.0): Complete enterprise multi-tenancy with team-based resource scoping, role-based access control (Platform Admin, Team Owner, Team Member), and resource visibility controls (Private/Team/Public) +* **Advanced Authentication**: + - Email-based authentication with Argon2id password hashing + - JWT tokens with team context and asymmetric algorithm support (HS256/384/512, RS256/384/512, ES256/384/512) + - OAuth 2.0 with Password Grant Flow, Dynamic Client Registration (DCR), and PKCE support (v0.8.0) + - Multi-provider SSO (GitHub, Google, IBM Security Verify, Okta) + - Per-virtual-server API keys and team-level token scoping (v0.8.0) +* **Input Validation**: Comprehensive validation across all API endpoints using Pydantic v2 (✅ [#339](https://github.com/IBM/mcp-context-forge/issues/339), ✅ [#340](https://github.com/IBM/mcp-context-forge/issues/340)) * **XSS Prevention**: Character restrictions, URL scheme validation, JSON depth limits (✅ [#409](https://github.com/IBM/mcp-context-forge/issues/409)) * **Security Scanning**: 30+ security tools integrated, 100% Bandit pass rate (✅ [#421](https://github.com/IBM/mcp-context-forge/issues/421), ✅ [#638](https://github.com/IBM/mcp-context-forge/issues/638), ✅ [#590](https://github.com/IBM/mcp-context-forge/issues/590)) * **Container Hardening**: @@ -268,40 +272,54 @@ MCP Gateway implements a comprehensive, multi-layered security approach with "de * **Secret Detection**: Gitleaks, Dodgy integration preventing credential leaks (✅ [#558](https://github.com/IBM/mcp-context-forge/issues/558)) * **Security Headers**: HTTP header passthrough with authorization support (✅ [#685](https://github.com/IBM/mcp-context-forge/issues/685)) * **Authentication Masking**: Auth values masked in API responses (✅ [#601](https://github.com/IBM/mcp-context-forge/issues/601), ✅ [#471](https://github.com/IBM/mcp-context-forge/issues/471), ✅ [#472](https://github.com/IBM/mcp-context-forge/issues/472)) -* **Plugin Framework**: Comprehensive plugin system with pre/post hooks and CLI tools (✅ [#319](https://github.com/IBM/mcp-context-forge/issues/319), ✅ [#682](https://github.com/IBM/mcp-context-forge/issues/682), ✅ [#720](https://github.com/IBM/mcp-context-forge/issues/720)) +* **Plugin Framework** (v0.8.0): + - Comprehensive plugin system with pre/post hooks and CLI tools (✅ [#319](https://github.com/IBM/mcp-context-forge/issues/319), ✅ [#682](https://github.com/IBM/mcp-context-forge/issues/682), ✅ [#720](https://github.com/IBM/mcp-context-forge/issues/720)) + - Plugin Management API & UI (✅ [#1129](https://github.com/IBM/mcp-context-forge/issues/1129), ✅ [#1130](https://github.com/IBM/mcp-context-forge/issues/1130)) + - 15+ security plugins: Content Moderation, Safe HTML Sanitizer, Harmful Content Detector, SQL Sanitizer, PII Filter, Circuit Breaker, and more +* **Policy-as-Code** (v0.8.0): Enhanced OPA policy engine with customizable policy paths, multi-arch support, and input data mapping * **OpenTelemetry Observability**: Vendor-agnostic observability with Phoenix integration (✅ [#735](https://github.com/IBM/mcp-context-forge/issues/735), ✅ [#727](https://github.com/IBM/mcp-context-forge/issues/727)) -* **OAuth Integration**: OAuth 2.0 authentication support for enhanced access control (✅ [#605](https://github.com/IBM/mcp-context-forge/issues/605)) * **Well-Known URI Security**: Configurable handlers for security.txt and robots.txt (✅ [#540](https://github.com/IBM/mcp-context-forge/issues/540)) * **Enhanced Testing**: Mutation testing, fuzz testing, and comprehensive security validation (✅ [#280](https://github.com/IBM/mcp-context-forge/issues/280), ✅ [#256](https://github.com/IBM/mcp-context-forge/issues/256)) -### 🚀 Upcoming Security Enhancements - -**Release 0.7.0 - Completed August 2025** +### 🚀 Security Release History & Roadmap + +**Release 0.7.0 - Completed September 2025** +- ✅ Enterprise multi-tenancy architecture +- ✅ Full RBAC implementation (Platform Admin, Team Owner, Team Member) +- ✅ Email-based authentication with Argon2id password hashing +- ✅ Team management system with resource scoping +- ✅ Multi-provider SSO (GitHub, Google, IBM Security Verify, Okta) +- ✅ Resource visibility controls (Private/Team/Public) +- ✅ Password policy engine +- ✅ JWT asymmetric algorithm support (RSA, ECDSA) - ✅ Plugin framework with security hooks - ✅ OpenTelemetry observability integration -- ✅ OAuth 2.0 authentication support - ✅ Well-known URI security handlers - ✅ Enhanced testing (mutation, fuzz testing) -**Release 0.7.0 - September 2025** -- Full RBAC implementation -- Multi-tenancy support -- Correlation ID tracking - -**Release 0.8.0 - September 2025** -- Policy-as-Code engine -- Advanced guardrails -- DDoS protection - -**Release 0.9.0 - September 2025** -- Marketplace security -- Protocol negotiation -- Advanced connectivity - -**Release 1.0.0 - October 2025** +**Release 0.8.0 - Completed October 2025** +- ✅ Advanced OAuth 2.0 (Password Grant Flow, DCR, PKCE) +- ✅ Plugin Management API & UI +- ✅ 15+ Security Plugins (Content Moderation, SQL Sanitizer, Safe HTML Sanitizer, Circuit Breaker, etc.) +- ✅ Enhanced OPA Policy Engine (customizable paths, multi-arch support) +- ✅ Team-level API token scoping +- ✅ MCP Server Registry & Catalog +- ✅ Secure cookie warnings for development environments +- ✅ Pydantic v2 configuration validation + +**Release 0.9.0 - Planned Q1 2026** +- Advanced rate limiting and DDoS protection +- Marketplace security validation +- Enhanced plugin guardrails +- Correlation ID tracking across distributed systems +- Advanced audit logging + +**Release 1.0.0 - Planned Q2 2026** - Security audit completion -- Production hardening -- GA security certification +- Production hardening certification +- GA security compliance certification +- Enhanced vulnerability scanning +- Security documentation for compliance frameworks ## Production Deployment Security diff --git a/docs/docs/deployment/compose.md b/docs/docs/deployment/compose.md index b2c7a7146..028c1d02c 100644 --- a/docs/docs/deployment/compose.md +++ b/docs/docs/deployment/compose.md @@ -18,7 +18,7 @@ export COMPOSE_CMD="docker compose" ## 🐳/🦭 Build the images ```bash -docker pull ghcr.io/ibm/mcp-context-forge:0.7.0 +docker pull ghcr.io/ibm/mcp-context-forge:0.8.0 ``` ## 🐳/🦭 Build the images (when doing local development) diff --git a/docs/docs/deployment/container.md b/docs/docs/deployment/container.md index fce5b1a7c..864254329 100644 --- a/docs/docs/deployment/container.md +++ b/docs/docs/deployment/container.md @@ -23,7 +23,7 @@ docker run -d --name mcpgateway \ -e PLATFORM_ADMIN_FULL_NAME="Platform Administrator" \ -e DATABASE_URL=sqlite:///./mcp.db \ --network=host \ - ghcr.io/ibm/mcp-context-forge:0.7.0 + ghcr.io/ibm/mcp-context-forge:0.8.0 docker logs mcpgateway ``` diff --git a/docs/docs/deployment/google-cloud-run.md b/docs/docs/deployment/google-cloud-run.md index 4d72f0595..23dc7d35b 100644 --- a/docs/docs/deployment/google-cloud-run.md +++ b/docs/docs/deployment/google-cloud-run.md @@ -16,7 +16,7 @@ Google Cloud Run is an ideal platform for MCP Gateway due to its: You can deploy the public image directly: ```text -ghcr.io/ibm/mcp-context-forge:0.7.0 +ghcr.io/ibm/mcp-context-forge:0.8.0 ``` --- @@ -336,7 +336,7 @@ mcpgw=> \dt; Use the MCP Gateway container to generate a JWT token: ```bash -docker run -it --rm ghcr.io/ibm/mcp-context-forge:0.7.0 \ +docker run -it --rm ghcr.io/ibm/mcp-context-forge:0.8.0 \ python3 -m mcpgateway.utils.create_jwt_token -u admin@example.com --secret jwt-secret-key ``` diff --git a/docs/docs/deployment/minikube.md b/docs/docs/deployment/minikube.md index d2e358d35..0af0e7a0d 100644 --- a/docs/docs/deployment/minikube.md +++ b/docs/docs/deployment/minikube.md @@ -2,7 +2,7 @@ 1. **Install Minikube and kubectl** (Docker or Podman driver required). 2. Start a local cluster with Ingress and DNS addons. -3. Load the `ghcr.io/ibm/mcp-context-forge:0.7.0` image into Minikube. +3. Load the `ghcr.io/ibm/mcp-context-forge:0.8.0` image into Minikube. 4. Apply your Kubernetes manifests. 5. Access the Gateway at [http://gateway.local](http://gateway.local) or `127.0.0.1:80` via NGINX Ingress. @@ -131,21 +131,21 @@ kubectl get pods -n ingress-nginx make minikube-image-load ``` -This target builds the `ghcr.io/ibm/mcp-context-forge:0.7.0` image and loads it into Minikube. +This target builds the `ghcr.io/ibm/mcp-context-forge:0.8.0` image and loads it into Minikube. ### Alternative methods * **Pre-cache a remote image:** ```bash - minikube cache add ghcr.io/ibm/mcp-context-forge:0.7.0 + minikube cache add ghcr.io/ibm/mcp-context-forge:0.8.0 minikube cache reload ``` * **Load a local tarball:** ```bash - docker save ghcr.io/ibm/mcp-context-forge:0.7.0 | minikube image load - + docker save ghcr.io/ibm/mcp-context-forge:0.8.0 | minikube image load - ``` --- @@ -282,7 +282,7 @@ curl http://gateway.local/health | ------------------- | ---------------------- | ------------------------------------------------------------ | | Pause cluster | `make minikube-stop` | `minikube stop -p mcpgw` | | Delete cluster | `make minikube-delete` | `minikube delete -p mcpgw` | -| Remove cached image | - | `minikube cache delete ghcr.io/ibm/mcp-context-forge:0.7.0` | +| Remove cached image | - | `minikube cache delete ghcr.io/ibm/mcp-context-forge:0.8.0` | --- diff --git a/docs/docs/deployment/proxy-auth.md b/docs/docs/deployment/proxy-auth.md index 22433fc3c..334336566 100644 --- a/docs/docs/deployment/proxy-auth.md +++ b/docs/docs/deployment/proxy-auth.md @@ -91,7 +91,7 @@ services: network_mode: host context-forge: - image: ghcr.io/ibm/mcp-context-forge:0.7.0 + image: ghcr.io/ibm/mcp-context-forge:0.8.0 ports: - 4444:4444 volumes: diff --git a/docs/docs/development/mcp-developer-guide-json-rpc.md b/docs/docs/development/mcp-developer-guide-json-rpc.md index d5b97aa98..b8e4ab95b 100644 --- a/docs/docs/development/mcp-developer-guide-json-rpc.md +++ b/docs/docs/development/mcp-developer-guide-json-rpc.md @@ -123,7 +123,7 @@ curl -X POST -H "Authorization: Bearer $MCPGATEWAY_BEARER_TOKEN" \ }, "serverInfo": { "name": "MCP_Gateway", - "version": "0.7.0" + "version": "0.8.0" }, "instructions": "MCP Gateway providing federated tools, resources and prompts. Use /admin interface for configuration." } diff --git a/docs/docs/faq/index.md b/docs/docs/faq/index.md index 5adb7501a..1f88ef757 100644 --- a/docs/docs/faq/index.md +++ b/docs/docs/faq/index.md @@ -16,7 +16,7 @@ OCI image (Docker/Podman) - shares host network so localhost works: ```bash - podman run --network=host -p 4444:4444 ghcr.io/ibm/mcp-context-forge:0.7.0 + podman run --network=host -p 4444:4444 ghcr.io/ibm/mcp-context-forge:0.8.0 ``` ???+ example "🗂️ What URLs are available for the admin interface and API docs?" @@ -108,7 +108,7 @@ Include a persistent volume with your container or Kubernetes deployment. Ex: ```bash - docker run -v $(pwd)/data:/app ghcr.io/ibm/mcp-context-forge:0.7.0 + docker run -v $(pwd)/data:/app ghcr.io/ibm/mcp-context-forge:0.8.0 ``` For production use, we recommend PostgreSQL. A Docker Compose target with PostgreSQL and Redis is provided. @@ -257,7 +257,7 @@ --- -## 👥 Multi‑Tenancy & Migration (v0.7.0) +## 👥 Multi‑Tenancy & Migration (v0.8.0) ???+ example "🔐 How do I enable email/password login and teams?" Add the following to your `.env`: @@ -269,7 +269,7 @@ AUTO_CREATE_PERSONAL_TEAMS=true ``` - Upgrading from v0.7.0? Follow [MIGRATION-0.7.0.md](https://github.com/IBM/mcp-context-forge/blob/main/MIGRATION-0.7.0.md). + Upgrading from v0.8.0? Follow [MIGRATION-0.8.0.md](https://github.com/IBM/mcp-context-forge/blob/main/MIGRATION-0.8.0.md). ???+ info "🔁 Does basic auth still work?" Yes. Email auth is recommended for multi‑tenancy; basic auth remains available. Use `AUTH_REQUIRED` to enforce authentication. diff --git a/docs/docs/index.md b/docs/docs/index.md index 136620371..629fbb57c 100644 --- a/docs/docs/index.md +++ b/docs/docs/index.md @@ -10,9 +10,7 @@ ContextForge MCP Gateway is a feature-rich gateway, proxy and MCP Registry that ## 🚀 Overview & Goals -**ContextForge MCP Gateway** is a gateway, registry, and proxy that sits in front of any [Model Context Protocol](https://modelcontextprotocol.io) (MCP) server or REST API-exposing a unified endpoint for all your AI clients. - -**⚠️ Caution**: The current release (0.7.0) is considered alpha / early beta. It is not production-ready and should only be used for local development, testing, or experimentation. Features, APIs, and behaviors are subject to change without notice. **Do not** deploy in production environments without thorough security review, validation and additional security mechanisms. Many of the features required for secure, large-scale, or multi-tenant production deployments are still on the [project roadmap](https://ibm.github.io/mcp-context-forge/architecture/roadmap/) - which is itself evolving. +**ContextForge MCP Gateway** is a gateway, registry, and proxy that sits in front of any [Model Context Protocol](https://modelcontextprotocol.io) (MCP) server, A2A servers or REST API-exposing a unified endpoint for all your AI clients. See the the [project roadmap](https://ibm.github.io/mcp-context-forge/architecture/roadmap/) - which is itself evolving. It currently supports: @@ -29,7 +27,7 @@ It currently supports: For a list of upcoming features, check out the [ContextForge MCP Gateway Roadmap](https://ibm.github.io/mcp-context-forge/architecture/roadmap/) -> Note on Multi‑Tenancy (v0.7.0): A comprehensive multi‑tenant architecture with email authentication, teams, RBAC, and resource visibility is landing in v0.7.0. See the [Migration Guide](https://github.com/IBM/mcp-context-forge/blob/main/MIGRATION-0.7.0.md) and [Changelog](https://github.com/IBM/mcp-context-forge/blob/main/CHANGELOG.md) for details. +> Note on Multi‑Tenancy (v0.8.0): A comprehensive multi‑tenant architecture with email authentication, teams, RBAC, and resource visibility is landing in v0.8.0. See the [Migration Guide](https://github.com/IBM/mcp-context-forge/blob/main/MIGRATION-0.8.0.md) and [Changelog](https://github.com/IBM/mcp-context-forge/blob/main/CHANGELOG.md) for details. **⚠️ Important**: MCP Gateway is not a standalone product - it is an open source component with **NO OFFICIAL SUPPORT** from IBM or its affiliates that can be integrated into your own solution architecture. If you choose to use it, you are responsible for evaluating its fit, securing the deployment, and managing its lifecycle. See [SECURITY.md](https://github.com/IBM/mcp-context-forge/blob/main/SECURITY.md) for more details. @@ -370,13 +368,13 @@ docker run -d --name mcpgateway \ -e PLATFORM_ADMIN_PASSWORD=changeme \ -e PLATFORM_ADMIN_FULL_NAME="Platform Administrator" \ -e DATABASE_URL=sqlite:///./mcp.db \ - ghcr.io/ibm/mcp-context-forge:0.7.0 + ghcr.io/ibm/mcp-context-forge:0.8.0 # Tail logs (Ctrl+C to quit) docker logs -f mcpgateway # Generating an API key -docker run --rm -it ghcr.io/ibm/mcp-context-forge:0.7.0 \ +docker run --rm -it ghcr.io/ibm/mcp-context-forge:0.8.0 \ python3 -m mcpgateway.utils.create_jwt_token --username admin@example.com --exp 0 --secret my-test-key ``` @@ -407,7 +405,7 @@ docker run -d --name mcpgateway \ -e PLATFORM_ADMIN_EMAIL=admin@example.com \ -e PLATFORM_ADMIN_PASSWORD=changeme \ -e PLATFORM_ADMIN_FULL_NAME="Platform Administrator" \ - ghcr.io/ibm/mcp-context-forge:0.7.0 + ghcr.io/ibm/mcp-context-forge:0.8.0 ``` SQLite now lives on the host at `./data/mcp.db`. @@ -434,7 +432,7 @@ docker run -d --name mcpgateway \ -e PLATFORM_ADMIN_PASSWORD=changeme \ -e PLATFORM_ADMIN_FULL_NAME="Platform Administrator" \ -v $(pwd)/data:/data \ - ghcr.io/ibm/mcp-context-forge:0.7.0 + ghcr.io/ibm/mcp-context-forge:0.8.0 ``` Using `--network=host` allows Docker to access the local network, allowing you to add MCP servers running on your host. See [Docker Host network driver documentation](https://docs.docker.com/engine/network/drivers/host/) for more details. @@ -450,7 +448,7 @@ podman run -d --name mcpgateway \ -p 4444:4444 \ -e HOST=0.0.0.0 \ -e DATABASE_URL=sqlite:///./mcp.db \ - ghcr.io/ibm/mcp-context-forge:0.7.0 + ghcr.io/ibm/mcp-context-forge:0.8.0 ``` #### 2 - Persist SQLite @@ -469,7 +467,7 @@ podman run -d --name mcpgateway \ -p 4444:4444 \ -v $(pwd)/data:/data \ -e DATABASE_URL=sqlite:////data/mcp.db \ - ghcr.io/ibm/mcp-context-forge:0.7.0 + ghcr.io/ibm/mcp-context-forge:0.8.0 ``` #### 3 - Host networking (rootless) @@ -487,7 +485,7 @@ podman run -d --name mcpgateway \ --network=host \ -v $(pwd)/data:/data \ -e DATABASE_URL=sqlite:////data/mcp.db \ - ghcr.io/ibm/mcp-context-forge:0.7.0 + ghcr.io/ibm/mcp-context-forge:0.8.0 ``` --- @@ -496,7 +494,7 @@ podman run -d --name mcpgateway \ ✏️ Docker/Podman tips * **.env files** - Put all the `-e FOO=` lines into a file and replace them with `--env-file .env`. See the provided [.env.example](https://github.com/IBM/mcp-context-forge/blob/main/.env.example) for reference. -* **Pinned tags** - Use an explicit version (e.g. `v0.7.0`) instead of `latest` for reproducible builds. +* **Pinned tags** - Use an explicit version (e.g. `v0.8.0`) instead of `latest` for reproducible builds. * **JWT tokens** - Generate one in the running container: ```bash @@ -542,7 +540,7 @@ docker run --rm -i \ -e MCP_SERVER_URL=http://host.docker.internal:4444/servers/UUID_OF_SERVER_1/mcp \ -e MCP_TOOL_CALL_TIMEOUT=120 \ -e MCP_WRAPPER_LOG_LEVEL=DEBUG \ - ghcr.io/ibm/mcp-context-forge:0.7.0 \ + ghcr.io/ibm/mcp-context-forge:0.8.0 \ python3 -m mcpgateway.wrapper ``` @@ -590,7 +588,7 @@ python3 -m mcpgateway.wrapper Expected responses from mcpgateway.wrapper ```json -{"jsonrpc":"2.0","id":1,"result":{"protocolVersion":"2025-03-26","capabilities":{"experimental":{},"prompts":{"listChanged":false},"resources":{"subscribe":false,"listChanged":false},"tools":{"listChanged":false}},"serverInfo":{"name":"mcpgateway-wrapper","version":"0.7.0"}}} +{"jsonrpc":"2.0","id":1,"result":{"protocolVersion":"2025-03-26","capabilities":{"experimental":{},"prompts":{"listChanged":false},"resources":{"subscribe":false,"listChanged":false},"tools":{"listChanged":false}},"serverInfo":{"name":"mcpgateway-wrapper","version":"0.8.0"}}} # When there's no tools {"jsonrpc":"2.0","id":2,"result":{"tools":[]}} @@ -624,7 +622,7 @@ docker run -i --rm \ -e MCP_SERVER_URL=http://localhost:4444/servers/UUID_OF_SERVER_1/mcp \ -e MCP_AUTH=${MCP_AUTH} \ -e MCP_TOOL_CALL_TIMEOUT=120 \ - ghcr.io/ibm/mcp-context-forge:0.7.0 \ + ghcr.io/ibm/mcp-context-forge:0.8.0 \ python3 -m mcpgateway.wrapper ``` @@ -923,12 +921,12 @@ A `make compose-up` target is provided along with a [docker-compose.yml](https:/ --- -## 🔄 Upgrading to v0.7.0 +## 🔄 Upgrading to v0.8.0 -> **⚠️ CRITICAL**: Version 0.7.0 introduces comprehensive multi-tenancy and requires database migration. +> **⚠️ CRITICAL**: Version 0.8.0 introduces comprehensive multi-tenancy and requires database migration. ### Backup Your Data First -Before upgrading to v0.7.0, **always** backup your database, environment configuration, and export your settings: +Before upgrading to v0.8.0, **always** backup your database, environment configuration, and export your settings: ```bash # Backup database (SQLite example) @@ -956,7 +954,7 @@ If the database migration fails or you encounter issues: ### Complete Migration Guide For detailed upgrade instructions, troubleshooting, and rollback procedures, see: -- **📖 [MIGRATION-0.7.0.md](https://github.com/IBM/mcp-context-forge/blob/main/MIGRATION-0.7.0.md)** - Complete step-by-step upgrade guide +- **📖 [MIGRATION-0.8.0.md](https://github.com/IBM/mcp-context-forge/blob/main/MIGRATION-0.8.0.md)** - Complete step-by-step upgrade guide - **🏗️ [Multi-tenancy Architecture](https://ibm.github.io/mcp-context-forge/architecture/multitenancy/)** - Understanding the new system --- @@ -1241,7 +1239,7 @@ MCP Gateway includes **vendor-agnostic OpenTelemetry support** for distributed t | ------------------------------- | ---------------------------------------------- | --------------------- | ------------------------------------------ | | `OTEL_ENABLE_OBSERVABILITY` | Master switch for observability | `true` | `true`, `false` | | `OTEL_SERVICE_NAME` | Service identifier in traces | `mcp-gateway` | string | -| `OTEL_SERVICE_VERSION` | Service version in traces | `0.7.0` | string | +| `OTEL_SERVICE_VERSION` | Service version in traces | `0.8.0` | string | | `OTEL_DEPLOYMENT_ENVIRONMENT` | Environment tag (dev/staging/prod) | `development` | string | | `OTEL_TRACES_EXPORTER` | Trace exporter backend | `otlp` | `otlp`, `jaeger`, `zipkin`, `console`, `none` | | `OTEL_RESOURCE_ATTRIBUTES` | Custom resource attributes | (empty) | `key=value,key2=value2` | @@ -2473,7 +2471,7 @@ If the error persists, update SQLite and ensure Python links against it: - `brew install sqlite3 && brew link --force sqlite3` - `brew install python3 && /opt/homebrew/bin/python3 -c 'import sqlite3; print(sqlite3.sqlite_version)'` -See the full migration guide's "SQLite Troubleshooting Guide" for deeper steps (WAL cleanup, integrity check, recovery): [MIGRATION-0.7.0.md](https://github.com/IBM/mcp-context-forge/blob/main/MIGRATION-0.7.0.md). +See the full migration guide's "SQLite Troubleshooting Guide" for deeper steps (WAL cleanup, integrity check, recovery): [MIGRATION-0.8.0.md](https://github.com/IBM/mcp-context-forge/blob/main/MIGRATION-0.8.0.md). diff --git a/docs/docs/manage/catalog.md b/docs/docs/manage/catalog.md index 4e9459d58..e4db7de95 100644 --- a/docs/docs/manage/catalog.md +++ b/docs/docs/manage/catalog.md @@ -489,7 +489,7 @@ auth_types: --- -## Recent Improvements (v0.7.0) +## Recent Improvements (v0.8.0) ### Enhanced UI Features diff --git a/docs/docs/manage/index.md b/docs/docs/manage/index.md index 1a02c889d..ece9abdd8 100644 --- a/docs/docs/manage/index.md +++ b/docs/docs/manage/index.md @@ -6,8 +6,8 @@ Whether you're self-hosting, running in the cloud, or deploying to Kubernetes, t --- -!!! tip "What's new in 0.7.0 (preview)" - The upcoming v0.7.0 introduces multi‑tenancy: email authentication, teams, RBAC, and resource visibility (private/team/public). +!!! tip "What's new in 0.8.0" + Version v0.8.0 includes multi‑tenancy: email authentication, teams, RBAC, and resource visibility (private/team/public). - See the [Migration Guide](https://github.com/IBM/mcp-context-forge/blob/main/MIGRATION-0.7.0.md) and [Changelog](https://github.com/IBM/mcp-context-forge/blob/main/CHANGELOG.md) - Quick enablement (excerpt): `EMAIL_AUTH_ENABLED=true`, `PLATFORM_ADMIN_EMAIL=...`, `AUTO_CREATE_PERSONAL_TEAMS=true` diff --git a/docs/docs/manage/logging-examples.md b/docs/docs/manage/logging-examples.md index fb61aae97..7e9c5bd44 100644 --- a/docs/docs/manage/logging-examples.md +++ b/docs/docs/manage/logging-examples.md @@ -116,7 +116,7 @@ LOG_FOLDER=logs # docker-compose.yml services: mcpgateway: - image: ghcr.io/ibm/mcp-context-forge:0.7.0 + image: ghcr.io/ibm/mcp-context-forge:0.8.0 environment: - LOG_LEVEL=INFO # Default: logs to stdout/stderr only (recommended for containers) diff --git a/docs/docs/manage/observability/observability.md b/docs/docs/manage/observability/observability.md index 781498a49..875be32d2 100644 --- a/docs/docs/manage/observability/observability.md +++ b/docs/docs/manage/observability/observability.md @@ -46,7 +46,7 @@ export OTEL_ENABLE_OBSERVABILITY=true # Service identification export OTEL_SERVICE_NAME=mcp-gateway -export OTEL_SERVICE_VERSION=0.7.0 +export OTEL_SERVICE_VERSION=0.8.0 export OTEL_DEPLOYMENT_ENVIRONMENT=development # Choose your backend (otlp, jaeger, zipkin, console, none) @@ -142,7 +142,7 @@ mcpgateway # Or with Docker docker run -e OTEL_EXPORTER_OTLP_ENDPOINT=http://host.docker.internal:4317 \ - ghcr.io/ibm/mcp-context-forge:0.7.0 + ghcr.io/ibm/mcp-context-forge:0.8.0 ``` ## Configuration Reference @@ -153,7 +153,7 @@ docker run -e OTEL_EXPORTER_OTLP_ENDPOINT=http://host.docker.internal:4317 \ |----------|-------------|---------|---------| | `OTEL_ENABLE_OBSERVABILITY` | Master switch | `true` | `true`, `false` | | `OTEL_SERVICE_NAME` | Service identifier | `mcp-gateway` | Any string | -| `OTEL_SERVICE_VERSION` | Service version | `0.7.0` | Any string | +| `OTEL_SERVICE_VERSION` | Service version | `0.8.0` | Any string | | `OTEL_DEPLOYMENT_ENVIRONMENT` | Environment tag | `development` | `development`, `staging`, `production` | | `OTEL_TRACES_EXPORTER` | Export backend | `otlp` | `otlp`, `jaeger`, `zipkin`, `console`, `none` | | `OTEL_RESOURCE_ATTRIBUTES` | Custom attributes | - | `key=value,key2=value2` | @@ -247,7 +247,7 @@ spec: spec: containers: - name: gateway - image: ghcr.io/ibm/mcp-context-forge:0.7.0 + image: ghcr.io/ibm/mcp-context-forge:0.8.0 env: - name: OTEL_ENABLE_OBSERVABILITY value: "true" diff --git a/docs/docs/manage/securing.md b/docs/docs/manage/securing.md index 0a0bffc83..6209da5ea 100644 --- a/docs/docs/manage/securing.md +++ b/docs/docs/manage/securing.md @@ -4,11 +4,9 @@ This guide provides essential security configurations and best practices for dep ## ⚠️ Critical Security Notice -**MCP Gateway is currently in early beta (v0.7.0)** and requires careful security configuration for production use: +**MCP Gateway is currently in beta (v0.8.0)** and requires careful security configuration for production use: - The **Admin UI is development-only** and must be disabled in production -- MCP Gateway is **not a standalone product** - it's an open source component to integrate into your solution -- **No official support** is provided - security is your responsibility - Expect **breaking changes** between versions until 1.0 release - Do not use it with insecure MCP servers. diff --git a/docs/docs/manage/ui-customization.md b/docs/docs/manage/ui-customization.md index eeb19123e..c7be7cc7f 100644 --- a/docs/docs/manage/ui-customization.md +++ b/docs/docs/manage/ui-customization.md @@ -155,7 +155,7 @@ When packaging the gateway: docker run \ -v $(pwd)/overrides/admin.html:/app/mcpgateway/templates/admin.html:ro \ -v $(pwd)/overrides/static:/app/mcpgateway/static/custom:ro \ - ghcr.io/ibm/mcp-context-forge:0.7.0 + ghcr.io/ibm/mcp-context-forge:0.8.0 ``` Then update template references to point at `static/custom/...`. - **Fork + rebase** – maintain a thin fork that carries your branding patches. diff --git a/docs/docs/media/kit/index.md b/docs/docs/media/kit/index.md index f6b229ce6..0712f4c1e 100644 --- a/docs/docs/media/kit/index.md +++ b/docs/docs/media/kit/index.md @@ -66,7 +66,7 @@ And is readily available as open source, published a container image and as a Py -e PLATFORM_ADMIN_EMAIL=admin@example.com \ -e PLATFORM_ADMIN_PASSWORD=changeme \ -e PLATFORM_ADMIN_FULL_NAME="Platform Administrator" \ - ghcr.io/ibm/mcp-context-forge:0.7.0 + ghcr.io/ibm/mcp-context-forge:0.8.0 ``` Please ⭐ the project on GitHub if you find this useful, it helps us grow! @@ -86,7 +86,7 @@ And is readily available as open source, published a container image and as a Py -e PLATFORM_ADMIN_EMAIL=admin@example.com \ -e PLATFORM_ADMIN_PASSWORD=changeme \ -e PLATFORM_ADMIN_FULL_NAME="Platform Administrator" \ - ghcr.io/ibm/mcp-context-forge:0.7.0 + ghcr.io/ibm/mcp-context-forge:0.8.0 ``` **PyPI:** @@ -127,7 +127,7 @@ And is readily available as open source, published a container image and as a Py -e PLATFORM_ADMIN_EMAIL=admin@example.com \ -e PLATFORM_ADMIN_PASSWORD=changeme \ -e PLATFORM_ADMIN_FULL_NAME="Platform Administrator" \ - ghcr.io/ibm/mcp-context-forge:0.7.0 + ghcr.io/ibm/mcp-context-forge:0.8.0 ``` **Or install via PyPI:** diff --git a/docs/docs/overview/quick_start.md b/docs/docs/overview/quick_start.md index 6ee37dd7f..1a54007d5 100644 --- a/docs/docs/overview/quick_start.md +++ b/docs/docs/overview/quick_start.md @@ -112,7 +112,7 @@ Pick an install method below, generate an auth token, then walk through a real t -e PLATFORM_ADMIN_EMAIL=admin@example.com \ -e PLATFORM_ADMIN_PASSWORD=changeme \ -e PLATFORM_ADMIN_FULL_NAME="Platform Administrator" \ - ghcr.io/ibm/mcp-context-forge:0.7.0 + ghcr.io/ibm/mcp-context-forge:0.8.0 ``` 2. **(Optional) persist the DB** @@ -130,7 +130,7 @@ Pick an install method below, generate an auth token, then walk through a real t -e PLATFORM_ADMIN_EMAIL=admin@example.com \ -e PLATFORM_ADMIN_PASSWORD=changeme \ -e PLATFORM_ADMIN_FULL_NAME="Platform Administrator" \ - ghcr.io/ibm/mcp-context-forge:0.7.0 + ghcr.io/ibm/mcp-context-forge:0.8.0 ``` === "MySQL" @@ -155,7 +155,7 @@ Pick an install method below, generate an auth token, then walk through a real t -e PLATFORM_ADMIN_EMAIL=admin@example.com \ -e PLATFORM_ADMIN_PASSWORD=changeme \ -e PLATFORM_ADMIN_FULL_NAME="Platform Administrator" \ - ghcr.io/ibm/mcp-context-forge:0.7.0 + ghcr.io/ibm/mcp-context-forge:0.8.0 ``` === "PostgreSQL" @@ -179,7 +179,7 @@ Pick an install method below, generate an auth token, then walk through a real t -e PLATFORM_ADMIN_EMAIL=admin@example.com \ -e PLATFORM_ADMIN_PASSWORD=changeme \ -e PLATFORM_ADMIN_FULL_NAME="Platform Administrator" \ - ghcr.io/ibm/mcp-context-forge:0.7.0 + ghcr.io/ibm/mcp-context-forge:0.8.0 ``` 3. **Generate a token inside the container** @@ -216,7 +216,7 @@ Pick an install method below, generate an auth token, then walk through a real t 2. **Pull the published image** ```bash - docker pull ghcr.io/ibm/mcp-context-forge:0.7.0 + docker pull ghcr.io/ibm/mcp-context-forge:0.8.0 ``` 3. **Start the stack** diff --git a/docs/docs/tutorials/argocd-helm-deployment-ibm-cloud-iks.md b/docs/docs/tutorials/argocd-helm-deployment-ibm-cloud-iks.md index d8018ac85..e6fe4aedf 100644 --- a/docs/docs/tutorials/argocd-helm-deployment-ibm-cloud-iks.md +++ b/docs/docs/tutorials/argocd-helm-deployment-ibm-cloud-iks.md @@ -106,7 +106,7 @@ podman build -t mcp-context-forge:dev -f Containerfile . !!! note "Production deployments" Production deployments can pull the signed image directly: ``` - ghcr.io/ibm/mcp-context-forge:0.7.0 + ghcr.io/ibm/mcp-context-forge:0.8.0 ``` --- @@ -169,8 +169,8 @@ ibmcloud is subnet-create mcp-subnet-eu-de-3 \ ibmcloud cr login # Tag and push the image -podman tag mcp-context-forge:dev eu.icr.io/mcp-gw/mcpgateway:0.7.0 -podman push eu.icr.io/mcp-gw/mcpgateway:0.7.0 +podman tag mcp-context-forge:dev eu.icr.io/mcp-gw/mcpgateway:0.8.0 +podman push eu.icr.io/mcp-gw/mcpgateway:0.8.0 # Verify the image ibmcloud cr images --restrict mcp-gw @@ -359,7 +359,7 @@ mcpContextForge: image: repository: eu.icr.io/mcp-gw/mcpgateway - tag: "0.7.0" + tag: "0.8.0" pullPolicy: IfNotPresent # Service configuration @@ -727,11 +727,11 @@ Update the image tag in your values file and commit: ```bash # Update values file -sed -i 's/tag: "0.3.0"/tag: "0.7.0"/' charts/mcp-stack/envs/iks/values.yaml +sed -i 's/tag: "0.7.0"/tag: "0.8.0"/' charts/mcp-stack/envs/iks/values.yaml # Commit and push git add charts/mcp-stack/envs/iks/values.yaml -git commit -m "Upgrade MCP Gateway to v0.7.0" +git commit -m "Upgrade MCP Gateway to v0.8.0" git push # Argo CD will automatically sync the changes diff --git a/docs/docs/tutorials/dcr-hyprmcp.md b/docs/docs/tutorials/dcr-hyprmcp.md index 5b64c1b6e..f6cfdebce 100644 --- a/docs/docs/tutorials/dcr-hyprmcp.md +++ b/docs/docs/tutorials/dcr-hyprmcp.md @@ -181,7 +181,7 @@ Add the ContextForge service to your compose file (put it in the `services` sect ```yaml context-forge: - image: ghcr.io/ibm/mcp-context-forge:0.7.0 + image: ghcr.io/ibm/mcp-context-forge:0.8.0 ports: - 4444:4444 volumes: @@ -331,7 +331,7 @@ services: network_mode: host context-forge: - image: ghcr.io/ibm/mcp-context-forge:0.7.0 + image: ghcr.io/ibm/mcp-context-forge:0.8.0 ports: - 4444:4444 volumes: diff --git a/docs/docs/tutorials/openwebui-tutorial.md b/docs/docs/tutorials/openwebui-tutorial.md index c5920acaa..c231e6de5 100644 --- a/docs/docs/tutorials/openwebui-tutorial.md +++ b/docs/docs/tutorials/openwebui-tutorial.md @@ -223,7 +223,7 @@ docker run -d \ -e BASIC_AUTH_USER=admin \ -e BASIC_AUTH_PASSWORD=changeme \ -e AUTH_REQUIRED=true \ - ghcr.io/ibm/mcp-context-forge:0.7.0 + ghcr.io/ibm/mcp-context-forge:0.8.0 # Generate an API token for later use docker exec mcpgateway \ @@ -583,7 +583,7 @@ services: - "host.docker.internal:host-gateway" mcpgateway: - image: ghcr.io/ibm/mcp-context-forge:0.7.0 + image: ghcr.io/ibm/mcp-context-forge:0.8.0 environment: MCPGATEWAY_UI_ENABLED: "true" MCPGATEWAY_ADMIN_API_ENABLED: "true" diff --git a/docs/docs/using/clients/claude-desktop.md b/docs/docs/using/clients/claude-desktop.md index 147301da7..eee076717 100644 --- a/docs/docs/using/clients/claude-desktop.md +++ b/docs/docs/using/clients/claude-desktop.md @@ -48,7 +48,7 @@ prompt and resource registered in your Gateway. "run", "--rm", "--network=host", "-i", "-e", "MCP_SERVER_URL=http://localhost:4444/servers/UUID_OF_SERVER_1", "-e", "MCP_AUTH=", - "ghcr.io/ibm/mcp-context-forge:0.7.0", + "ghcr.io/ibm/mcp-context-forge:0.8.0", "python3", "-m", "mcpgateway.wrapper" ] } diff --git a/docs/docs/using/clients/copilot.md b/docs/docs/using/clients/copilot.md index 7894ee1ae..19325f324 100644 --- a/docs/docs/using/clients/copilot.md +++ b/docs/docs/using/clients/copilot.md @@ -113,7 +113,7 @@ That's it - VS Code spawns the stdio process, pipes JSON-RPC, and you're ready t "run", "--rm", "--network=host", "-i", "-e", "MCP_SERVER_URL=http://localhost:4444/servers/UUID_OF_SERVER_1", "-e", "MCP_AUTH=", - "ghcr.io/ibm/mcp-context-forge:0.7.0", + "ghcr.io/ibm/mcp-context-forge:0.8.0", "python3", "-m", "mcpgateway.wrapper" ] } diff --git a/docs/docs/using/clients/mcp-cli.md b/docs/docs/using/clients/mcp-cli.md index a27561c02..887d83676 100644 --- a/docs/docs/using/clients/mcp-cli.md +++ b/docs/docs/using/clients/mcp-cli.md @@ -106,7 +106,7 @@ Create a `server_config.json` file to define your MCP Context Forge Gateway conn "MCP_AUTH=${MCPGATEWAY_BEARER_TOKEN}", "--entrypoint", "uv", - "ghcr.io/ibm/mcp-context-forge:0.7.0", + "ghcr.io/ibm/mcp-context-forge:0.8.0", "run", "--directory", "mcpgateway-wrapper", @@ -489,7 +489,7 @@ docker run -d --name mcpgateway \ -e PLATFORM_ADMIN_EMAIL=admin@example.com \ -e PLATFORM_ADMIN_PASSWORD=changeme \ -e PLATFORM_ADMIN_FULL_NAME="Platform Administrator" \ - ghcr.io/ibm/mcp-context-forge:0.7.0 + ghcr.io/ibm/mcp-context-forge:0.8.0 # Generate token export MCPGATEWAY_BEARER_TOKEN=$(docker exec mcpgateway python3 -m mcpgateway.utils.create_jwt_token --username admin@example.com --exp 10080 --secret my-secret-key) diff --git a/docs/docs/using/mcpgateway-wrapper.md b/docs/docs/using/mcpgateway-wrapper.md index 29647f1c0..db5a94954 100644 --- a/docs/docs/using/mcpgateway-wrapper.md +++ b/docs/docs/using/mcpgateway-wrapper.md @@ -53,7 +53,7 @@ Launching it in your terminal (ex: `python3 -m mcpgateway.wrapper`) is useful fo docker run -i --rm --network=host \ -e MCP_SERVER_URL=$MCP_SERVER_URL \ -e MCP_AUTH=$MCP_AUTH \ - ghcr.io/ibm/mcp-context-forge:0.7.0 \ + ghcr.io/ibm/mcp-context-forge:0.8.0 \ python3 -m mcpgateway.wrapper ``` @@ -263,7 +263,7 @@ Open two shells or use a tool like `jq -c | nc -U` to pipe messages in and view "resources":{"subscribe":false,"listChanged":false}, "tools":{"listChanged":false} }, - "serverInfo":{"name":"mcpgateway-wrapper","version":"0.7.0"} + "serverInfo":{"name":"mcpgateway-wrapper","version":"0.8.0"} }} # Empty tool list diff --git a/docs/docs/using/servers/go/fast-time-server.md b/docs/docs/using/servers/go/fast-time-server.md index 98b04f78a..c659321a2 100644 --- a/docs/docs/using/servers/go/fast-time-server.md +++ b/docs/docs/using/servers/go/fast-time-server.md @@ -33,16 +33,16 @@ The **fast-time-server** is an ultra-fast Go-based MCP server that provides comp ```bash # Pull the official Docker image -docker pull ghcr.io/ibm/fast-time-server:0.7.0 +docker pull ghcr.io/ibm/fast-time-server:0.8.0 # Run with stdio transport (for MCP clients) -docker run --rm -i ghcr.io/ibm/fast-time-server:0.7.0 -transport=stdio +docker run --rm -i ghcr.io/ibm/fast-time-server:0.8.0 -transport=stdio # Run with HTTP transport -docker run --rm -p 8080:8080 ghcr.io/ibm/fast-time-server:0.7.0 -transport=http +docker run --rm -p 8080:8080 ghcr.io/ibm/fast-time-server:0.8.0 -transport=http # Run with dual mode (MCP + REST API) -docker run --rm -p 8080:8080 ghcr.io/ibm/fast-time-server:0.7.0 -transport=dual +docker run --rm -p 8080:8080 ghcr.io/ibm/fast-time-server:0.8.0 -transport=dual ``` ### Using MCP Gateway's Translate Module @@ -52,7 +52,7 @@ The MCP Gateway's `translate` module can expose the stdio server via HTTP/SSE: ```bash # Expose fast-time-server via SSE on port 8003 python3 -m mcpgateway.translate \ - --stdio "docker run --rm -i ghcr.io/ibm/fast-time-server:0.7.0 -transport=stdio" \ + --stdio "docker run --rm -i ghcr.io/ibm/fast-time-server:0.8.0 -transport=stdio" \ --expose-sse \ --port 8003 @@ -1161,7 +1161,7 @@ The fast-time-server integrates seamlessly with MCP Gateway in multiple ways: docker run --rm -d \ --name fast-time-server \ -p 8080:8080 \ - ghcr.io/ibm/fast-time-server:0.7.0 \ + ghcr.io/ibm/fast-time-server:0.8.0 \ -transport=dual # Register with MCP Gateway @@ -1179,7 +1179,7 @@ curl -X POST http://localhost:4444/gateways \ ```bash # Start the translate wrapper python3 -m mcpgateway.translate \ - --stdio "docker run --rm -i ghcr.io/ibm/fast-time-server:0.7.0 -transport=stdio" \ + --stdio "docker run --rm -i ghcr.io/ibm/fast-time-server:0.8.0 -transport=stdio" \ --expose-sse \ --port 8003 @@ -1199,7 +1199,7 @@ curl -X POST http://localhost:4444/gateways \ version: '3.8' services: fast-time-server: - image: ghcr.io/ibm/fast-time-server:0.7.0 + image: ghcr.io/ibm/fast-time-server:0.8.0 command: ["-transport=dual", "-port=8080"] ports: - "8080:8080" @@ -1273,21 +1273,21 @@ make run-rest docker pull ghcr.io/ibm/fast-time-server:latest # Run in stdio mode (for MCP clients) -docker run --rm -i ghcr.io/ibm/fast-time-server:0.7.0 \ +docker run --rm -i ghcr.io/ibm/fast-time-server:0.8.0 \ -transport=stdio # Run in HTTP mode with custom port -docker run --rm -p 9090:8080 ghcr.io/ibm/fast-time-server:0.7.0 \ +docker run --rm -p 9090:8080 ghcr.io/ibm/fast-time-server:0.8.0 \ -transport=http -port=8080 # Run in SSE mode with authentication docker run --rm -p 8080:8080 \ -e AUTH_TOKEN=mysecret \ - ghcr.io/ibm/fast-time-server:0.7.0 \ + ghcr.io/ibm/fast-time-server:0.8.0 \ -transport=sse # Run in dual mode with debug logging -docker run --rm -p 8080:8080 ghcr.io/ibm/fast-time-server:0.7.0 \ +docker run --rm -p 8080:8080 ghcr.io/ibm/fast-time-server:0.8.0 \ -transport=dual -log-level=debug ``` @@ -1297,7 +1297,7 @@ docker run --rm -p 8080:8080 ghcr.io/ibm/fast-time-server:0.7.0 \ version: '3.8' services: fast-time: - image: ghcr.io/ibm/fast-time-server:0.7.0 + image: ghcr.io/ibm/fast-time-server:0.8.0 command: - "-transport=dual" - "-port=8080" @@ -1359,7 +1359,7 @@ The fast-time-server is engineered for exceptional performance: ```bash # Start the server docker run --rm -d -p 8080:8080 --name perf-test \ - ghcr.io/ibm/fast-time-server:0.7.0 -transport=rest + ghcr.io/ibm/fast-time-server:0.8.0 -transport=rest # Run performance test (install hey first: go install github.com/rakyll/hey@latest) hey -n 10000 -c 100 http://localhost:8080/api/v1/time @@ -1451,7 +1451,7 @@ chmod +x fast-time-server curl -H "Authorization: Bearer YOUR_TOKEN" http://localhost:8080/api/v1/time # Environment variable in Docker -docker run -e AUTH_TOKEN=mysecret ghcr.io/ibm/fast-time-server:0.7.0 +docker run -e AUTH_TOKEN=mysecret ghcr.io/ibm/fast-time-server:0.8.0 # Note: /health and /version endpoints bypass authentication curl http://localhost:8080/health # Works without auth @@ -1475,7 +1475,7 @@ curl http://localhost:8080/api/v1/timezones ```bash # Container exits immediately # Add -i flag for stdio mode: -docker run --rm -i ghcr.io/ibm/fast-time-server:0.7.0 -transport=stdio +docker run --rm -i ghcr.io/ibm/fast-time-server:0.8.0 -transport=stdio # Can't connect to server # Ensure port mapping is correct: @@ -1503,7 +1503,7 @@ docker images | grep fast-time-server #### Performance issues ```bash # Reduce logging overhead -docker run ... ghcr.io/ibm/fast-time-server:0.7.0 -log-level=error +docker run ... ghcr.io/ibm/fast-time-server:0.8.0 -log-level=error # Or completely disable: ... -log-level=none @@ -1538,7 +1538,7 @@ docker stats fast-time-server ```bash # 1. Get current time in New York (using Docker) docker run --rm -p 8080:8080 -d --name time-demo \ - ghcr.io/ibm/fast-time-server:0.7.0 -transport=rest + ghcr.io/ibm/fast-time-server:0.8.0 -transport=rest curl "http://localhost:8080/api/v1/time?timezone=America/New_York" @@ -1591,7 +1591,7 @@ done # Start the server if not running if ! docker ps | grep -q fast-time-server; then docker run --rm -d -p 8080:8080 --name fast-time-server \ - ghcr.io/ibm/fast-time-server:0.7.0 -transport=dual + ghcr.io/ibm/fast-time-server:0.8.0 -transport=dual sleep 2 fi @@ -1614,7 +1614,7 @@ curl -s -X POST http://localhost:8080/api/v1/prompts/schedule_meeting/execute \ # 1. Start fast-time-server with translate echo "Starting fast-time-server with translate module..." python3 -m mcpgateway.translate \ - --stdio "docker run --rm -i ghcr.io/ibm/fast-time-server:0.7.0 -transport=stdio" \ + --stdio "docker run --rm -i ghcr.io/ibm/fast-time-server:0.8.0 -transport=stdio" \ --expose-sse \ --port 8003 & TRANSLATE_PID=$! @@ -1676,7 +1676,7 @@ print(f"Converted time: {result['converted_time']}") ## Version History -- **v0.7.0** - Current Docker image version with full MCP protocol support +- **v0.8.0** - Current Docker image version with full MCP protocol support ## Security Considerations diff --git a/mcpgateway/__init__.py b/mcpgateway/__init__.py index 56f1b5e2c..d35465171 100644 --- a/mcpgateway/__init__.py +++ b/mcpgateway/__init__.py @@ -10,7 +10,7 @@ __author__ = "Mihai Criveti" __copyright__ = "Copyright 2025" __license__ = "Apache 2.0" -__version__ = "0.7.0" +__version__ = "0.8.0" __description__ = "IBM Consulting Assistants - Extensions API Library" __url__ = "https://ibm.github.io/mcp-context-forge/" __download_url__ = "https://github.com/IBM/mcp-context-forge" diff --git a/mcpgateway/observability.py b/mcpgateway/observability.py index 5dc6bc15d..733d430e4 100644 --- a/mcpgateway/observability.py +++ b/mcpgateway/observability.py @@ -171,7 +171,7 @@ def init_telemetry() -> Optional[Any]: # Create resource attributes resource_attributes: Dict[str, Any] = { "service.name": os.getenv("OTEL_SERVICE_NAME", "mcp-gateway"), - "service.version": "0.7.0", + "service.version": "0.8.0", "deployment.environment": os.getenv("DEPLOYMENT_ENV", "development"), } @@ -271,7 +271,7 @@ def init_telemetry() -> Optional[Any]: # Get tracer # Obtain a tracer if trace API available; otherwise create a no-op tracer if trace is not None and hasattr(trace, "get_tracer"): - _TRACER = cast(Any, trace).get_tracer("mcp-gateway", "0.7.0", schema_url="https://opentelemetry.io/schemas/1.11.0") + _TRACER = cast(Any, trace).get_tracer("mcp-gateway", "0.8.0", schema_url="https://opentelemetry.io/schemas/1.11.0") else: class _NoopTracer: diff --git a/pyproject.toml b/pyproject.toml index ad78beb54..57fb4e766 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -12,7 +12,7 @@ build-backend = "setuptools.build_meta" # ---------------------------------------------------------------- [project] name = "mcp-contextforge-gateway" -version = "0.7.0" +version = "0.8.0" description = "A production-grade MCP Gateway & Proxy built with FastAPI. Supports multi-server registration, virtual server composition, authentication, retry logic, observability, protocol translation, and a unified federated tool catalog." keywords = ["MCP","API","gateway","proxy","tools", "agents","agentic ai","model context protocol","multi-agent","fastapi", diff --git a/tests/manual/README.md b/tests/manual/README.md index 1f100edba..791324ff6 100644 --- a/tests/manual/README.md +++ b/tests/manual/README.md @@ -1,4 +1,4 @@ -# 🧪 MCP Gateway v0.7.0 - YAML-Based Manual Testing Suite +# 🧪 MCP Gateway v0.8.0 - YAML-Based Manual Testing Suite **Maintainable, scalable manual testing with YAML test definitions** diff --git a/tests/manual/generate_test_plan.py b/tests/manual/generate_test_plan.py index 0e705978c..deff3f9b0 100755 --- a/tests/manual/generate_test_plan.py +++ b/tests/manual/generate_test_plan.py @@ -5,7 +5,7 @@ SPDX-License-Identifier: Apache-2.0 Authors: Mihai Criveti -MCP Gateway v0.7.0 - Test Plan Generator from YAML +MCP Gateway v0.8.0 - Test Plan Generator from YAML Generates Excel test plan from YAML test definition files. Much cleaner and more maintainable approach. diff --git a/tests/manual/testcases/admin_ui_tests.yaml b/tests/manual/testcases/admin_ui_tests.yaml index 598fc3481..a35e28404 100644 --- a/tests/manual/testcases/admin_ui_tests.yaml +++ b/tests/manual/testcases/admin_ui_tests.yaml @@ -1,4 +1,4 @@ -# MCP Gateway v0.7.0 - Admin UI Tests +# MCP Gateway v0.8.0 - Admin UI Tests # Comprehensive admin interface testing # Focus: UI validation including critical server visibility test diff --git a/tests/manual/testcases/api_a2a.yaml b/tests/manual/testcases/api_a2a.yaml index 14d8100ad..d048ebc78 100644 --- a/tests/manual/testcases/api_a2a.yaml +++ b/tests/manual/testcases/api_a2a.yaml @@ -1,4 +1,4 @@ -# MCP Gateway v0.7.0 - A2A (Agent-to-Agent) API Tests +# MCP Gateway v0.8.0 - A2A (Agent-to-Agent) API Tests # A2A agent integration testing # Focus: AI agent management and tool integration diff --git a/tests/manual/testcases/api_authentication.yaml b/tests/manual/testcases/api_authentication.yaml index 820aaca19..98c7beb61 100644 --- a/tests/manual/testcases/api_authentication.yaml +++ b/tests/manual/testcases/api_authentication.yaml @@ -1,4 +1,4 @@ -# MCP Gateway v0.7.0 - Authentication API Tests +# MCP Gateway v0.8.0 - Authentication API Tests # Comprehensive testing of authentication endpoints # Focus: All authentication methods and security diff --git a/tests/manual/testcases/api_export_import.yaml b/tests/manual/testcases/api_export_import.yaml index d9e94c9a3..76a4ce8fc 100644 --- a/tests/manual/testcases/api_export_import.yaml +++ b/tests/manual/testcases/api_export_import.yaml @@ -1,4 +1,4 @@ -# MCP Gateway v0.7.0 - Export/Import API Tests +# MCP Gateway v0.8.0 - Export/Import API Tests # Configuration backup and restore testing # Focus: Data export/import, backup workflows, and recovery diff --git a/tests/manual/testcases/api_federation.yaml b/tests/manual/testcases/api_federation.yaml index 99048ec95..ddb0e70c8 100644 --- a/tests/manual/testcases/api_federation.yaml +++ b/tests/manual/testcases/api_federation.yaml @@ -1,4 +1,4 @@ -# MCP Gateway v0.7.0 - Federation API Tests +# MCP Gateway v0.8.0 - Federation API Tests # Gateway-to-gateway federation testing # Focus: Peer registration, discovery, and cross-gateway operations diff --git a/tests/manual/testcases/api_prompts.yaml b/tests/manual/testcases/api_prompts.yaml index 73ed06929..a1370b0a7 100644 --- a/tests/manual/testcases/api_prompts.yaml +++ b/tests/manual/testcases/api_prompts.yaml @@ -1,4 +1,4 @@ -# MCP Gateway v0.7.0 - Prompts API Tests +# MCP Gateway v0.8.0 - Prompts API Tests # Prompt management and rendering testing # Focus: Prompt CRUD, template rendering, and team access diff --git a/tests/manual/testcases/api_resources.yaml b/tests/manual/testcases/api_resources.yaml index 02f31104b..d1ddb064a 100644 --- a/tests/manual/testcases/api_resources.yaml +++ b/tests/manual/testcases/api_resources.yaml @@ -1,4 +1,4 @@ -# MCP Gateway v0.7.0 - Resources API Tests +# MCP Gateway v0.8.0 - Resources API Tests # Resource management and content testing # Focus: Resource CRUD, content handling, and team access control diff --git a/tests/manual/testcases/api_servers.yaml b/tests/manual/testcases/api_servers.yaml index fccfdd408..d9f4cb035 100644 --- a/tests/manual/testcases/api_servers.yaml +++ b/tests/manual/testcases/api_servers.yaml @@ -1,4 +1,4 @@ -# MCP Gateway v0.7.0 - Virtual Servers API Tests +# MCP Gateway v0.8.0 - Virtual Servers API Tests # Server management endpoint testing # Focus: Virtual server CRUD operations and transport testing diff --git a/tests/manual/testcases/api_teams.yaml b/tests/manual/testcases/api_teams.yaml index 37de2dfd0..37bcaeba6 100644 --- a/tests/manual/testcases/api_teams.yaml +++ b/tests/manual/testcases/api_teams.yaml @@ -1,4 +1,4 @@ -# MCP Gateway v0.7.0 - Teams API Tests +# MCP Gateway v0.8.0 - Teams API Tests # Team management endpoint testing # Focus: Multi-tenancy team operations diff --git a/tests/manual/testcases/api_tools.yaml b/tests/manual/testcases/api_tools.yaml index 4e60bc3d1..c74b10c99 100644 --- a/tests/manual/testcases/api_tools.yaml +++ b/tests/manual/testcases/api_tools.yaml @@ -1,4 +1,4 @@ -# MCP Gateway v0.7.0 - Tools API Tests +# MCP Gateway v0.8.0 - Tools API Tests # Tool management and invocation testing # Focus: Tool CRUD operations, invocation, and team-based access diff --git a/tests/manual/testcases/database_tests.yaml b/tests/manual/testcases/database_tests.yaml index ce9dbad95..59996488a 100644 --- a/tests/manual/testcases/database_tests.yaml +++ b/tests/manual/testcases/database_tests.yaml @@ -1,4 +1,4 @@ -# MCP Gateway v0.7.0 - Database Tests +# MCP Gateway v0.8.0 - Database Tests # Database compatibility and performance testing # Focus: SQLite vs PostgreSQL comparison and migration validation diff --git a/tests/manual/testcases/edge_cases.yaml b/tests/manual/testcases/edge_cases.yaml index c0b892e34..a5113157d 100644 --- a/tests/manual/testcases/edge_cases.yaml +++ b/tests/manual/testcases/edge_cases.yaml @@ -1,4 +1,4 @@ -# MCP Gateway v0.7.0 - Edge Cases and Error Conditions +# MCP Gateway v0.8.0 - Edge Cases and Error Conditions # Edge case testing and error handling validation # Focus: Boundary conditions, error scenarios, and recovery diff --git a/tests/manual/testcases/migration_tests.yaml b/tests/manual/testcases/migration_tests.yaml index b369903f7..80e873dd1 100644 --- a/tests/manual/testcases/migration_tests.yaml +++ b/tests/manual/testcases/migration_tests.yaml @@ -1,4 +1,4 @@ -# MCP Gateway v0.7.0 - Migration Tests +# MCP Gateway v0.8.0 - Migration Tests # Critical post-migration validation tests # Focus: Verify old servers are visible and migration successful diff --git a/tests/manual/testcases/performance_tests.yaml b/tests/manual/testcases/performance_tests.yaml index 1d9da112f..f4d6a9610 100644 --- a/tests/manual/testcases/performance_tests.yaml +++ b/tests/manual/testcases/performance_tests.yaml @@ -1,4 +1,4 @@ -# MCP Gateway v0.7.0 - Performance Tests +# MCP Gateway v0.8.0 - Performance Tests # Load testing and performance validation # Focus: Stress testing, concurrent users, and performance benchmarks diff --git a/tests/manual/testcases/security_tests.yaml b/tests/manual/testcases/security_tests.yaml index 40e636655..5ae18a5a2 100644 --- a/tests/manual/testcases/security_tests.yaml +++ b/tests/manual/testcases/security_tests.yaml @@ -1,4 +1,4 @@ -# MCP Gateway v0.7.0 - Security Tests +# MCP Gateway v0.8.0 - Security Tests # Security and penetration testing # Focus: Attack scenarios and defense validation diff --git a/tests/manual/testcases/setup_instructions.yaml b/tests/manual/testcases/setup_instructions.yaml index 54c646d11..cb24eaa56 100644 --- a/tests/manual/testcases/setup_instructions.yaml +++ b/tests/manual/testcases/setup_instructions.yaml @@ -1,4 +1,4 @@ -# MCP Gateway v0.7.0 - Setup Instructions +# MCP Gateway v0.8.0 - Setup Instructions # Complete environment setup guide for manual testers # Must be completed before any other testing diff --git a/tests/migration/README.md b/tests/migration/README.md index d012d169d..7cbda6dec 100644 --- a/tests/migration/README.md +++ b/tests/migration/README.md @@ -381,7 +381,7 @@ make docker-prod docker tag mcp-context-forge:latest ghcr.io/ibm/mcp-context-forge:latest # For testing multiple versions -docker tag mcp-context-forge:latest ghcr.io/ibm/mcp-context-forge:0.7.0 +docker tag mcp-context-forge:latest ghcr.io/ibm/mcp-context-forge:0.8.0 ``` ## Troubleshooting