diff --git a/docs/toolhive/guides-k8s/intro.md b/docs/toolhive/guides-k8s/intro.md
index e036dbfa..d40b5e01 100644
--- a/docs/toolhive/guides-k8s/intro.md
+++ b/docs/toolhive/guides-k8s/intro.md
@@ -36,18 +36,18 @@ The operator introduces a new Custom Resource Definition (CRD) called
flowchart TB
subgraph K8s["
Kubernetes cluster
"]
subgraph K8s1["**Deployment**"]
- Svc1["SSE Proxy
Service"] -- http/sse --> Proxy1["SSE Proxy
Pod"] -- stdio or http/sse --> MCP1["MCP Server
Pod"]
+ Svc1["HTTP Proxy
Service"] -- http --> Proxy1["HTTP Proxy
Pod"] -- stdio or http --> MCP1["MCP Server
Pod"]
Proxy1 -.->|creates| MCP1
end
subgraph K8s2["**Deployment**"]
- Svc2["SSE Proxy
Service"] -- http/sse --> Proxy2["SSE Proxy
Pod"] -- stdio or http/sse --> MCP2["MCP Server
Pod"]
+ Svc2["HTTP Proxy
Service"] -- http --> Proxy2["HTTP Proxy
Pod"] -- stdio or http --> MCP2["MCP Server
Pod"]
Proxy2 -.->|creates| MCP2
end
- Ingress["Ingress"] -- http/sse --> Svc1 & Svc2
+ Ingress["Ingress"] -- http --> Svc1 & Svc2
Operator["ToolHive
Operator"] -.->|creates| K8s1 & K8s2
end
- Client["MCP Client
[ex: Copilot]"] -- http/sse --> Ingress
+ Client["MCP Client
[ex: Copilot]"] -- http --> Ingress
```
## Installation
diff --git a/docs/toolhive/guides-k8s/run-mcp-k8s.md b/docs/toolhive/guides-k8s/run-mcp-k8s.md
index fb79abcc..f6f0287a 100644
--- a/docs/toolhive/guides-k8s/run-mcp-k8s.md
+++ b/docs/toolhive/guides-k8s/run-mcp-k8s.md
@@ -65,12 +65,12 @@ flowchart LR
Proxy -->|Attaches/STDIO| MCP
```
-### SSE transport flow
+### Streamable HTTP and SSE transport flow
-For MCP servers using Server-Sent Events (SSE) transport, the proxy creates both
-a pod and a headless service. This allows direct HTTP/SSE communication between
-the proxy and MCP server while maintaining network isolation and service
-discovery.
+For MCP servers using Server-Sent Events (SSE) or Stremable HTTP transport, the
+proxy creates both a pod and a headless service. This allows direct HTTP/SSE or
+HTTP/Streamable HTTP communication between the proxy and MCP server while
+maintaining network isolation and service discovery.
```mermaid
flowchart LR
@@ -87,8 +87,8 @@ flowchart LR
MCPPod["POD: MCP Server"]
end
- Client["Client"] -->|HTTP/SSE| Proxy
- Proxy -->|HTTP/SSE| MCP
+ Client["Client"] -->|HTTP| Proxy
+ Proxy -->|HTTP| MCP
MCPService --> MCPPod
```
@@ -117,7 +117,7 @@ metadata:
namespace: my-namespace # Update with your namespace
spec:
image: ghcr.io/stackloklabs/osv-mcp/server
- transport: sse
+ transport: streamable-http
port: 8080
permissionProfile:
type: builtin
@@ -153,8 +153,9 @@ When you apply an `MCPServer` resource, here's what happens:
service to handle client connections
4. The proxy creates the actual `MCPServer` pod containing your specified
container image
-5. For STDIO transport, the proxy attaches directly to the pod; for SSE
- transport, a headless service is created for direct pod communication
+5. For STDIO transport, the proxy attaches directly to the pod; for SSE and
+ Streamable HTTP transport, a headless service is created for direct pod
+ communication
6. Clients can now connect through the service → proxy → MCP server chain to use
the tools and resources (note: external clients will need an ingress
controller or similar mechanism to access the service from outside the
@@ -217,9 +218,8 @@ metadata:
namespace: development # Can be any namespace
spec:
image: ghcr.io/stackloklabs/gofetch/server
- transport: sse
+ transport: streamable-http
port: 8080
- targetPort: 8080
permissionProfile:
type: builtin
name: network
@@ -474,8 +474,8 @@ Common causes include:
selectors
- **Port configuration**: Verify the `port` field matches the MCP server's
listening port
-- **Transport mismatch**: Ensure the `transport` field (stdio/sse) matches the
- MCP server's capabilities
+- **Transport mismatch**: Ensure the `transport` field
+ (stdio/sse/streamable-http) matches the MCP server's capabilities
- **Network policies**: Check if network policies are blocking communication