Skip to content

Commit 018a278

Browse files
authored
Bumping version to 0.4.0 (#573)
* Bumping version to 0.4.0 Signed-off-by: Mihai Criveti <[email protected]> * Bumping version to 0.4.0 Signed-off-by: Mihai Criveti <[email protected]> --------- Signed-off-by: Mihai Criveti <[email protected]>
1 parent df8ebf9 commit 018a278

29 files changed

+65
-61
lines changed

.bumpversion.cfg

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
[bumpversion]
2-
current_version = 0.3.1
2+
current_version = 0.4.0
33
commit = False
44
tag = False
55
sign-tags = True

.github/tools/cleanup-ghcr-versions.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ fi
9292
##############################################################################
9393
ORG="ibm"
9494
PKG="mcp-context-forge"
95-
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" "latest" )
95+
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" "latest" )
9696
PER_PAGE=100
9797

9898
DRY_RUN=${DRY_RUN:-true} # default safe

.github/workflows/docker-release.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@
44
#
55
# This workflow re-tags a Docker image (built by a previous workflow)
66
# when a GitHub Release is published, giving it a semantic version tag
7-
# like `v0.3.0`. It assumes the CI build has already pushed an image
7+
# like `v0.4.0`. It assumes the CI build has already pushed an image
88
# tagged with the commit SHA, and that all checks on that commit passed.
99
#
1010
# ➤ Trigger: Release published (e.g. from GitHub UI or `gh release` CLI)
1111
# ➤ Assumes: Existing image tagged with the commit SHA is available
12-
# ➤ Result: Image re-tagged as `ghcr.io/OWNER/REPO:v0.3.0`
12+
# ➤ Result: Image re-tagged as `ghcr.io/OWNER/REPO:v0.4.0`
1313
#
1414
# ======================================================================
1515

@@ -25,7 +25,7 @@ on:
2525
workflow_dispatch:
2626
inputs:
2727
tag:
28-
description: 'Release tag (e.g., v0.3.0)'
28+
description: 'Release tag (e.g., v0.4.0)'
2929
required: true
3030
type: string
3131

.github/workflows/release-chart.yml.inactive

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
name: Release Helm Chart
33
on:
44
release:
5-
types: [published] # tag repo, ex: v0.3.0 to trigger
5+
types: [published] # tag repo, ex: v0.4.0 to trigger
66
permissions:
77
contents: read
88
packages: write

Containerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
FROM registry.access.redhat.com/ubi9-minimal:9.6-1752587672
22
LABEL maintainer="Mihai Criveti" \
33
name="mcp/mcpgateway" \
4-
version="0.3.1" \
4+
version="0.4.0" \
55
description="MCP Gateway: An enterprise-ready Model Context Protocol Gateway"
66

77
ARG PYTHON_VERSION=3.11

Containerfile.lite

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ LABEL maintainer="Mihai Criveti" \
108108
org.opencontainers.image.title="mcp/mcpgateway" \
109109
org.opencontainers.image.description="MCP Gateway: An enterprise-ready Model Context Protocol Gateway" \
110110
org.opencontainers.image.licenses="Apache-2.0" \
111-
org.opencontainers.image.version="0.3.1"
111+
org.opencontainers.image.version="0.4.0"
112112

113113
# ----------------------------------------------------------------------------
114114
# Copy the entire prepared root filesystem from the builder stage

Makefile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1956,7 +1956,7 @@ MINIKUBE_ADDONS ?= ingress ingress-dns metrics-server dashboard registry regist
19561956
# OCI image tag to preload into the cluster.
19571957
# - By default we point to the *local* image built via `make docker-prod`, e.g.
19581958
# mcpgateway/mcpgateway:latest. Override with IMAGE=<repo:tag> to use a
1959-
# remote registry (e.g. ghcr.io/ibm/mcp-context-forge:v0.3.0).
1959+
# remote registry (e.g. ghcr.io/ibm/mcp-context-forge:v0.4.0).
19601960
TAG ?= latest # override with TAG=<ver>
19611961
IMAGE ?= $(IMG):$(TAG) # or IMAGE=ghcr.io/ibm/mcp-context-forge:$(TAG)
19621962

@@ -2593,7 +2593,7 @@ devpi-unconfigure-pip:
25932593

25942594
# ─────────────────────────────────────────────────────────────────────────────
25952595
# 📦 Version helper (defaults to the version in pyproject.toml)
2596-
# override on the CLI: make VER=0.2.1 devpi-delete
2596+
# override on the CLI: make VER=0.4.0 devpi-delete
25972597
# ─────────────────────────────────────────────────────────────────────────────
25982598
VER ?= $(shell python3 -c "import tomllib, pathlib; \
25992599
print(tomllib.loads(pathlib.Path('pyproject.toml').read_text())['project']['version'])" \

README.md

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ ContextForge MCP Gateway is a feature-rich gateway, proxy and MCP Registry that
120120

121121
**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.
122122

123-
**⚠️ Caution**: The current release (0.3.1) 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.
123+
**⚠️ Caution**: The current release (0.4.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.
124124

125125
It currently supports:
126126

@@ -386,13 +386,13 @@ docker run -d --name mcpgateway \
386386
-e BASIC_AUTH_PASSWORD=changeme \
387387
-e AUTH_REQUIRED=true \
388388
-e DATABASE_URL=sqlite:///./mcp.db \
389-
ghcr.io/ibm/mcp-context-forge:0.3.1
389+
ghcr.io/ibm/mcp-context-forge:0.4.0
390390

391391
# Tail logs (Ctrl+C to quit)
392392
docker logs -f mcpgateway
393393

394394
# Generating an API key
395-
docker run --rm -it ghcr.io/ibm/mcp-context-forge:0.3.1 \
395+
docker run --rm -it ghcr.io/ibm/mcp-context-forge:0.4.0 \
396396
python3 -m mcpgateway.utils.create_jwt_token --username admin --exp 0 --secret my-test-key
397397
```
398398

@@ -420,7 +420,7 @@ docker run -d --name mcpgateway \
420420
-e JWT_SECRET_KEY=my-test-key \
421421
-e BASIC_AUTH_USER=admin \
422422
-e BASIC_AUTH_PASSWORD=changeme \
423-
ghcr.io/ibm/mcp-context-forge:0.3.1
423+
ghcr.io/ibm/mcp-context-forge:0.4.0
424424
```
425425

426426
SQLite now lives on the host at `./data/mcp.db`.
@@ -444,7 +444,7 @@ docker run -d --name mcpgateway \
444444
-e PORT=4444 \
445445
-e DATABASE_URL=sqlite:////data/mcp.db \
446446
-v $(pwd)/data:/data \
447-
ghcr.io/ibm/mcp-context-forge:0.3.1
447+
ghcr.io/ibm/mcp-context-forge:0.4.0
448448
```
449449

450450
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.
@@ -460,7 +460,7 @@ podman run -d --name mcpgateway \
460460
-p 4444:4444 \
461461
-e HOST=0.0.0.0 \
462462
-e DATABASE_URL=sqlite:///./mcp.db \
463-
ghcr.io/ibm/mcp-context-forge:0.3.1
463+
ghcr.io/ibm/mcp-context-forge:0.4.0
464464
```
465465

466466
#### 2 - Persist SQLite
@@ -479,7 +479,7 @@ podman run -d --name mcpgateway \
479479
-p 4444:4444 \
480480
-v $(pwd)/data:/data \
481481
-e DATABASE_URL=sqlite:////data/mcp.db \
482-
ghcr.io/ibm/mcp-context-forge:0.3.1
482+
ghcr.io/ibm/mcp-context-forge:0.4.0
483483
```
484484

485485
#### 3 - Host networking (rootless)
@@ -497,7 +497,7 @@ podman run -d --name mcpgateway \
497497
--network=host \
498498
-v $(pwd)/data:/data \
499499
-e DATABASE_URL=sqlite:////data/mcp.db \
500-
ghcr.io/ibm/mcp-context-forge:0.3.1
500+
ghcr.io/ibm/mcp-context-forge:0.4.0
501501
```
502502

503503
---
@@ -506,7 +506,7 @@ podman run -d --name mcpgateway \
506506
<summary><strong>✏️ Docker/Podman tips</strong></summary>
507507

508508
* **.env files** - Put all the `-e FOO=` lines into a file and replace them with `--env-file .env`. See the provided [.env.example](.env.example) for reference.
509-
* **Pinned tags** - Use an explicit version (e.g. `v0.3.1`) instead of `latest` for reproducible builds.
509+
* **Pinned tags** - Use an explicit version (e.g. `v0.4.0`) instead of `latest` for reproducible builds.
510510
* **JWT tokens** - Generate one in the running container:
511511

512512
```bash
@@ -552,7 +552,7 @@ docker run --rm -i \
552552
-e MCP_SERVER_CATALOG_URLS=http://host.docker.internal:4444/servers/UUID_OF_SERVER_1 \
553553
-e MCP_TOOL_CALL_TIMEOUT=120 \
554554
-e MCP_WRAPPER_LOG_LEVEL=DEBUG \
555-
ghcr.io/ibm/mcp-context-forge:0.3.1 \
555+
ghcr.io/ibm/mcp-context-forge:0.4.0 \
556556
python3 -m mcpgateway.wrapper
557557
```
558558

@@ -600,7 +600,7 @@ python3 -m mcpgateway.wrapper
600600
<summary><strong>Expected responses from mcpgateway.wrapper</strong></summary>
601601

602602
```json
603-
{"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.3.0"}}}
603+
{"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.4.0"}}}
604604

605605
# When there's no tools
606606
{"jsonrpc":"2.0","id":2,"result":{"tools":[]}}
@@ -632,7 +632,7 @@ docker run -i --rm \
632632
-e MCP_SERVER_CATALOG_URLS=http://localhost:4444/servers/UUID_OF_SERVER_1 \
633633
-e MCP_AUTH_TOKEN=${MCPGATEWAY_BEARER_TOKEN} \
634634
-e MCP_TOOL_CALL_TIMEOUT=120 \
635-
ghcr.io/ibm/mcp-context-forge:0.3.1 \
635+
ghcr.io/ibm/mcp-context-forge:0.4.0 \
636636
python3 -m mcpgateway.wrapper
637637
```
638638

SECURITY.md

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
## ⚠️ Early Beta Software Notice
88

9-
**Current Version: 0.3.1 (Beta)**
9+
**Current Version: 0.4.0 (Beta)**
1010

1111
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:
1212

@@ -189,17 +189,20 @@ These validation rules help prevent XSS injection when data from untrusted MCP s
189189
Starting with v0.3.1, MCP Gateway follows the principle of "secure by default":
190190

191191
- **Admin UI and API are disabled by default** - must be explicitly enabled via environment variables
192-
- **Authentication is required** for all endpoints when enabled
193-
- **Admin UI binds to localhost only** preventing external access
194-
- **Minimal container images** with non-root execution
195-
- **Read-only filesystems** in container deployments
192+
196193

197194
To enable admin features for development:
198195
```bash
199196
MCPGATEWAY_UI_ENABLED=true # Default: false
200197
MCPGATEWAY_ADMIN_API_ENABLED=true # Default: false
201198
```
202199

200+
Starting with 0.1.0:
201+
- **Authentication is required** for all endpoints when enabled
202+
- **Admin UI binds to localhost only** preventing external access
203+
- **Minimal container images** with non-root execution
204+
- **Read-only filesystems** in container deployments
205+
203206
**Important**: The Admin UI is provided for developer convenience only and should **never be enabled in production deployments**.
204207

205208
---

charts/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -247,7 +247,7 @@ Below is a minimal example. Copy the default file and adjust for your environmen
247247
mcpContextForge:
248248
image:
249249
repository: ghcr.io/ibm/mcp-context-forge
250-
tag: 0.3.0
250+
tag: 0.4.0
251251
ingress:
252252
enabled: true
253253
host: gateway.local # replace with real DNS
@@ -434,7 +434,7 @@ For every setting see the [full annotated `values.yaml`](https://github.com/IBM/
434434
* 💾 Stateful storage - PV + PVC for Postgres (`/var/lib/postgresql/data`), storage class selectable.
435435
* 🌐 Networking & access - ClusterIP services, optional NGINX Ingress, and `NOTES.txt` with port-forward plus safe secret-fetch commands (password, bearer token, `JWT_SECRET_KEY`).
436436
* 📈 Replicas & availability - Gateway (3) and Fast-Time-Server (2) provide basic HA; stateful components run single-instance.
437-
* 📦 Helm best-practice layout - Clear separation of Deployments, Services, ConfigMaps, Secrets, PVC/PV and Ingress; chart version 0.3.0.
437+
* 📦 Helm best-practice layout - Clear separation of Deployments, Services, ConfigMaps, Secrets, PVC/PV and Ingress; chart version 0.4.0.
438438
* ⚙️ Horizontal Pod Autoscaler (HPA) support for mcpgateway
439439

440440
---

0 commit comments

Comments
 (0)