You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* Update stacklok/toolhive to v0.32.0
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
* Refresh reference assets for toolhive v0.32.0
* Document toolhive v0.32.0 user-facing changes
Cover the new --allowed-origins flag, XAA outgoing-auth strategy,
OpenAI-compatible embedding provider, EmbeddedAuthServer
insecureAllowHTTP, and MCPRemoteProxy OIDC CA bundle behavior.
* Smooth out two spaced-hyphen separators in v0.32.0 docs
* Drop OIDC CA bundle admonition in remote proxy docs
The admonition described expected behavior of caBundleRef (now fixed
upstream in a bugfix), reading like a new feature. The actionable
guidance to set caBundleRef already lives in the Production security
warning, so the callout was redundant.
Co-authored-by: Dan Barr <danbarr@users.noreply.github.com>
* Tighten Origin headers section in run-mcp-servers
Merge redundant non-loopback explanations into one paragraph
and fix an ambiguous loopback-address parenthetical.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
* Drop unsupported XAA example, fix optimizer admonition
XAA isn't wired into the Kubernetes operator: the converter
discards spec.config.outgoingAuth, and MCPExternalAuthConfig's
type enum doesn't include xaa, so the CRD example in
authentication.mdx can't work today. Remove it rather than
document a feature that silently falls back to unauthenticated.
Also scope the "EmbeddingServer is always required" admonition
in optimizer.mdx to the default tei provider; it doesn't apply
when embeddingService is set directly, e.g. via the
OpenAI-compatible provider added in this release.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
---------
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
Co-authored-by: Dan Barr <danbarr@users.noreply.github.com>
Co-authored-by: Dan Barr <6922515+danbarr@users.noreply.github.com>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: docs/toolhive/reference/cli/thv_proxy.md
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -97,6 +97,7 @@ thv proxy [flags] SERVER_NAME
97
97
### Options
98
98
99
99
```
100
+
--allowed-origins stringArray Exact-match allowlist for the HTTP Origin header (repeatable). Recommended when binding publicly; loopback binds derive a default allowlist automatically, non-loopback binds log a warning when no value is supplied. Example: https://my-mcp.example.com
100
101
-h, --help help for proxy
101
102
--host string Host for the HTTP proxy to listen on (IP or hostname) (default "127.0.0.1")
102
103
--oidc-audience string Expected audience for the token
Copy file name to clipboardExpand all lines: docs/toolhive/reference/cli/thv_run.md
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -112,6 +112,7 @@ thv run [flags] SERVER_OR_IMAGE_OR_PROTOCOL [-- ARGS...]
112
112
113
113
```
114
114
--allow-docker-gateway Allow outbound connections to Docker gateway addresses (host.docker.internal, gateway.docker.internal, 172.17.0.1). Only applies when --isolate-network is set. These are blocked by default even when insecure_allow_all is enabled.
115
+
--allowed-origins stringArray Exact-match allowlist for the HTTP Origin header (repeatable). Recommended when binding publicly; loopback binds derive a default allowlist automatically, non-loopback binds log a warning when no value is supplied. Example: https://my-mcp.example.com
115
116
--audit-config string Path to the audit configuration file
116
117
--authz-config string Path to the authorization configuration file
117
118
--ca-cert string Path to a custom CA certificate file to use for container builds
Copy file name to clipboardExpand all lines: static/api-specs/toolhive-crds/mcpexternalauthconfigs.schema.json
+7-2Lines changed: 7 additions & 2 deletions
Original file line number
Diff line number
Diff line change
@@ -128,7 +128,7 @@
128
128
"description": "EmbeddedAuthServer configures an embedded OAuth2/OIDC authorization server\nOnly used when Type is \"embeddedAuthServer\"",
129
129
"properties": {
130
130
"authorizationEndpointBaseUrl": {
131
-
"description": "AuthorizationEndpointBaseURL overrides the base URL used for the authorization_endpoint\nin the OAuth discovery document. When set, the discovery document will advertise\n`{authorizationEndpointBaseUrl}/oauth/authorize` instead of `{issuer}/oauth/authorize`.\nAll other endpoints (token, registration, JWKS) remain derived from the issuer.\nThis is useful when the browser-facing authorization endpoint needs to be on a\ndifferent host than the issuer used for backend-to-backend calls.\nMust be a valid HTTPS URL (or HTTP for localhost) without query, fragment, or trailing slash.",
131
+
"description": "AuthorizationEndpointBaseURL overrides the base URL used for the authorization_endpoint\nin the OAuth discovery document. When set, the discovery document will advertise\n`{authorizationEndpointBaseUrl}/oauth/authorize` instead of `{issuer}/oauth/authorize`.\nAll other endpoints (token, registration, JWKS) remain derived from the issuer.\nThis is useful when the browser-facing authorization endpoint needs to be on a\ndifferent host than the issuer used for backend-to-backend calls.\nMust be a valid HTTPS URL (or HTTP for localhost, or HTTP for trusted in-cluster hosts\nwhen insecureAllowHTTP is true) without query, fragment, or trailing slash.",
132
132
"pattern": "^https?://[^\\s?#]+[^/\\s?#]$",
133
133
"type": "string"
134
134
},
@@ -195,8 +195,13 @@
195
195
"type": "array",
196
196
"x-kubernetes-list-type": "atomic"
197
197
},
198
+
"insecureAllowHTTP": {
199
+
"default": false,
200
+
"description": "InsecureAllowHTTP permits an http:// issuer URL for non-localhost hosts.\nOnly set this for in-cluster Kubernetes deployments where traffic between\npods traverses a trusted network (e.g. the in-cluster service mesh).\nProduction deployments reachable outside the cluster MUST use https://.\n\nOn VirtualMCPServer: when false (the default), http:// issuers for non-localhost\nhosts are rejected at reconcile time with an AuthServerConfigValidated=False condition.\n\nOn MCPServer and MCPRemoteProxy (via MCPExternalAuthConfig): this field is\nstructurally present but enforcement is deferred to pod startup via Config.Validate();\na misconfigured issuer will cause the pod to crash at startup rather than surface\nas an operator condition.",
201
+
"type": "boolean"
202
+
},
198
203
"issuer": {
199
-
"description": "Issuer is the issuer identifier for this authorization server.\nThis will be included in the \"iss\" claim of issued tokens.\nMust be a valid HTTPS URL (or HTTP for localhost) without query, fragment, or trailing slash (per RFC 8414).",
204
+
"description": "Issuer is the issuer identifier for this authorization server.\nThis will be included in the \"iss\" claim of issued tokens.\nMust be a valid HTTPS URL (or HTTP for localhost, or HTTP for trusted in-cluster hosts when\ninsecureAllowHTTP is true) without query, fragment, or trailing slash (per RFC 8414).",
0 commit comments