Skip to content

Commit 2d1a73a

Browse files
ChrisJBurnsclaude
andauthored
Fix remaining CRD field issues across K8s and vMCP docs (#723)
* Fix remaining CRD field issues across K8s and vMCP docs - mcp-server-entry: Fix remoteURL -> remoteUrl (5 occurrences) - configuration: Fix remoteURL -> remoteUrl (2 occurrences) - backend-discovery: Fix incomingAuth.oidc -> oidcConfigRef - failure-handling: Fix incomingAuth.oidc -> oidcConfigRef - optimizer: Fix modelCache.storageSize -> modelCache.size Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * Fix stale field names in prose and deprecated oidcConfig usage Update remoteURL references in prose text to match the remoteUrl YAML fixes, and replace deprecated inline oidcConfig with oidcConfigRef in the optimizer complete example. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * Add missing MCPOIDCConfig to backend discovery complete example The complete example referenced engineering-oidc via oidcConfigRef but never defined the MCPOIDCConfig resource, making the example incomplete for copy-paste usage. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 5f38647 commit 2d1a73a

5 files changed

Lines changed: 34 additions & 24 deletions

File tree

docs/toolhive/guides-k8s/mcp-server-entry.mdx

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ metadata:
100100
spec:
101101
groupRef:
102102
name: my-group
103-
remoteURL: https://mcp.example.com/mcp
103+
remoteUrl: https://mcp.example.com/mcp
104104
transport: streamable-http
105105
```
106106
@@ -131,7 +131,7 @@ When you apply an MCPServerEntry resource:
131131

132132
| Field | Description | Validation |
133133
| ----------- | ------------------------------------------ | -------------------------- |
134-
| `remoteURL` | URL of the remote MCP server | Must match `^https?://` |
134+
| `remoteUrl` | URL of the remote MCP server | Must match `^https?://` |
135135
| `transport` | Transport protocol for the remote server | `sse` or `streamable-http` |
136136
| `groupRef` | Name of the MCPGroup this entry belongs to | Required, minimum length 1 |
137137

@@ -166,7 +166,7 @@ metadata:
166166
spec:
167167
groupRef:
168168
name: my-group
169-
remoteURL: https://internal-mcp.corp.example.com/mcp
169+
remoteUrl: https://internal-mcp.corp.example.com/mcp
170170
transport: streamable-http
171171
# highlight-next-line
172172
externalAuthConfigRef:
@@ -200,7 +200,7 @@ metadata:
200200
spec:
201201
groupRef:
202202
name: my-group
203-
remoteURL: https://internal-mcp.corp.example.com/mcp
203+
remoteUrl: https://internal-mcp.corp.example.com/mcp
204204
transport: streamable-http
205205
# highlight-start
206206
caBundleRef:
@@ -225,7 +225,7 @@ metadata:
225225
spec:
226226
groupRef:
227227
name: my-group
228-
remoteURL: https://mcp.example.com/mcp
228+
remoteUrl: https://mcp.example.com/mcp
229229
transport: streamable-http
230230
# highlight-start
231231
headerForward:
@@ -282,7 +282,7 @@ metadata:
282282
spec:
283283
groupRef:
284284
name: engineering-tools
285-
remoteURL: https://mcp.partner.example.com/mcp
285+
remoteUrl: https://mcp.partner.example.com/mcp
286286
transport: streamable-http
287287
externalAuthConfigRef:
288288
name: remote-auth
@@ -397,7 +397,7 @@ kubectl get mcpserverentry <NAME> -n toolhive-system \
397397

398398
Common causes:
399399

400-
- **SSRF validation failure**: The `remoteURL` targets a blocked address range
400+
- **SSRF validation failure**: The `remoteUrl` targets a blocked address range
401401
(loopback, link-local, private network, or cloud metadata). Use an externally
402402
routable URL
403403
- **Missing MCPGroup**: The group referenced in `groupRef` doesn't exist. Create

docs/toolhive/guides-vmcp/backend-discovery.mdx

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ When vMCP starts in discovered mode:
9494
2. **Workload discovery**: Queries all MCPServer, MCPRemoteProxy, and
9595
MCPServerEntry resources in the group
9696
3. **Backend conversion**: For each workload:
97-
- Extracts endpoint URL (service URL for in-cluster workloads or `remoteURL`
97+
- Extracts endpoint URL (service URL for in-cluster workloads or `remoteUrl`
9898
for MCPServerEntry) and transport type
9999
- Resolves authentication from `externalAuthConfigRef` if configured
100100
- Adds metadata labels
@@ -398,7 +398,19 @@ spec:
398398
description: Engineering team MCP servers
399399
400400
---
401-
# 2. Create authentication config for GitHub backend
401+
# 2. Create shared OIDC config for incoming client authentication
402+
apiVersion: toolhive.stacklok.dev/v1alpha1
403+
kind: MCPOIDCConfig
404+
metadata:
405+
name: engineering-oidc
406+
namespace: toolhive-system
407+
spec:
408+
type: inline
409+
inline:
410+
issuer: https://auth.example.com
411+
412+
---
413+
# 3. Create authentication config for GitHub backend
402414
apiVersion: toolhive.stacklok.dev/v1alpha1
403415
kind: MCPExternalAuthConfig
404416
metadata:
@@ -415,7 +427,7 @@ spec:
415427
audience: github-api
416428
417429
---
418-
# 3. Create backend MCPServer
430+
# 4. Create backend MCPServer
419431
apiVersion: toolhive.stacklok.dev/v1alpha1
420432
kind: MCPServer
421433
metadata:
@@ -430,7 +442,7 @@ spec:
430442
name: github-token-config
431443
432444
---
433-
# 4. Create VirtualMCPServer (discovered mode)
445+
# 5. Create VirtualMCPServer (discovered mode)
434446
apiVersion: toolhive.stacklok.dev/v1alpha1
435447
kind: VirtualMCPServer
436448
metadata:
@@ -441,8 +453,8 @@ spec:
441453
name: engineering-tools
442454
incomingAuth:
443455
type: oidc
444-
oidc:
445-
issuer: https://auth.company.com
456+
oidcConfigRef:
457+
name: engineering-oidc
446458
audience: engineering-vmcp
447459
outgoingAuth:
448460
source: discovered # Discovers github-mcp and its auth config

docs/toolhive/guides-vmcp/configuration.mdx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ metadata:
6565
spec:
6666
groupRef:
6767
name: my-group # Reference to the MCPGroup
68-
remoteURL: https://mcp.context7.com/mcp
68+
remoteUrl: https://mcp.context7.com/mcp
6969
transport: streamable-http
7070
proxyPort: 8080
7171
@@ -106,7 +106,7 @@ metadata:
106106
spec:
107107
groupRef:
108108
name: my-group # Reference to the MCPGroup
109-
remoteURL: https://mcp.example.com/mcp
109+
remoteUrl: https://mcp.example.com/mcp
110110
transport: streamable-http # or sse
111111
```
112112

docs/toolhive/guides-vmcp/failure-handling.mdx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -290,9 +290,9 @@ spec:
290290
partialFailureMode: fail
291291
incomingAuth:
292292
type: oidc
293-
oidc:
294-
issuerRef:
295-
name: my-issuer
293+
oidcConfigRef:
294+
name: my-issuer
295+
audience: my-vmcp
296296
```
297297

298298
### Development with best effort

docs/toolhive/guides-vmcp/optimizer.mdx

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -274,7 +274,7 @@ spec:
274274
memory: '1Gi'
275275
modelCache:
276276
enabled: true
277-
storageSize: 5Gi
277+
size: 5Gi
278278
```
279279

280280
The VirtualMCPServer uses a shorter embedding timeout (15s) because the
@@ -300,11 +300,9 @@ spec:
300300
semanticDistanceThreshold: '0.8'
301301
incomingAuth:
302302
type: oidc
303-
oidcConfig:
304-
type: inline
305-
inline:
306-
issuer: https://auth.example.com
307-
audience: vmcp-example
303+
oidcConfigRef:
304+
name: my-oidc
305+
audience: vmcp-example
308306
```
309307

310308
## Next steps

0 commit comments

Comments
 (0)