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
- Add release process issue templates and v0.1.0 release issue by @ArangoGutierrez in #81
- Add govulncheck workflow and local make target by @ibm-adarsh in #116
- ci: run govulncheck daily and on PRs to release branches by @ibm-adarsh in #137
- ci: fix lint issues on go 1.26 by @Cali0707 in #152
- ci: declare contents: read on lint, test, test-e2e by @arpitjain099 in #172
- feat: add new owners by @jaideepr97 in #198
- ci: increase e2e test timeout to 1 hour by @creydr in #210
- ci: add verify workflow for generated code by @creydr in #207
- Use the existing docker-buildx Makefile target for cloudbuilds too instead of push-images python script by @creydr in #225
- Add Codecov CI upload and project configuration by @ibm-adarsh in #229
- Increase controller-manager memory limit to 512Mi by @ibm-adarsh in #234
- chore: set tag to v0.2.0 by @jaideepr97 in #238
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
- @OchiengEd made their first contribution in #79
- @ibm-adarsh made their first contribution in #97
- @Venkatesh1505 made their first contribution in #122
- @isumitsolanki made their first contribution in #163
- @arpitjain099 made their first contribution in #172
- @creydr made their first contribution in #197
Full Changelog: v0.1.0...v0.2.0