v1.0.17 - Okta Identity Provider, Security Hardening, and OTLP Metrics Export
Upgrading from v1.0.16
This section covers everything you need to know to upgrade from v1.0.16 to v1.0.17.
Breaking Changes
1. Local Admin Credentials Removed
The ADMIN_USER and ADMIN_PASSWORD environment variables have been removed. All authentication now requires an identity provider (Keycloak, Entra ID, Okta, or AgentCore).
- Action Required: Remove these variables from your
.envfile - Migration: Use identity provider accounts for admin access
2. Registry Container Port Changes (Helm/Kubernetes Only)
The registry service now uses non-privileged ports:
-
HTTP:
80→8080 -
HTTPS:
443→8443 -
Action Required for Kubernetes/Helm: Update any external port references or ingress configurations
-
No Action Required: Docker Compose and Terraform/ECS deployments automatically map these ports
3. MongoDB Init Container Removed (Helm/Kubernetes Only)
The wait-for-mongodb init container has been removed from auth-server and registry deployments. MongoDB readiness is now handled through application-level retries and health checks.
- Action Required: None - MongoDB connection retry logic is built into the applications
- Benefit: Faster pod startup times and reduced security surface
New Environment Variables
| Variable | Default | Description |
|---|---|---|
OKTA_DOMAIN |
- | Okta organization domain (e.g., dev-123456.okta.com) |
OKTA_CLIENT_ID |
- | Okta OAuth2 application client ID |
OKTA_CLIENT_SECRET |
- | Okta OAuth2 application client secret |
OKTA_M2M_CLIENT_ID |
(uses OKTA_CLIENT_ID) |
Optional: Separate M2M client ID |
OKTA_M2M_CLIENT_SECRET |
(uses OKTA_CLIENT_SECRET) |
Optional: Separate M2M client secret |
OKTA_API_TOKEN |
- | Optional: Okta Admin API token for IAM operations |
OKTA_AUTH_SERVER_ID |
(uses default) | Optional: Custom authorization server ID |
OTEL_OTLP_ENDPOINT |
- | OTLP endpoint URL for direct metrics push (e.g., https://otlp.datadoghq.com) |
OTEL_EXPORTER_OTLP_HEADERS |
- | OTLP headers (e.g., dd-api-key=YOUR_KEY) |
OTEL_OTLP_EXPORT_INTERVAL_MS |
30000 |
Metrics export interval in milliseconds |
OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE |
cumulative |
Metric temporality: cumulative or delta |
Upgrade Instructions
Docker Compose
cd mcp-gateway-registry
git pull origin main
git checkout v1.0.17
# Review new env vars in .env.example and update your .env if needed
# Remove ADMIN_USER and ADMIN_PASSWORD if present
# Rebuild and restart:
./build_and_run.shKubernetes / Helm (EKS)
cd mcp-gateway-registry
git pull origin main
git checkout v1.0.17
# Update values.yaml if needed, then upgrade:
cd charts/mcp-gateway-registry-stack
helm upgrade mcp-gateway . -f your-values.yamlTerraform / ECS
cd mcp-gateway-registry
git pull origin main
git checkout v1.0.17
# Update your .tfvars with any new variables
cd terraform/aws-ecs
terraform plan
terraform applyDockerHub Images
Pre-built images are available:
docker pull mcpgateway/registry:v1.0.17
docker pull mcpgateway/auth-server:v1.0.17
docker pull mcpgateway/currenttime-server:v1.0.17
docker pull mcpgateway/realserverfaketools-server:v1.0.17
docker pull mcpgateway/mcpgw-server:v1.0.17
docker pull mcpgateway/fininfo-server:v1.0.17
docker pull mcpgateway/metrics-service:v1.0.17Major Features
Okta Identity Provider Support
Complete integration of Okta as a supported identity provider alongside Keycloak, Entra ID, and Amazon Bedrock AgentCore.
Key Capabilities:
- Full OAuth 2.0/OIDC authentication flow with Okta
- Machine-to-machine (M2M) token generation for automated workflows
- User and group synchronization via Okta API
- IAM group mapping and authorization
- Support for custom authorization servers
- Optional separate M2M client credentials
- Helm chart configuration support
Configuration:
- Set
AUTH_PROVIDER=oktain your environment - Configure required variables:
OKTA_DOMAIN,OKTA_CLIENT_ID,OKTA_CLIENT_SECRET - Optional IAM features require
OKTA_API_TOKEN
Infrastructure Security Hardening
Comprehensive security improvements across deployment methods (Docker Compose, Helm/Kubernetes, Terraform/ECS).
Security Enhancements:
- Container Security: Non-root user execution, dropped capabilities, read-only root filesystems
- Secrets Management: Removed hardcoded credentials, AWS Secrets Manager integration for ECS
- Network Security: Localhost binding for development, private IP binding for production
- Health Checks: Liveness and readiness probes for all services
- Resource Limits: CPU and memory constraints for all containers
- Logging: Structured logging with AWS CloudWatch integration
Deployment-Specific Improvements:
- Helm/Kubernetes: SecurityContext enforcement, pod security standards compliance
- Terraform/ECS: IAM role refinement, VPC security group tightening, ALB access logging
- Docker Compose: TLS certificate management, nginx security headers
Direct OTLP Metrics Export
Push OpenTelemetry metrics directly to external observability platforms (Datadog, New Relic, Grafana Cloud, Honeycomb) via OTLP/HTTP.
Key Features:
- Parallel export to both Prometheus and OTLP endpoints
- Configurable export intervals
- Support for cumulative and delta metric temporality
- Pre-configured examples for major platforms
- No additional collector required
Supported Platforms:
- Datadog (US1/EU1 regions)
- New Relic
- Grafana Cloud
- Honeycomb
- Any OTLP-compatible platform
Configuration:
- Set
OTEL_OTLP_ENDPOINTto your platform's OTLP endpoint - Add platform-specific headers in
OTEL_EXPORTER_OTLP_HEADERS - Adjust temporality for Datadog:
OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE=delta
What's New
Security Fixes
- Shell Injection Prevention: Replaced
execSyncwithexecFileSyncto prevent command injection attacks (#655) - Semgrep Findings: Addressed static analysis findings including SQL injection patterns, hardcoded credentials, and insecure randomness (#651)
- CSRF Protection: Added Cross-Site Request Forgery protection with flexible token validation (#635)
- Hardcoded Secrets Removal: Eliminated hardcoded database passwords and API tokens (#633)
- Network Binding Security: Servers now bind to localhost in development, private IPs in production (#604)
- Subprocess Security: Implemented hardcoded command patterns with proper validation (#577)
- SQL Injection Prevention: Parameterized queries and allowlist validation for dynamic identifiers (#579)
Authentication & Identity
- Complete Okta identity provider integration with M2M support (#644, #657)
- Removed local username/password authentication (#591)
- Fixed Keycloak SSO logout with
id_token_hintparameter (#592) - Removed old admin username/password references (#627)
Agent Management
- Fixed agent enable/disable 500 error after container restart (#621, #622)
- Resolved health status race condition for enabled services (#639)
- Agent enabled state now persists to repository on toggle (#622)
Search & Discovery
- Fixed FAISS search initialization and entity type handling (#646)
- Improved semantic search accuracy and performance
Deployment & Configuration
- Helm charts now support Okta configuration (#657)
- OpenTelemetry ConfigMap for registry metrics configuration (#638)
- MongoDB credentials passed to configure job (#630)
- Conditional environment variable handling (#640)
- Docker security hardening and ECS Fargate production fixes (#624)
Infrastructure
- Created writable
/app/certsdirectory for DocumentDB CA bundle (#632) - Fixed nginx X-Forwarded-Port mapping and proxy buffer permissions (#631)
- Federation server reconciliation and DELETE endpoint fixes (#576)
Frontend Improvements
- ESC key now closes modals in the UI (#596)
- Uptime display with system stats tooltip (#567)
- IAM tool selector improvements and path normalization (#570)
Documentation
- Added Direct OTLP Push Export documentation (#637)
- Updated roadmap with March 2026 milestones (#653)
- Added modern type hints (PEP 604/585) guidance (#582)
- Comprehensive subprocess and SQL security guidelines (#580)
- Enterprise Security Posture documentation
- AWS Show & Tell video added to demo videos
Bug Fixes
- Fixed FAISS search broken initialization and wrong entity types (#646)
- Fixed agent enable/disable 500 error after container restart (#621)
- Fixed agent enabled state persistence on toggle (#622)
- Eliminated health status race condition for enabled services (#639)
- Fixed writable /app/certs directory for DocumentDB CA bundle (#632)
- Fixed nginx X-Forwarded-Port mapping and proxy buffer permissions (#631)
- Fixed Keycloak SSO logout with id_token_hint (issue #490) (#592)
- Fixed mcpgw API compatibility and Service Connect (#588)
- Fixed federation server reconciliation and DELETE endpoint (issue #539) (#576)
- Resolved Bandit B105 findings (issue #525) (#571)
- Fixed IAM tool selector, path normalization, and UI permission sync (#570)
- Resolved Bandit B404/B307/B310 findings (issue #526) (#568)
- Preserved encrypted federation tokens during peer updates (#564)
- Fixed Bandit B101 configuration for test files (#565)
Pull Requests Included
| PR | Title |
|---|---|
| #657 | add okta envvars to charts |
| #655 | fix: replace execSync with execFileSync to prevent shell injection |
| #653 | docs: update roadmap with March 2026 milestones |
| #651 | fix: implement Semgrep security findings fixes (issue #650) |
| #648 | chore(deps): bump langgraph from 1.0.9 to 1.0.10rc1 |
| #647 | chore(deps): bump flatted from 3.3.3 to 3.4.1 in /frontend |
| #646 | fix: FAISS search broken - missing initialization and wrong entity types |
| #645 | chore(deps): bump orjson from 3.11.5 to 3.11.6 |
| #644 | feat: Add Okta as an Identity Provider |
| #643 | chore(deps): bump black from 25.12.0 to 26.3.1 in /metrics-service |
| #642 | feat: complete infrastructure security hardening implementation (issue #603) |
| #640 | only set envvars if available |
| #639 | fix: eliminate health status race condition for enabled services (#612) |
| #638 | create otel configmap for registry and add variables in values |
| #637 | docs: add Direct OTLP Push Export documentation for metrics |
| #635 | fix: add CSRF protection, flexible validation, and security scan directories |
| #633 | fix: remove hardcoded secret and improve credentials security |
| #632 | fix: create writable /app/certs directory for DocumentDB CA bundle |
| #631 | fix: nginx X-Forwarded-Port mapping and proxy buffer permissions |
| #630 | pass mongodb credentials to configure job |
| #629 | update helm charts for hardening PR |
| #627 | remove old references to admin username/password |
| #624 | Docker security hardening and ECS Fargate production fixes |
| #622 | fix: persist agent enabled state to repository on toggle |
| #621 | fix: agent enable/disable 500 after container restart |
| #606 | remove mcpgw install script |
| #604 | fix(security): address test code and network binding security findings (issue #599) |
| #596 | esc now closes modals in the UI |
| #592 | Fix Keycloak SSO logout with id_token_hint (issue #490) |
| #591 | Remove local username password |
| #590 | update mcpgw deployment and dockerfile |
| #589 | chore(deps): bump fast-xml-parser and @aws-sdk/xml-builder in /cli |
| #588 | fix: mcpgw API compatibility, security hardening, and Service Connect |
| #586 | add mcpgw build and charts |
| #585 | feat: add macOS setup and teardown Claude skill |
| #584 | Rewrite mcpgw MCP server to use registry HTTP APIs (issue #583) |
| #582 | docs: add modern type hints (PEP 604/585) and pre-commit hook guidance |
| #580 | docs: add comprehensive subprocess and SQL security guidelines to CLAUDE.md |
| #579 | 522 address sql injection in metrics |
| #578 | more ruff fixes |
| #577 | 523 address bandit finding subprocess |
| #576 | feat: add federation server reconciliation and fix DELETE endpoint (issue #539) |
| #575 | feat: searchable audit log filters and statistics dashboard (#572) |
| #571 | fix: resolve Bandit B105 findings (issue #525) |
| #570 | fix(iam): tool selector, path normalization, and UI permission sync in IAM Groups |
| #568 | fix: resolve Bandit B404/B307/B310 findings (issue #526) |
| #567 | feat: add uptime display with system stats tooltip (#566) |
| #565 | fix(security): configure Bandit B101 skip for test files |
| #564 | fix: preserve encrypted federation tokens during peer updates (#561) |
| #563 | chore(deps): bump awscli from 1.44.4 to 1.44.38 |
Security Dependency Updates
| Package | Previous | Updated | Scope |
|---|---|---|---|
| langgraph | 1.0.9 | 1.0.10rc1 | Python |
| flatted | 3.3.3 | 3.4.1 | frontend (npm) |
| black | 25.12.0 | 26.3.1 | metrics-service |
| orjson | 3.11.5 | 3.11.6 | Python |
| fast-xml-parser | - | (updated) | cli (npm) |
| @aws-sdk/xml-builder | - | (updated) | cli (npm) |
| awscli | 1.44.4 | 1.44.38 | Infrastructure |
Contributors
Thank you to all contributors for this release:
- Amit Arora (@aroraai)
- Omri Shiv (@omrishiv)
- Wallace Printz (@printw)
- Harshit Kumar Gupta (@harshit-knit)
- Abhishek Singh (@abkrsinh)
- Spidershield-contrib (@Spidershield-contrib)
- Prateek Sinha (@shekharprateek)
- dependabot[bot] (@dependabot)
Support
Full Changelog: v1.0.16...v1.0.17
What's Changed
- esc now closes modals in the UI by @omrishiv in #596
- Remove local username password by @omrishiv in #591
- fix(security): address test code and network binding security findings (issue #599) by @aarora79 in #604
- remove old references to admin username/password by @omrishiv in #627
- Docker security hardening and ECS Fargate production fixes by @aarora79 in #624
- fix: nginx X-Forwarded-Port mapping and proxy buffer permissions by @aarora79 in #631
- pass mongodb credentials to configure job by @omrishiv in #630
- fix: add CSRF protection, flexible validation, and security scan directories by @aarora79 in #635
- fix: persist agent enabled state to repository on toggle by @WPrintz in #622
- fix: agent enable/disable 500 after container restart by @WPrintz in #621
- feat: Enable OTLP push export through Docker Compose and Terraform/ECS (#543) by @abkrsinh in #560
- docs: add Direct OTLP Push Export documentation for metrics by @aarora79 in #637
- create otel configmap for registry and add variables in values by @omrishiv in #638
- only set envvars if available by @omrishiv in #640
- fix: eliminate health status race condition for enabled services (#612) by @shekharprateek in #639
- feat: complete infrastructure security hardening implementation (issue #603) by @aarora79 in #642
- fix: FAISS search broken - missing initialization and wrong entity types by @harshitkgupta in #646
- chore(deps): bump orjson from 3.11.5 to 3.11.6 by @dependabot[bot] in #645
- chore(deps): bump black from 25.12.0 to 26.3.1 in /metrics-service by @dependabot[bot] in #643
- chore(deps): bump flatted from 3.3.3 to 3.4.1 in /frontend by @dependabot[bot] in #647
- chore(deps): bump langgraph from 1.0.9 to 1.0.10rc1 by @dependabot[bot] in #648
- fix: implement Semgrep security findings fixes (issue #650) by @aarora79 in #651
- docs: update roadmap with March 2026 milestones by @aarora79 in #653
- fix: replace execSync with execFileSync to prevent shell injection by @spidershield-contrib in #655
- feat: Add Okta as an Identity Provider by @abkrsinh in #644
- add okta envvars to charts by @omrishiv in #657
New Contributors
- @shekharprateek made their first contribution in #639
- @spidershield-contrib made their first contribution in #655
Full Changelog: v1.0.16...v1.0.17