Skip to content

v0.2.0

Latest

Choose a tag to compare

@ArangoGutierrez ArangoGutierrez released this 17 Jun 12:45
v0.2.0
658dc50

What's Changed in v0.2.0

Changes since v0.1.0: 99 pull requests from 11 contributors (plus Dependabot), including 6 first-time contributors.

API & Status

  • Migrate MCPServer status from Phase to Kubernetes-style Conditions by @aliok in #75
  • feat: expose MCP server info and capabilities in status by @matzew in #145
  • feat: improve status conditions to report pod status on failures by @Cali0707 in #153
  • feat(api): add Replicas and ReadyReplicas fields to MCPServerStatus by @matzew in #185

Features & Enhancements

  • add aggregation labels to clustrroles by @jaideepr97 in #73
  • Add ownership validation to reject foreign-owned and unowned resources by @aliok in #91
  • Auto-recover when missing ConfigMap/Secret is created by @aliok in #93
  • Validate env[].valueFrom ConfigMap/Secret references in setAcceptedCondition by @matzew in #103
  • Distinguish transient API errors from config errors during validation by @aliok in #107
  • Add default MCP readiness probe and controller-level MCP handshake validation by @matzew in #111
  • feat: trigger rolling update when referenced Secrets/ConfigMaps change by @matzew in #140
  • feat: default Service SessionAffinity to ClientIP for stateful MCP sessions by @matzew in #144
  • Pass down labels on MCPServer to child resources by @OchiengEd in #79
  • feat: support stateless servers by @Cali0707 in #147
  • feat: add Delve remote debugging support by @creydr in #201

Observability (Metrics & Events)

  • feat: add custom Prometheus metrics for operator observability by @Venkatesh1505 in #122
  • Wire EventRecorder into MCPServer reconciler by @ibm-adarsh in #118
  • fix(controller): centralize workload labels and metric phase strings by @isumitsolanki in #163
  • fix(metrics): delete per-resource counters when MCPServer is removed by @isumitsolanki in #162
  • feat(controller): emit ServerReady event when Ready transitions to Available by @ibm-adarsh in #184
  • feat(controller): emit events for MCP handshake failures by @ibm-adarsh in #186
  • feat(controller): emit event when Deployment reconciliation fails by @ibm-adarsh in #191
  • feat(controller): emit event when Service reconciliation fails by @ibm-adarsh in #192

Bug Fixes

  • fix: correct Service label-removal and clean up extra metadata helpers by @matzew in #150
  • fix(controller): return true on corrupted JSON in custom metadata change detection by @matzew in #168
  • fix(controller): persist handshake retry count in status field by @matzew in #166
  • fix(controller): apply ExtraLabels/ExtraAnnotations on initial resource creation by @creydr in #197
  • fix(mcp): don't leak mcp connections by @Cali0707 in #202
  • fix(controller): filter reserved annotation keys from ExtraAnnotations by @creydr in #206
  • fix(controller): cancel context before closing MCP session by @creydr in #211
  • fix(controller): preserve Ready condition after verified handshake by @creydr in #212
  • fix(controller): set API server defaults in desired Deployment spec by @creydr in #209
  • fix(controller): skip reconciliation on status-only MCPServer updates by @creydr in #208
  • fix(rbac): controller needs watch on pods to create informer by @Cali0707 in #204
  • fix(controller): add missing DeepEqual checks for Ports and SecurityContext by @matzew in #214
  • fix(controller): sync base managed labels on Deployment update by @creydr in #224

Testing

  • Add controller test coverage for owner refs, error recovery, conflicts, and foreign ownership by @matzew in #83
  • Add e2e test for MCPServer with everything-mcp-server by @matzew in #112
  • feat(makefile): add local Go coverage report targets by @ibm-adarsh in #108
  • Add Reconcile-level tests for transient validation error path by @matzew in #115
  • Use newTestMCPServer helper in transient validation error tests by @aliok in #123
  • Rewrite existing E2E tests using kubernetes-sigs/e2e-framework by @aliok in #164
  • Add unit tests for helper functions to improve coverage by @aliok in #173
  • Add E2E test failure scenario coverage by @aliok in #181
  • Add E2E tests for configuration variations by @aliok in #182
  • Add E2E tests for update and reconciliation scenarios by @aliok in #183
  • fix(e2e): wait for EndpointSlice before using API server proxy by @creydr in #213
  • test(confighash): cover empty ConfigMap data edge case by @matzew in #216
  • fix(test): resolve predicate test flake on resource conflict by @matzew in #217

Refactoring & Cleanup

  • fix: correct e2e directory path in Makefile comment by @ibm-adarsh in #97
  • Extract classifyAPIError helper to deduplicate error classification by @aliok in #114
  • Extract newTestMCPServer helper to deduplicate MCPServer test construction by @aliok in #121
  • controller: centralize ConfigMap and Secret existence checks in MCPServer validation by @ibm-adarsh in #120
  • Divide controller test file by @aliok in #124
  • refactor: split mcpserver_controller.go into multiple files by @Cali0707 in #190
  • cleanup: add defensive guard on containers length check by @Cali0707 in #203

Documentation & Website

  • Website by @aliok in #77
  • Fix Netlify build: add GOPATH/bin to PATH and use pip3/python3 by @aliok in #96
  • Updating readme and the website by @aliok in #129
  • docs: Prometheus metrics reference on documentation site by @ibm-adarsh in #138
  • fix: update stateless field docs and add missing test coverage by @aliok in #156
  • docs: update Go version and add missing fields to complete sample by @matzew in #236
  • docs: fix website documentation for introduction and quickstart by @matzew in #235

CI, Build & Project

Dependencies

  • Bump actions/setup-go from 6.3.0 to 6.4.0 by @dependabot[bot] in #71
  • running 'go get go.opentelemetry.io/otel/sdk@v1.43.0' and tidy by @matzew in #89
  • Bump sigs.k8s.io/structured-merge-diff/v6 from 6.3.2-0.20260122202528-d9cc6641c482 to 6.3.2 by @dependabot[bot] in #90
  • Bump the k8sio group with 3 updates by @dependabot[bot] in #98
  • Bump sigs.k8s.io/structured-merge-diff/v6 from 6.3.2 to 6.4.0 by @dependabot[bot] in #94
  • Bump github.com/onsi/ginkgo/v2 from 2.28.1 to 2.28.2 by @dependabot[bot] in #126
  • chore: bump Go toolchain baseline to 1.25.9 by @ibm-adarsh in #128
  • Bump github.com/onsi/ginkgo/v2 from 2.28.2 to 2.28.3 by @dependabot[bot] in #141
  • build(deps): bump github.com/modelcontextprotocol/go-sdk from 1.5.0 to 1.6.0 by @dependabot[bot] in #148
  • build(deps): bump sigs.k8s.io/controller-runtime from 0.23.3 to 0.24.0 by @dependabot[bot] in #149
  • deps: bump go to 1.26.2 to fix govulncheck errors by @Cali0707 in #151
  • build(deps): bump golang from 1.26.2 to 1.26.3 by @dependabot[bot] in #161
  • Bump golang from 1.26.2 to 1.26.3 by @aliok in #165
  • build(deps): bump the k8sio group with 3 updates by @dependabot[bot] in #169
  • build(deps): bump sigs.k8s.io/controller-runtime from 0.24.0 to 0.24.1 by @dependabot[bot] in #170
  • build(deps): bump github.com/onsi/ginkgo/v2 from 2.28.3 to 2.29.0 by @dependabot[bot] in #187
  • build(deps): bump github.com/onsi/gomega from 1.40.0 to 1.41.0 by @dependabot[bot] in #188
  • build(deps): bump golang.org/x/net to fix GO-2026-5026 by @ibm-adarsh in #196
  • build(deps): bump github.com/modelcontextprotocol/go-sdk from 1.6.0 to 1.6.1 by @dependabot[bot] in #194
  • build(deps): bump golangci/golangci-lint-action from 9.2.0 to 9.2.1 by @dependabot[bot] in #193
  • build(deps): bump actions/checkout from 6.0.2 to 6.0.3 by @dependabot[bot] in #221
  • build(deps): bump golang from 1.26.3 to 1.26.4 by @dependabot[bot] in #220
  • build: bump Go toolchain to 1.26.4 for stdlib vuln fixes by @ibm-adarsh in #228
  • chore(deps): switch from dependabot to renovate by @Cali0707 in #232

New Contributors

Full Changelog: v0.1.0...v0.2.0