Skip to content

Commit e53825b

Browse files
authored
Merge branch 'containers:main' into main
2 parents ffad1d1 + 4dcede1 commit e53825b

File tree

8 files changed

+85
-82
lines changed

8 files changed

+85
-82
lines changed

go.mod

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ require (
66
github.com/BurntSushi/toml v1.5.0
77
github.com/coreos/go-oidc/v3 v3.15.0
88
github.com/fsnotify/fsnotify v1.9.0
9-
github.com/go-jose/go-jose/v4 v4.1.1
10-
github.com/mark3labs/mcp-go v0.36.0
9+
github.com/go-jose/go-jose/v4 v4.1.2
10+
github.com/mark3labs/mcp-go v0.37.0
1111
github.com/pkg/errors v0.9.1
1212
github.com/spf13/afero v1.14.0
1313
github.com/spf13/cobra v1.9.1
@@ -47,11 +47,11 @@ require (
4747
github.com/containerd/platforms v0.2.1 // indirect
4848
github.com/cyphar/filepath-securejoin v0.4.1 // indirect
4949
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
50-
github.com/emicklei/go-restful/v3 v3.11.0 // indirect
50+
github.com/emicklei/go-restful/v3 v3.12.2 // indirect
5151
github.com/evanphx/json-patch v5.9.11+incompatible // indirect
5252
github.com/evanphx/json-patch/v5 v5.9.11 // indirect
5353
github.com/exponent-io/jsonpath v0.0.0-20210407135951-1de76d718b3f // indirect
54-
github.com/fatih/color v1.13.0 // indirect
54+
github.com/fatih/color v1.18.0 // indirect
5555
github.com/fxamacker/cbor/v2 v2.7.0 // indirect
5656
github.com/go-errors/errors v1.4.2 // indirect
5757
github.com/go-gorp/gorp/v3 v3.1.0 // indirect
@@ -83,9 +83,9 @@ require (
8383
github.com/lib/pq v1.10.9 // indirect
8484
github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de // indirect
8585
github.com/mailru/easyjson v0.9.0 // indirect
86-
github.com/mattn/go-colorable v0.1.13 // indirect
87-
github.com/mattn/go-isatty v0.0.17 // indirect
88-
github.com/mattn/go-runewidth v0.0.9 // indirect
86+
github.com/mattn/go-colorable v0.1.14 // indirect
87+
github.com/mattn/go-isatty v0.0.20 // indirect
88+
github.com/mattn/go-runewidth v0.0.16 // indirect
8989
github.com/mitchellh/copystructure v1.2.0 // indirect
9090
github.com/mitchellh/go-wordwrap v1.0.1 // indirect
9191
github.com/mitchellh/reflectwalk v1.0.2 // indirect
@@ -99,6 +99,7 @@ require (
9999
github.com/opencontainers/go-digest v1.0.0 // indirect
100100
github.com/opencontainers/image-spec v1.1.1 // indirect
101101
github.com/peterbourgon/diskv v2.0.1+incompatible // indirect
102+
github.com/rivo/uniseg v0.2.0 // indirect
102103
github.com/rubenv/sql-migrate v1.8.0 // indirect
103104
github.com/russross/blackfriday/v2 v2.1.0 // indirect
104105
github.com/shopspring/decimal v1.4.0 // indirect
@@ -112,15 +113,15 @@ require (
112113
github.com/xlab/treeprint v1.2.0 // indirect
113114
github.com/yosida95/uritemplate/v3 v3.0.2 // indirect
114115
go.yaml.in/yaml/v2 v2.4.2 // indirect
115-
go.yaml.in/yaml/v3 v3.0.3 // indirect
116+
go.yaml.in/yaml/v3 v3.0.4 // indirect
116117
golang.org/x/crypto v0.40.0 // indirect
117118
golang.org/x/net v0.42.0 // indirect
118119
golang.org/x/oauth2 v0.30.0 // indirect
119120
golang.org/x/sys v0.34.0 // indirect
120121
golang.org/x/term v0.33.0 // indirect
121122
golang.org/x/text v0.27.0 // indirect
122123
golang.org/x/time v0.12.0 // indirect
123-
google.golang.org/genproto/googleapis/rpc v0.0.0-20250721164621-a45f3dfb1074 // indirect
124+
google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 // indirect
124125
google.golang.org/grpc v1.68.1 // indirect
125126
google.golang.org/protobuf v1.36.6 // indirect
126127
gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect
@@ -130,7 +131,7 @@ require (
130131
k8s.io/component-base v0.33.3 // indirect
131132
k8s.io/kube-openapi v0.0.0-20250318190949-c8a335a9a2ff // indirect
132133
oras.land/oras-go/v2 v2.6.0 // indirect
133-
sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 // indirect
134+
sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730 // indirect
134135
sigs.k8s.io/kustomize/api v0.19.0 // indirect
135136
sigs.k8s.io/kustomize/kyaml v0.19.0 // indirect
136137
sigs.k8s.io/randfill v1.0.0 // indirect

go.sum

Lines changed: 23 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -73,16 +73,16 @@ github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c h1:+pKlWGMw7gf6bQ
7373
github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c/go.mod h1:Uw6UezgYA44ePAFQYUehOuCzmy5zmg/+nl2ZfMWGkpA=
7474
github.com/docker/go-metrics v0.0.1 h1:AgB/0SvBxihN0X8OR4SjsblXkbMvalQ8cjmtKQ2rQV8=
7575
github.com/docker/go-metrics v0.0.1/go.mod h1:cG1hvH2utMXtqgqqYE9plW6lDxS3/5ayHzueweSI3Vw=
76-
github.com/emicklei/go-restful/v3 v3.11.0 h1:rAQeMHw1c7zTmncogyy8VvRZwtkmkZ4FxERmMY4rD+g=
77-
github.com/emicklei/go-restful/v3 v3.11.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc=
76+
github.com/emicklei/go-restful/v3 v3.12.2 h1:DhwDP0vY3k8ZzE0RunuJy8GhNpPL6zqLkDf9B/a0/xU=
77+
github.com/emicklei/go-restful/v3 v3.12.2/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc=
7878
github.com/evanphx/json-patch v5.9.11+incompatible h1:ixHHqfcGvxhWkniF1tWxBHA0yb4Z+d1UQi45df52xW8=
7979
github.com/evanphx/json-patch v5.9.11+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
8080
github.com/evanphx/json-patch/v5 v5.9.11 h1:/8HVnzMq13/3x9TPvjG08wUGqBTmZBsCWzjTM0wiaDU=
8181
github.com/evanphx/json-patch/v5 v5.9.11/go.mod h1:3j+LviiESTElxA4p3EMKAB9HXj3/XEtnUf6OZxqIQTM=
8282
github.com/exponent-io/jsonpath v0.0.0-20210407135951-1de76d718b3f h1:Wl78ApPPB2Wvf/TIe2xdyJxTlb6obmF18d8QdkxNDu4=
8383
github.com/exponent-io/jsonpath v0.0.0-20210407135951-1de76d718b3f/go.mod h1:OSYXu++VVOHnXeitef/D8n/6y4QV8uLHSFXX4NeXMGc=
84-
github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w=
85-
github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk=
84+
github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM=
85+
github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU=
8686
github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg=
8787
github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
8888
github.com/foxcpp/go-mockdns v1.1.0 h1:jI0rD8M0wuYAxL7r/ynTrCQQq0BVqfB99Vgk7DlmewI=
@@ -97,8 +97,8 @@ github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxI
9797
github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og=
9898
github.com/go-gorp/gorp/v3 v3.1.0 h1:ItKF/Vbuj31dmV4jxA1qblpSwkl9g1typ24xoe70IGs=
9999
github.com/go-gorp/gorp/v3 v3.1.0/go.mod h1:dLEjIyyRNiXvNZ8PSmzpt1GsWAUK8kjVhEpjH8TixEw=
100-
github.com/go-jose/go-jose/v4 v4.1.1 h1:JYhSgy4mXXzAdF3nUx3ygx347LRXJRrpgyU3adRmkAI=
101-
github.com/go-jose/go-jose/v4 v4.1.1/go.mod h1:BdsZGqgdO3b6tTc6LSE56wcDbMMLuPsw5d4ZD5f94kA=
100+
github.com/go-jose/go-jose/v4 v4.1.2 h1:TK/7NqRQZfgAh+Td8AlsrvtPoUyiHh0LqVvokh+1vHI=
101+
github.com/go-jose/go-jose/v4 v4.1.2/go.mod h1:22cg9HWM1pOlnRiY+9cQYJ9XHmya1bYW8OeDM6Ku6Oo=
102102
github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI=
103103
github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
104104
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
@@ -187,18 +187,14 @@ github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de h1:9TO3cAIGXtEhn
187187
github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de/go.mod h1:zAbeS9B/r2mtpb6U+EI2rYA5OAXxsYw6wTamcNW+zcE=
188188
github.com/mailru/easyjson v0.9.0 h1:PrnmzHw7262yW8sTBwxi1PdJA3Iw/EKBa8psRf7d9a4=
189189
github.com/mailru/easyjson v0.9.0/go.mod h1:1+xMtQp2MRNVL/V1bOzuP3aP8VNwRW55fQUto+XFtTU=
190-
github.com/mark3labs/mcp-go v0.36.0 h1:rIZaijrRYPeSbJG8/qNDe0hWlGrCJ7FWHNMz2SQpTis=
191-
github.com/mark3labs/mcp-go v0.36.0/go.mod h1:T7tUa2jO6MavG+3P25Oy/jR7iCeJPHImCZHRymCn39g=
192-
github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
193-
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
194-
github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
195-
github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
196-
github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
197-
github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
198-
github.com/mattn/go-isatty v0.0.17 h1:BTarxUcIeDqL27Mc+vyvdWYSL28zpIhv3RoTdsLMPng=
199-
github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
200-
github.com/mattn/go-runewidth v0.0.9 h1:Lm995f3rfxdpd6TSmuVCHVb/QhupuXlYr8sCI/QdE+0=
201-
github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI=
190+
github.com/mark3labs/mcp-go v0.37.0 h1:BywvZLPRT6Zx6mMG/MJfxLSZQkTGIcJSEGKsvr4DsoQ=
191+
github.com/mark3labs/mcp-go v0.37.0/go.mod h1:T7tUa2jO6MavG+3P25Oy/jR7iCeJPHImCZHRymCn39g=
192+
github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE=
193+
github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8=
194+
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
195+
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
196+
github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc=
197+
github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
202198
github.com/mattn/go-sqlite3 v1.14.22 h1:2gZY6PC6kBnID23Tichd1K+Z0oS6nE/XwU+Vz/5o4kU=
203199
github.com/mattn/go-sqlite3 v1.14.22/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y=
204200
github.com/miekg/dns v1.1.57 h1:Jzi7ApEIzwEPLHWRcafCN9LZSBbqQpxjt/wpgvg7wcM=
@@ -257,6 +253,8 @@ github.com/redis/go-redis/extra/redisotel/v9 v9.0.5 h1:EfpWLLCyXw8PSM2/XNJLjI3Pb
257253
github.com/redis/go-redis/extra/redisotel/v9 v9.0.5/go.mod h1:WZjPDy7VNzn77AAfnAfVjZNvfJTYfPetfZk5yoSTLaQ=
258254
github.com/redis/go-redis/v9 v9.7.3 h1:YpPyAayJV+XErNsatSElgRZZVCwXX9QzkKYNvO7x0wM=
259255
github.com/redis/go-redis/v9 v9.7.3/go.mod h1:bGUrSggJ9X9GUmZpZNEOQKaANxSGgOEBRltRTZHSvrA=
256+
github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY=
257+
github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
260258
github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII=
261259
github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o=
262260
github.com/rubenv/sql-migrate v1.8.0 h1:dXnYiJk9k3wetp7GfQbKJcPHjVJL6YK19tKj8t2Ns0o=
@@ -358,8 +356,8 @@ go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8=
358356
go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E=
359357
go.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI=
360358
go.yaml.in/yaml/v2 v2.4.2/go.mod h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU=
361-
go.yaml.in/yaml/v3 v3.0.3 h1:bXOww4E/J3f66rav3pX3m8w6jDE4knZjGOw8b5Y6iNE=
362-
go.yaml.in/yaml/v3 v3.0.3/go.mod h1:tBHosrYAkRZjRAOREWbDnBXUf08JOwYq++0QNwQiWzI=
359+
go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc=
360+
go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg=
363361
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
364362
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
365363
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
@@ -384,13 +382,10 @@ golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw=
384382
golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
385383
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
386384
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
387-
golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
388-
golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
389385
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
390386
golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
391-
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
392387
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
393-
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
388+
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
394389
golang.org/x/sys v0.34.0 h1:H5Y5sJ2L2JRdyv7ROF1he/lPdvFsd0mJHFw2ThKHxLA=
395390
golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
396391
golang.org/x/term v0.33.0 h1:NuFncQrRcaRvVmgRkvM3j/F00gWIAlcmlB8ACEKmGIg=
@@ -416,8 +411,8 @@ gomodules.xyz/jsonpatch/v2 v2.4.0/go.mod h1:AH3dM2RI6uoBZxn3LVrfvJ3E0/9dG4cSrbuB
416411
google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80 h1:KAeGQVN3M9nD0/bQXnr/ClcEMJ968gUXJQ9pwfSynuQ=
417412
google.golang.org/genproto/googleapis/api v0.0.0-20241209162323-e6fa225c2576 h1:CkkIfIt50+lT6NHAVoRYEyAvQGFM7xEwXUUywFvEb3Q=
418413
google.golang.org/genproto/googleapis/api v0.0.0-20241209162323-e6fa225c2576/go.mod h1:1R3kvZ1dtP3+4p4d3G8uJ8rFk/fWlScl38vanWACI08=
419-
google.golang.org/genproto/googleapis/rpc v0.0.0-20250721164621-a45f3dfb1074 h1:qJW29YvkiJmXOYMu5Tf8lyrTp3dOS+K4z6IixtLaCf8=
420-
google.golang.org/genproto/googleapis/rpc v0.0.0-20250721164621-a45f3dfb1074/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A=
414+
google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 h1:MAKi5q709QWfnkkpNQ0M12hYJ1+e8qYVDyowc4U1XZM=
415+
google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A=
421416
google.golang.org/grpc v1.68.1 h1:oI5oTa11+ng8r8XMMN7jAOmWfPZWbYpCFaMUTACxkM0=
422417
google.golang.org/grpc v1.68.1/go.mod h1:+q1XYFJjShcqn0QZHvCyeR4CXPA+llXIeUIfIe00waw=
423418
google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY=
@@ -466,8 +461,8 @@ sigs.k8s.io/controller-runtime v0.21.0 h1:CYfjpEuicjUecRk+KAeyYh+ouUBn4llGyDYytI
466461
sigs.k8s.io/controller-runtime v0.21.0/go.mod h1:OSg14+F65eWqIu4DceX7k/+QRAbTTvxeQSNSOQpukWM=
467462
sigs.k8s.io/controller-runtime/tools/setup-envtest v0.0.0-20250211091558-894df3a7e664 h1:xC7x7FsPURJYhZnWHsWFd7nkdD/WRtQVWPC28FWt85Y=
468463
sigs.k8s.io/controller-runtime/tools/setup-envtest v0.0.0-20250211091558-894df3a7e664/go.mod h1:Cq9jUhwSYol5tNB0O/1vLYxNV9KqnhpvEa6HvJ1w0wY=
469-
sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 h1:gBQPwqORJ8d8/YNZWEjoZs7npUVDpVXUUOFfW6CgAqE=
470-
sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8/go.mod h1:mdzfpAEoE6DHQEN0uh9ZbOCuHbLK5wOm7dK4ctXE9Tg=
464+
sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730 h1:IpInykpT6ceI+QxKBbEflcR5EXP7sU1kvOlxwZh5txg=
465+
sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730/go.mod h1:mdzfpAEoE6DHQEN0uh9ZbOCuHbLK5wOm7dK4ctXE9Tg=
471466
sigs.k8s.io/kustomize/api v0.19.0 h1:F+2HB2mU1MSiR9Hp1NEgoU2q9ItNOaBJl0I4Dlus5SQ=
472467
sigs.k8s.io/kustomize/api v0.19.0/go.mod h1:/BbwnivGVcBh1r+8m3tH1VNxJmHSk1PzP5fkP6lbL1o=
473468
sigs.k8s.io/kustomize/kyaml v0.19.0 h1:RFge5qsO1uHhwJsu3ipV7RNolC7Uozc0jUBC/61XSlA=

npm/kubernetes-mcp-server/bin/index.js

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,26 @@ const resolveBinaryPath = () => {
2121
}
2222
};
2323

24-
childProcess.execFileSync(resolveBinaryPath(), process.argv.slice(2), {
24+
const child = childProcess.spawn(resolveBinaryPath(), process.argv.slice(2), {
2525
stdio: 'inherit',
2626
});
2727

28+
const handleSignal = () => (signal) => {
29+
console.log(`Received ${signal}, terminating child process...`);
30+
if (child && !child.killed) {
31+
child.kill(signal);
32+
}
33+
};
34+
35+
['SIGTERM', 'SIGINT', 'SIGHUP'].forEach((signal) => {
36+
process.on(signal, handleSignal(signal));
37+
});
38+
39+
child.on('close', (code, signal) => {
40+
if (signal) {
41+
console.log(`Child process terminated by signal: ${signal}`);
42+
process.exit(128 + (signal === 'SIGTERM' ? 15 : signal === 'SIGINT' ? 2 : 1));
43+
} else {
44+
process.exit(code || 0);
45+
}
46+
});

pkg/http/authorization.go

Lines changed: 18 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ func AuthorizationMiddleware(requireOAuth bool, serverURL string, oidcProvider *
5656
// rejected already.
5757
claims, err := ParseJWTClaims(token)
5858
if err == nil && claims != nil {
59-
err = claims.Validate(audience)
59+
err = claims.Validate(r.Context(), audience, oidcProvider)
6060
}
6161
if err != nil {
6262
klog.V(1).Infof("Authentication failed - JWT validation error: %s %s from %s, error: %v", r.Method, r.URL.Path, r.RemoteAddr, err)
@@ -70,21 +70,6 @@ func AuthorizationMiddleware(requireOAuth bool, serverURL string, oidcProvider *
7070
return
7171
}
7272

73-
if oidcProvider != nil {
74-
// If OIDC Provider is configured, this token must be validated against it.
75-
if err := validateTokenWithOIDC(r.Context(), oidcProvider, token, audience); err != nil {
76-
klog.V(1).Infof("Authentication failed - OIDC token validation error: %s %s from %s, error: %v", r.Method, r.URL.Path, r.RemoteAddr, err)
77-
78-
if serverURL == "" {
79-
w.Header().Set("WWW-Authenticate", fmt.Sprintf(`Bearer realm="Kubernetes MCP Server", audience="%s", error="invalid_token"`, audience))
80-
} else {
81-
w.Header().Set("WWW-Authenticate", fmt.Sprintf(`Bearer realm="Kubernetes MCP Server", audience="%s"", resource_metadata="%s%s", error="invalid_token"`, audience, serverURL, oauthProtectedResourceEndpoint))
82-
}
83-
http.Error(w, "Unauthorized: Invalid token", http.StatusUnauthorized)
84-
return
85-
}
86-
}
87-
8873
// Scopes are likely to be used for authorization.
8974
scopes := claims.GetScopes()
9075
klog.V(2).Infof("JWT token validated - Scopes: %v", scopes)
@@ -138,6 +123,7 @@ var allSignatureAlgorithms = []jose.SignatureAlgorithm{
138123

139124
type JWTClaims struct {
140125
jwt.Claims
126+
Token string `json:"-"`
141127
Scope string `json:"scope,omitempty"`
142128
}
143129

@@ -149,10 +135,21 @@ func (c *JWTClaims) GetScopes() []string {
149135
}
150136

151137
// Validate Checks if the JWT claims are valid and if the audience matches the expected one.
152-
func (c *JWTClaims) Validate(audience string) error {
153-
return c.Claims.Validate(jwt.Expected{
154-
AnyAudience: jwt.Audience{audience},
155-
})
138+
func (c *JWTClaims) Validate(ctx context.Context, audience string, provider *oidc.Provider) error {
139+
if err := c.Claims.Validate(jwt.Expected{AnyAudience: jwt.Audience{audience}}); err != nil {
140+
return fmt.Errorf("JWT token validation error: %v", err)
141+
}
142+
if provider != nil {
143+
verifier := provider.Verifier(&oidc.Config{
144+
ClientID: audience,
145+
})
146+
147+
_, err := verifier.Verify(ctx, c.Token)
148+
if err != nil {
149+
return fmt.Errorf("OIDC token validation error: %v", err)
150+
}
151+
}
152+
return nil
156153
}
157154

158155
func ParseJWTClaims(token string) (*JWTClaims, error) {
@@ -162,18 +159,6 @@ func ParseJWTClaims(token string) (*JWTClaims, error) {
162159
}
163160
claims := &JWTClaims{}
164161
err = tkn.UnsafeClaimsWithoutVerification(claims)
162+
claims.Token = token
165163
return claims, err
166164
}
167-
168-
func validateTokenWithOIDC(ctx context.Context, provider *oidc.Provider, token, audience string) error {
169-
verifier := provider.Verifier(&oidc.Config{
170-
ClientID: audience,
171-
})
172-
173-
_, err := verifier.Verify(ctx, token)
174-
if err != nil {
175-
return fmt.Errorf("JWT token verification failed: %v", err)
176-
}
177-
178-
return nil
179-
}

pkg/http/authorization_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ func TestJWTTokenValidate(t *testing.T) {
111111
t.Fatalf("expected no error for expired token parsing, got %v", err)
112112
}
113113

114-
err = claims.Validate("kubernetes-mcp-server")
114+
err = claims.Validate(t.Context(), "kubernetes-mcp-server", nil)
115115
if err == nil {
116116
t.Fatalf("expected error for expired token, got nil")
117117
}
@@ -130,7 +130,7 @@ func TestJWTTokenValidate(t *testing.T) {
130130
t.Fatalf("expected claims to be returned, got nil")
131131
}
132132

133-
err = claims.Validate("kubernetes-mcp-server")
133+
err = claims.Validate(t.Context(), "kubernetes-mcp-server", nil)
134134
if err != nil {
135135
t.Fatalf("expected no error for valid audience, got %v", err)
136136
}
@@ -145,7 +145,7 @@ func TestJWTTokenValidate(t *testing.T) {
145145
t.Fatalf("expected claims to be returned, got nil")
146146
}
147147

148-
err = claims.Validate("missing-audience")
148+
err = claims.Validate(t.Context(), "missing-audience", nil)
149149
if err == nil {
150150
t.Fatalf("expected error for token with wrong audience, got nil")
151151
}

pkg/http/http.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ func Serve(ctx context.Context, mcpServer *mcp.Server, staticConfig *config.Stat
8484
defer cancel()
8585

8686
sigChan := make(chan os.Signal, 1)
87-
signal.Notify(sigChan, syscall.SIGINT, syscall.SIGTERM)
87+
signal.Notify(sigChan, syscall.SIGINT, syscall.SIGHUP, syscall.SIGTERM)
8888

8989
serverErr := make(chan error, 1)
9090
go func() {

0 commit comments

Comments
 (0)