diff --git a/static/api-specs/toolhive-crd-api.md b/static/api-specs/toolhive-crd-api.md index 184eeeee..1964c5a6 100644 --- a/static/api-specs/toolhive-crd-api.md +++ b/static/api-specs/toolhive-crd-api.md @@ -234,6 +234,7 @@ _Appears in:_ | --- | --- | --- | --- | | `name` _string_ | Name is the virtual MCP server name. | | | | `groupRef` _string_ | Group references an existing MCPGroup that defines backend workloads.
In Kubernetes, the referenced MCPGroup must exist in the same namespace. | | Required: \{\}
| +| `backends` _[vmcp.config.StaticBackendConfig](#vmcpconfigstaticbackendconfig) array_ | Backends defines pre-configured backend servers for static mode.
When OutgoingAuth.Source is "inline", this field contains the full list of backend
servers with their URLs and transport types, eliminating the need for K8s API access.
When OutgoingAuth.Source is "discovered", this field is empty and backends are
discovered at runtime via Kubernetes API. | | | | `incomingAuth` _[vmcp.config.IncomingAuthConfig](#vmcpconfigincomingauthconfig)_ | IncomingAuth configures how clients authenticate to the virtual MCP server.
When using the Kubernetes operator, this is populated by the converter from
VirtualMCPServerSpec.IncomingAuth and any values set here will be superseded. | | | | `outgoingAuth` _[vmcp.config.OutgoingAuthConfig](#vmcpconfigoutgoingauthconfig)_ | OutgoingAuth configures how the virtual MCP server authenticates to backends.
When using the Kubernetes operator, this is populated by the converter from
VirtualMCPServerSpec.OutgoingAuth and any values set here will be superseded. | | | | `aggregation` _[vmcp.config.AggregationConfig](#vmcpconfigaggregationconfig)_ | Aggregation defines tool aggregation and conflict resolution strategies.
Supports ToolConfigRef for Kubernetes-native MCPToolConfig resource references. | | | @@ -341,7 +342,7 @@ _Appears in:_ | Field | Description | Default | Validation | | --- | --- | --- | --- | -| `issuer` _string_ | Issuer is the OIDC issuer URL. | | | +| `issuer` _string_ | Issuer is the OIDC issuer URL. | | Pattern: `^https?://`
| | `clientId` _string_ | ClientID is the OAuth client ID. | | | | `clientSecretEnv` _string_ | ClientSecretEnv is the name of the environment variable containing the client secret.
This is the secure way to reference secrets - the actual secret value is never stored
in configuration files, only the environment variable name.
The secret value will be resolved from this environment variable at runtime. | | | | `audience` _string_ | Audience is the required token audience. | | | @@ -439,6 +440,27 @@ _Appears in:_ | `default` _[pkg.json.Any](#pkgjsonany)_ | Default is the fallback value if template expansion fails.
Type coercion is applied to match the declared Type. | | Schemaless: \{\}
| +#### vmcp.config.StaticBackendConfig + + + +StaticBackendConfig defines a pre-configured backend server for static mode. +This allows vMCP to operate without Kubernetes API access by embedding all backend +information directly in the configuration. + + + +_Appears in:_ +- [vmcp.config.Config](#vmcpconfigconfig) + +| Field | Description | Default | Validation | +| --- | --- | --- | --- | +| `name` _string_ | Name is the backend identifier.
Must match the backend name from the MCPGroup for auth config resolution. | | Required: \{\}
| +| `url` _string_ | URL is the backend's MCP server base URL. | | Pattern: `^https?://`
Required: \{\}
| +| `transport` _string_ | Transport is the MCP transport protocol: "sse" or "streamable-http"
Only network transports supported by vMCP client are allowed. | | Enum: [sse streamable-http]
Required: \{\}
| +| `metadata` _object (keys:string, values:string)_ | Refer to Kubernetes API documentation for fields of `metadata`. | | | + + #### vmcp.config.StepErrorHandling @@ -603,22 +625,22 @@ _Appears in:_ ## toolhive.stacklok.dev/v1alpha1 ### Resource Types -- [MCPExternalAuthConfig](#mcpexternalauthconfig) -- [MCPExternalAuthConfigList](#mcpexternalauthconfiglist) -- [MCPGroup](#mcpgroup) -- [MCPGroupList](#mcpgrouplist) -- [MCPRegistry](#mcpregistry) -- [MCPRegistryList](#mcpregistrylist) -- [MCPRemoteProxy](#mcpremoteproxy) -- [MCPRemoteProxyList](#mcpremoteproxylist) -- [MCPServer](#mcpserver) -- [MCPServerList](#mcpserverlist) -- [MCPToolConfig](#mcptoolconfig) -- [MCPToolConfigList](#mcptoolconfiglist) -- [VirtualMCPCompositeToolDefinition](#virtualmcpcompositetooldefinition) -- [VirtualMCPCompositeToolDefinitionList](#virtualmcpcompositetooldefinitionlist) -- [VirtualMCPServer](#virtualmcpserver) -- [VirtualMCPServerList](#virtualmcpserverlist) +- [api.v1alpha1.MCPExternalAuthConfig](#apiv1alpha1mcpexternalauthconfig) +- [api.v1alpha1.MCPExternalAuthConfigList](#apiv1alpha1mcpexternalauthconfiglist) +- [api.v1alpha1.MCPGroup](#apiv1alpha1mcpgroup) +- [api.v1alpha1.MCPGroupList](#apiv1alpha1mcpgrouplist) +- [api.v1alpha1.MCPRegistry](#apiv1alpha1mcpregistry) +- [api.v1alpha1.MCPRegistryList](#apiv1alpha1mcpregistrylist) +- [api.v1alpha1.MCPRemoteProxy](#apiv1alpha1mcpremoteproxy) +- [api.v1alpha1.MCPRemoteProxyList](#apiv1alpha1mcpremoteproxylist) +- [api.v1alpha1.MCPServer](#apiv1alpha1mcpserver) +- [api.v1alpha1.MCPServerList](#apiv1alpha1mcpserverlist) +- [api.v1alpha1.MCPToolConfig](#apiv1alpha1mcptoolconfig) +- [api.v1alpha1.MCPToolConfigList](#apiv1alpha1mcptoolconfiglist) +- [api.v1alpha1.VirtualMCPCompositeToolDefinition](#apiv1alpha1virtualmcpcompositetooldefinition) +- [api.v1alpha1.VirtualMCPCompositeToolDefinitionList](#apiv1alpha1virtualmcpcompositetooldefinitionlist) +- [api.v1alpha1.VirtualMCPServer](#apiv1alpha1virtualmcpserver) +- [api.v1alpha1.VirtualMCPServerList](#apiv1alpha1virtualmcpserverlist)