v0.9.0 - 2025-11-09 - Internal Observability, Performance Optimizations & Production Hardening #1404
crivetimihai
announced in
Announcements
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
This release delivers detailed internal observability, major performance improvements, compression & pagination, REST API passthrough, Ed25519 certificate signing, and critical multi-tenancy fixes with 60+ issues resolved and 50+ PRs merged.
🏆 Major Achievements
Release 0.9.0 represents a major milestone in production readiness and operational excellence:
✅ 📊 Built-in Observability Platform - Self-contained performance monitoring with interactive dashboards, Gantt charts, flame graphs, and comprehensive trace analytics (no external platforms required!)
✅ ⚡ 30-70% Bandwidth Reduction - Multi-algorithm response compression (Brotli, Zstd, GZip) with zero client changes
✅ 🚀 5-6x Faster JSON Processing - orjson serialization for high-throughput APIs with 7% smaller payloads
✅ 🦀 5-100x Plugin Performance - Rust-accelerated PII filter with automatic Python fallback
✅ 📄 Comprehensive Pagination - HTMX-based UI pagination tested up to 10K records with database optimization
✅ 🔌 REST API Passthrough - Complete REST tool configuration with query/header mapping and plugin chains
✅ 🔐 Ed25519 Certificate Signing - Production-ready certificate authentication with zero-downtime key rotation
✅ 🛡️ Multi-Tenancy Security Fixes - Critical RBAC vulnerability patches and ownership enforcement
✅ 💬 LLM Chat Interface - Built-in MCP client with Redis-based session consistency for distributed environments
✨ Highlights
📊 Internal Observability System (NEW!)
Self-contained performance monitoring and trace analytics without external dependencies
The biggest feature of 0.9.0 is a comprehensive built-in observability system that provides production-grade monitoring, tracing, and analytics stored entirely in your database (SQLite/PostgreSQL/MariaDB) with interactive visualizations in the Admin UI.
Key Capabilities
Performance Analytics
Error Tracking
Interactive Dashboards
/admin/observability/tools) - MCP tool invocation metrics/admin/observability/prompts) - Prompt rendering performance/admin/observability/resources) - Resource fetch operations/admin/observability/metrics) - At-a-glance health statusTrace Visualization
What Gets Traced
Configuration & Retention
Why This Matters
Use Cases
See the Internal Observability Documentation for comprehensive guides, examples, and screenshots.
⚡ Performance Optimizations (30-70% faster)
Response Compression Middleware (#1298, #1292)
Vary: Accept-Encodingheader for proper cache behaviororjson JSON Serialization (#1294)
🦀 Rust Plugin Framework (#1289, #1249)
pip install mcp-contextforge-gateway[rust]📄 Pagination & Scale
Comprehensive API Pagination (#1224, #1277)
HTMX-Based UI Pagination
/admin/tools/partialendpoint for HTMX-based paginationDatabase Optimization
created_at+idfor tools, servers, resources, prompts, gateways11 Configuration Variables - Fine-tuned pagination behavior:
PAGINATION_DEFAULT_PAGE_SIZE- Default items per page (default: 50)PAGINATION_MAX_PAGE_SIZE- Maximum allowed page size (default: 500)PAGINATION_CURSOR_THRESHOLD- Threshold for cursor-based pagination (default: 10000)PAGINATION_CURSOR_ENABLED- Enable cursor-based pagination (default: true)PAGINATION_INCLUDE_LINKS- Include navigation links in responses (default: true)Pagination Utilities - New
mcpgateway/utils/pagination.pymodule:🔌 REST API Passthrough
Complete REST Tool Configuration (#746, #1273)
expose_passthroughflagREST Tool Validation (#1273)
integration_type='REST')🔐 Ed25519 Certificate Signing
Digital Certificate Authentication
cryptographylibraryKey Generation Utility
mcpgateway/utils/generate_keys.pyKey Rotation Support
ED25519_PRIVATE_KEY) and previous (PREV_ED25519_PRIVATE_KEY) keysKubernetes & Helm Support
values.yamlconfigurationvalues.schema.json🔒 Multi-Tenancy & Security Fixes
RBAC Vulnerability Patch (#1248, #1250)
Team-Scoped Uniqueness (#1246)
(team_id, owner_email, name)(team_id, owner_email, uri)(team_id, owner_email, slug)Ownership Enforcement (#1209, #1210)
ID-Based Resource Endpoints (#1184)
🛠️ Developer & Operations Tools
Support Bundle Generation (#1197)
mcpgateway --support-bundle --output-dir /tmp --log-lines 1000GET /admin/support-bundle/generate?log_lines=1000LLM Chat Interface (#1202, #1200, #1236)
System Statistics in Metrics (#1228, #1232)
Performance Testing Framework (#1203, #1204, #1226)
Metrics Export Enhancement (#1218)
🔐 SSO & Authentication
Microsoft Entra ID Support (#1212, #1211)
Generic OIDC Provider Support (#1213)
Keycloak Integration (#1217, #1216, #1109)
OAuth Timeout Configuration (#1201)
OAUTH_DEFAULT_TIMEOUTfor OAuth providers🔌 Plugin Framework Enhancements
Plugin Client-Server mTLS Support (#1196)
Complete OPA Plugin Hooks (#1198, #1137)
Plugin Linters & Quality (#1240)
Plugin Compose Configuration (#1174)
🌐 Protocol & Platform
MCP Tool Output Schema Support (#1258, #1263, #1269)
outputSchemafieldMultiple StreamableHTTP Content (#1188, #1189)
s390x Architecture Support (#1138, #1206)
System Monitor MCP Server (#977)
💻 Admin UI Enhancements
Inspectable Auth Credentials (#1336, #1370)
🆕 Added
📊 Internal Observability System (#1401, #1400)
Core Infrastructure
Database Schema
observability_tracestable - Trace metadata with trace_id, start/end times, statusobservability_spanstable - Operation details with parent-child relationshipsobservability_span_attributestable - Custom key-value metadataobservability_span_eventstable - Log events within spansInstrumentation
Admin UI Dashboards
/admin/observability/tools) - Tool invocation metrics with usage charts, latency analysis, error rates/admin/observability/prompts) - Prompt rendering performance with frequency, latency, errors/admin/observability/resources) - Resource fetch operations with access patterns and performance/admin/observability/metrics) - Overall health status with summary cards/admin/observability/traces) - Recent traces with filtering/admin/observability/traces/{trace_id}) - Comprehensive trace analysisVisualization Components
Configuration
OBSERVABILITY_ENABLED- Master switch for internal observability (default: false)OBSERVABILITY_TRACE_HTTP_REQUESTS- Auto-trace HTTP requests (default: true)OBSERVABILITY_TRACE_RETENTION_DAYS- Days to retain trace data (default: 7)OBSERVABILITY_MAX_TRACES- Maximum traces to store (default: 100000)OBSERVABILITY_SAMPLE_RATE- Trace sampling rate (default: 1.0 = 100%)OBSERVABILITY_EXCLUDE_PATHS- Regex patterns to exclude (default: /health,/metrics,/static/.*)OBSERVABILITY_METRICS_ENABLED- Enable metrics collection (default: true)OBSERVABILITY_EVENTS_ENABLED- Enable event logging (default: true)Retention & Cleanup
Documentation
docs/docs/manage/observability/internal-observability.md(823 lines)⚡ Performance Optimizations
Response Compression Middleware (#1298, #1292)
Vary: Accept-EncodingheaderCOMPRESSION_ENABLED- Enable/disable (default: true)COMPRESSION_MINIMUM_SIZE- Minimum size to compress (default: 500 bytes)COMPRESSION_GZIP_LEVEL- GZip level (default: 6)COMPRESSION_BROTLI_QUALITY- Brotli quality (default: 4)COMPRESSION_ZSTD_LEVEL- Zstd level (default: 3)orjson JSON Serialization (#1294)
scripts/benchmark_json_serialization.pymcpgateway/utils/orjson_response.py🦀 Rust Plugin Framework (#1289, #1249)
pip install mcp-contextforge-gateway[rust]📄 REST API and UI Pagination (#1224, #1277)
Paginated REST API Endpoints
/admin/toolsendpoint returns paginated response withdata,pagination, andlinkskeysDatabase Indexes for Pagination
created_at+idfor tools, servers, resources, prompts, gatewaysUI Pagination with HTMX
/admin/tools/partialendpoint for HTMX-based paginationPagination Configuration - 11 new environment variables:
PAGINATION_DEFAULT_PAGE_SIZE- Default items per page (default: 50)PAGINATION_MAX_PAGE_SIZE- Maximum allowed page size (default: 500)PAGINATION_CURSOR_THRESHOLD- Threshold for cursor-based pagination (default: 10000)PAGINATION_CURSOR_ENABLED- Enable cursor-based pagination (default: true)PAGINATION_INCLUDE_LINKS- Include navigation links in responses (default: true)Pagination Utilities - New
mcpgateway/utils/pagination.pymodule:Comprehensive Test Coverage - 1,089+ lines of pagination tests
🔌 REST Passthrough Configuration (#746, #1273)
Query & Header Mapping
expose_passthroughflagSecurity & Plugin Integration
REST Tool Validation (#1273)
integration_type='REST')New Tool Columns - Added 9 new columns to tools table via Alembic migration
8a2934be50c0:base_url- Base URL for REST passthroughpath_template- Path template for URL constructionquery_mapping- JSON mapping for query parametersheader_mapping- JSON mapping for headerstimeout_ms- Request timeout in millisecondsexpose_passthrough- Boolean flag to enable/disable passthroughallowlist- JSON array of allowed hosts/schemesplugin_chain_pre- Pre-request plugin chainplugin_chain_post- Post-request plugin chain🔐 Ed25519 Certificate Signing
Digital Certificate Signing
cryptographylibraryKey Generation Utility
mcpgateway/utils/generate_keys.pyKey Rotation Support
ED25519_PRIVATE_KEY) and previous (PREV_ED25519_PRIVATE_KEY) keysEnvironment Variable Configuration - 3 new variables:
ENABLE_ED25519_SIGNING- Enable/disable signing (default: "false")ED25519_PRIVATE_KEY- Current signing key (base64-encoded)PREV_ED25519_PRIVATE_KEY- Previous key for rotation (base64-encoded)Kubernetes & Helm Support
values.yamlconfigurationvalues.schema.json🛠️ Developer & Operations Tools
Support Bundle Generation (#1197)
mcpgateway --support-bundle --output-dir /tmp --log-lines 1000GET /admin/support-bundle/generate?log_lines=1000LLM Chat Interface (#1202, #1200, #1236)
System Statistics in Metrics (#1228, #1232)
Performance Testing Framework (#1203, #1204, #1226)
Metrics Export Enhancement (#1218)
🔐 SSO & Authentication Enhancements (#1212, #1213, #1216, #1217)
Microsoft Entra ID Support (#1212, #1211)
Generic OIDC Provider Support (#1213)
Keycloak Integration (#1217, #1216, #1109)
OAuth Timeout Configuration (#1201)
OAUTH_DEFAULT_TIMEOUTfor OAuth providers🔌 Plugin Framework Enhancements (#1196, #1198, #1137, #1240, #1289)
Plugin Client-Server mTLS Support (#1196)
Complete OPA Plugin Hooks (#1198, #1137)
Plugin Linters & Quality (#1240)
Plugin Compose Configuration (#1174)
🌐 Protocol & Platform Enhancements
MCP Tool Output Schema Support (#1258, #1263, #1269)
outputSchemafieldMultiple StreamableHTTP Content (#1188, #1189)
s390x Architecture Support (#1138, #1206)
System Monitor MCP Server (#977)
📚 Documentation Enhancements
Observability Documentation
docs/docs/manage/observability/internal-observability.md(823 lines) - Complete internal observability guidedocs/docs/manage/observability/observability.md(450 lines) - OpenTelemetry and external platformsdocs/docs/manage/observability/phoenix.md(365 lines) - Arize Phoenix integrationIntegration Guides
Configuration
💻 Admin UI Enhancements (#1336, #1370)
Inspectable Auth Credentials (#1336, #1370)
🐛 Fixed
🔒 Critical Multi-Tenancy & RBAC Bugs
RBAC Vulnerability Patch (#1248, #1250)
Backend Multi-Tenancy Issues (#969)
Team Member Re-addition (#959)
Public Resource Ownership (#1209, #1210)
Incomplete Visibility Implementation (#958)
🔐 Security & Authentication Fixes
JWT Token Fixes (#1254, #1255, #1262, #1261)
Cookie Scope & RBAC Redirects (#1252, #448)
/apiinstead of/mcp)OAuth & Login Issues (#1048, #1101, #1117, #1181, #1190)
SECURE_COOKIES=falsewarning ([Bug]: Login issue - Serving over HTTP requires SECURE_COOKIES=false (warning required) #1048, Add secure cookie warnings for HTTP development login issues #1181)CSP & Iframe Embedding (#922, #1241)
🔧 UI/UX & Display Fixes
UI Margins & Layout (#1272, #1276, #1275)
Request Payload Visibility (#1098, #1242)
Tool Annotations (#835)
Header-Modal Overlap (#1178, #1179)
Passthrough Headers (#861, #1024)
tool_prefetchhook can now access PASSTHROUGH_HEADERS and tags🛠️ Infrastructure & Build Fixes
CI/CD Pipeline Verification (#1257)
Makefile Clean Target (#1238)
UV Lock Conflicts (#1230, #1234, #1243)
Deprecated Config Parameters (#1237)
Bandit Security Scan (#1244)
Test Warnings & Mypy Issues (#1268)
🧪 Test Reliability & Quality Improvements (#1281, #1283, #1284, #1291)
Gateway Test Stability (#1281)
Logger Test Reliability (#1283, #1284)
Prompt Test Fixes (#1291)
🐳 Container & Deployment Fixes
Gateway Registration on MacOS (#625)
Non-root Container Users (#1231)
Container Runtime Detection
🔄 Changed
🗄️ Database Schema & Multi-Tenancy Enhancements (#1246, #1273)
Scoped Uniqueness for Multi-Tenant Resources (#1246):
(team_id, owner_email, name)- prevents naming conflicts across teams(team_id, owner_email, uri)- ensures URI uniqueness per team/owner(team_id, owner_email, slug)- team-scoped agent identifiersREST Passthrough Configuration (#1273):
8a2934be50c0:base_url- Base URL for REST passthroughpath_template- Path template for URL constructionquery_mapping- JSON mapping for query parametersheader_mapping- JSON mapping for headerstimeout_ms- Request timeout in millisecondsexpose_passthrough- Boolean flag to enable/disable passthroughallowlist- JSON array of allowed hosts/schemesplugin_chain_pre- Pre-request plugin chainplugin_chain_post- Post-request plugin chain🔧 API Schemas (#1273)
ToolCreate Schema
ToolUpdate Schema
ToolRead Schema
⚙️ Configuration & Defaults (#1194)
APP_DOMAIN Default
OAUTH_DEFAULT_TIMEOUT
Environment Variables
🧹 Code Quality & Developer Experience Improvements (#1271, #1233)
Consolidated Linting Configuration (#1271)
.ruff.tomland.interrogatercCONTRIBUTING.md Cleanup (#1233)
Lint-smart Makefile Fix (#1233)
Plugin Linting (#1240)
Deprecation Removal
🔒 Security Enhancements
Authentication & Authorization
Plugin Security
Infrastructure Security
🏗️ Infrastructure
Performance & Scale
Deployment
📚 Documentation
Observability
API & Integration
Operations
Security
📦 Migration Guide
Environment Configuration Updates
Observability Configuration (new in 0.9.0)
Performance Optimizations (new in 0.9.0)
# Response Compression (enabled by default) COMPRESSION_ENABLED=true COMPRESSION_MINIMUM_SIZE=500 COMPRESSION_GZIP_LEVEL=6 COMPRESSION_BROTLI_QUALITY=4 COMPRESSION_ZSTD_LEVEL=3Pagination Configuration (new in 0.9.0)
# Pagination Settings PAGINATION_DEFAULT_PAGE_SIZE=50 PAGINATION_MAX_PAGE_SIZE=500 PAGINATION_CURSOR_THRESHOLD=10000 PAGINATION_CURSOR_ENABLED=true PAGINATION_INCLUDE_LINKS=trueEd25519 Certificate Signing (new in 0.9.0)
OAuth Configuration Updates
Rust Plugin Framework (optional)
# Install Rust-accelerated plugins (optional) pip install mcp-contextforge-gateway[rust]Database Migration
Database migrations run automatically on startup. Backup recommended before upgrading from 0.8.0 → 0.9.0:
PostgreSQL 17 → 18 Upgrade
Docker Compose users must run the upgrade utility before starting the stack.
Manual Upgrade (without Make):
🚨 Breaking Changes
PostgreSQL 17 → 18 Upgrade Required
Docker Compose users must run the upgrade utility before starting the stack.
The default PostgreSQL image has been upgraded from version 17 to 18. This is a major version upgrade that requires a one-time data migration using
pg_upgrade.Why This Change:
/var/lib/postgresql/18/docker) for better compatibility withpg_ctlclusterpg_upgrade --linkwithout mount point boundary issuesWhat Changed:
docker-compose.yml: Updated frompostgres:17→postgres:18pgdata:/var/lib/postgresql/data→pgdata18:/var/lib/postgresqlcompose.upgrade.ymlfor automated upgrade processmake compose-upgrade-pg18target for one-command upgradesTroubleshooting:
pg_hba.confduring upgrade--link) to work across different Docker volumes📋 Issues Closed
Observability (2 issues)
Performance Optimizations (3 issues)
REST Integration (1 issue)
Multi-Tenancy & RBAC (10 issues)
Pagination (2 issues)
Security & Authentication (11 issues)
SSO Integration (4 issues)
Developer Tools & Operations (7 issues)
Code Quality & Developer Experience (2 issues)
Plugin Framework (4 issues)
Platform & Protocol (4 issues)
Bug Fixes (10 issues)
Documentation (3 issues)
Total: 60+ issues closed
🌟 Release Contributors
This release represents a major milestone in MCP Gateway's production readiness with comprehensive observability, performance optimizations, and enhanced enterprise capabilities. With contributions from developers worldwide, 0.9.0 delivers groundbreaking improvements including built-in monitoring, 30-70% bandwidth reduction, 5-6x faster JSON processing, Rust-accelerated plugins, and comprehensive pagination infrastructure.
🏆 Top Contributors in 0.9.0
🔗 Resources
Documentation
Source Code
Container Images
v0.9.0,0.9.0,latestCommunity
Quick Start
Observability Quick Start
Performance Benchmarks
Response Compression:
JSON Serialization:
Rust PII Filter:
Next Planned Release: v1.0.0 (Q1 2026) - Production Hardening & Stability
This discussion was created from the release v0.9.0 - 2025-11-09 - Internal Observability, Performance Optimizations & Production Hardening.
Beta Was this translation helpful? Give feedback.
All reactions