Skip to content

Commit f8ff0d6

Browse files
authored
Merge pull request #133 from IBM/streamablehttp_readme
Streamablehttp readme
2 parents f629788 + ab793f7 commit f8ff0d6

File tree

7 files changed

+48
-29
lines changed

7 files changed

+48
-29
lines changed

.spellcheck-en.txt

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -18,15 +18,15 @@ atm
1818
attr
1919
Auth
2020
backoff
21-
bam
2221
BAM
22+
bam
2323
bcg
2424
betterem
2525
blockdiag
2626
bracex
2727
changelog
28-
cli
2928
CLI
29+
cli
3030
cmihai
3131
commandline
3232
config
@@ -60,8 +60,8 @@ dir
6060
docbuilder
6161
docstring
6262
doctest
63-
docx
6463
DOCX
64+
docx
6565
duckduckgo
6666
env
6767
epilog
@@ -144,14 +144,14 @@ ICCA
144144
ICCA
145145
ico
146146
idna
147-
iframe
148147
IFRAME
148+
iframe
149149
img
150150
init
151151
inlinehilite
152152
instagram
153-
integrations
154153
Integrations
154+
integrations
155155
interactiv
156156
isdigit
157157
isort
@@ -163,24 +163,24 @@ Jinja
163163
jitter
164164
js
165165
js
166-
json
167166
JSON
167+
json
168168
JTC
169169
JTC
170170
JTC
171+
Jupyter
171172
jupyter
172173
jupyter
173-
Jupyter
174174
KMS
175175
KMS
176176
KMS
177177
Kubernetes
178178
Kubernetes
179179
Kubernetes
180180
lang
181+
Langchain
181182
langchain
182183
langchain
183-
Langchain
184184
lc
185185
lc
186186
levelname
@@ -191,16 +191,16 @@ lineno
191191
linenums
192192
linters
193193
llamaindex
194-
llm
195194
LLM
196-
llms
197-
llms
195+
llm
198196
Llms
199197
Llms
200198
Llms
201199
Llms
202200
Llms
203201
Llms
202+
llms
203+
llms
204204
magiclink
205205
Makefile
206206
manpage
@@ -216,10 +216,10 @@ microservice
216216
Mihai
217217
minify
218218
mkdir
219+
MKDOCS
219220
mkdocs
220221
mkdocs
221222
mkdocs
222-
MKDOCS
223223
mkdocscombine
224224
mktmp
225225
monkeypatched
@@ -245,11 +245,11 @@ NONINFRINGEMENT
245245
OCI
246246
OCI
247247
OCI
248-
oic
249-
oic
250248
OIC
251249
OIC
252250
OIC
251+
oic
252+
oic
253253
Onboarding
254254
Onboarding
255255
Onboarding
@@ -281,8 +281,8 @@ Plex
281281
png
282282
png
283283
podman
284-
pptx
285284
PPTX
285+
pptx
286286
pre
287287
Profiler
288288
Profiler
@@ -291,12 +291,12 @@ pwd
291291
py
292292
pycon
293293
pycparser
294-
pydantic
295294
Pydantic
295+
pydantic
296296
pydocstyle
297297
pygments
298-
pylint
299298
Pylint
299+
pylint
300300
pymdownx
301301
pymdownx
302302
pypi
@@ -364,26 +364,26 @@ stderr
364364
stdout
365365
Stmts
366366
Stmts
367+
STR
367368
str
368369
str
369-
STR
370370
striphtml
371371
stylesheet
372372
stylesheets
373373
sublicense
374374
sublicense
375-
summarizer
376375
Summarizer
376+
summarizer
377377
superfences
378378
svg
379379
sys
380380
systemprompt
381381
tasklist
382382
templating
383383
tmp
384+
TOC
384385
toc
385386
toc
386-
TOC
387387
TODO
388388
TODO.md
389389
toml
@@ -429,8 +429,8 @@ WBS
429429
WBS
430430
weasyprint
431431
webcolors
432-
webex
433432
Webex
433+
webex
434434
wikipedia
435435
wyre
436436
XFR

docs/docs/architecture/adr/003-expose-multi-transport-endpoints.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ The gateway will support the following built-in transports:
2323
- **HTTP JSON-RPC** (primary RPC interface)
2424
- **WebSocket** (bidirectional messaging)
2525
- **SSE (Server-Sent Events)** (for push-only event streaming)
26+
- **Streamable HTTP** (bidirectional, resumable streams, efficient MCP transport over HTTP)
2627
- **STDIO** (optional local CLI / subprocess transport)
2728

2829
Transport selection is dynamic, based on environment (`TRANSPORT_TYPE`) and route grouping. All transports share the same service layer and authentication mechanisms.

docs/docs/architecture/index.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ This gateway:
66

77
- Wraps REST/MCP tools and resources under JSON-RPC and streaming protocols
88
- Offers a pluggable backend (cache, auth, storage)
9-
- Exposes multiple transports (HTTP, WS, SSE, stdio)
9+
- Exposes multiple transports (HTTP, WS, SSE, StreamableHttp, stdio)
1010
- Automatically discovers and merges federated peers
1111

1212
## System Architecture

docs/docs/index.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ A flexible FastAPI-based gateway and router for **Model Context Protocol (MCP)**
2525

2626
## Key Features
2727

28-
- **Multi-Transport**: HTTP, WebSocket, SSE, and stdio with auto-negotiation
28+
- **Multi-Transport**: HTTP, WebSocket, SSE, Streamable HTTP and stdio with auto-negotiation
2929
- **Federation & Health Checks**: Auto-discovery (mDNS or static), syncing, monitoring
3030
- **Admin UI**: Real-time management (HTMX + Tailwind)
3131
- **Tool Wrapping**: REST / CLI / local functions with JSON-Schema validation

docs/docs/overview/index.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ This section introduces what the Gateway is, how it fits into the MCP ecosystem,
1515
- Protocol enforcement, health monitoring, and registry centralization
1616
- A visual Admin UI to manage everything in real time
1717

18-
Whether you're integrating REST APIs, local functions, or full LLM agents, MCP Gateway standardizes access and transport — over HTTP, WebSockets, SSE, or stdio.
18+
Whether you're integrating REST APIs, local functions, or full LLM agents, MCP Gateway standardizes access and transport — over HTTP, WebSockets, SSE, StreamableHttp or stdio.
1919

2020
---
2121

docs/docs/using/clients/copilot.md

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,9 +47,26 @@ HTTP or require local stdio, you can insert the bundled **`mcpgateway.wrapper`**
4747
python -m mcpgateway.utils.create_jwt_token -u admin --exp 10080 --secret my-test-key
4848
```
4949

50+
## 🔗 Option 2 · Streamable HTTP (best for prod / remote)
51+
52+
### 2 · Create `.vscode/mcp.json`
53+
54+
```json
55+
{
56+
"servers": {
57+
"mcp-gateway": {
58+
"type": "http",
59+
"url": "https://mcpgateway.example.com/servers/1/mcp/",
60+
"headers": {
61+
"Authorization": "Bearer <YOUR_JWT_TOKEN>"
62+
}
63+
}
64+
}
65+
}
66+
5067
---
5168

52-
## 🔗 Option 2 · Local stdio bridge (`mcpgateway.wrapper`)
69+
## 🔗 Option 3 · Local stdio bridge (`mcpgateway.wrapper`)
5370

5471
Perfect when:
5572

docs/docs/using/clients/mcp-inspector.md

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,11 @@ Point it at any MCP-compliant endpoint &mdash; a live Gateway **SSE** stream or
2020
2121
| Use-case | One-liner | What happens |
2222
|----------|-----------|--------------|
23-
| **Connect to Gateway (SSE)** |<br/>```bash<br/>npx @modelcontextprotocol/inspector \\<br/> --url http://localhost:4444/servers/1/sse \\<br/> --header "Authorization: Bearer $MCPGATEWAY_BEARER_TOKEN"<br/>``` | Inspector opens `http://localhost:5173` and attaches **directly** to the gateway stream. |
24-
| **2 · Spin up the stdio wrapper in-process** |<br/>```bash<br/>export MCP_AUTH_TOKEN=$MCPGATEWAY_BEARER_TOKEN<br/>export MCP_SERVER_CATALOG_URLS=http://localhost:4444/servers/1<br/><br/>npx @modelcontextprotocol/inspector \\<br/> python -m mcpgateway.wrapper<br/>``` | Inspector forks `python -m mcpgateway.wrapper`, then connects to its stdio port automatically. |
25-
| **3 · Same, but via uv / uvenv** |<br/>```bash<br/>npx @modelcontextprotocol/inspector \\<br/> uvenv run python -m mcpgateway.wrapper<br/>``` | Uses the super-fast **uv** virtual-env if you prefer. |
26-
| **4 · Wrapper already running** | Launch the wrapper in another shell, then:<br/>```bash<br/>npx @modelcontextprotocol/inspector --stdio<br/>``` | Inspector only opens the GUI and binds to the running stdio server on stdin/stdout. |
23+
| **1. Connect to Gateway (SSE)** |<br/>```bash<br/>npx @modelcontextprotocol/inspector \\<br/> --url http://localhost:4444/servers/1/sse \\<br/> --header "Authorization: Bearer $MCPGATEWAY_BEARER_TOKEN"<br/>``` | Inspector opens `http://localhost:5173` and attaches **directly** to the gateway stream. |
24+
| **2. Connect to Gateway (Streamable HTTP)** |<br/>```bash<br/>npx @modelcontextprotocol/inspector \\<br/> --url http://localhost:4444/servers/1/mcp/ \\<br/> --header "Authorization: Bearer $MCPGATEWAY_BEARER_TOKEN"<br/>``` | Inspector opens `http://localhost:5173` and attaches **directly** to the gateway stream. |
25+
| **3 · Spin up the stdio wrapper in-process** |<br/>```bash<br/>export MCP_AUTH_TOKEN=$MCPGATEWAY_BEARER_TOKEN<br/>export MCP_SERVER_CATALOG_URLS=http://localhost:4444/servers/1<br/><br/>npx @modelcontextprotocol/inspector \\<br/> python -m mcpgateway.wrapper<br/>``` | Inspector forks `python -m mcpgateway.wrapper`, then connects to its stdio port automatically. |
26+
| **4 · Same, but via uv / uvenv** |<br/>```bash<br/>npx @modelcontextprotocol/inspector \\<br/> uvenv run python -m mcpgateway.wrapper<br/>``` | Uses the super-fast **uv** virtual-env if you prefer. |
27+
| **5 · Wrapper already running** | Launch the wrapper in another shell, then:<br/>```bash<br/>npx @modelcontextprotocol/inspector --stdio<br/>``` | Inspector only opens the GUI and binds to the running stdio server on stdin/stdout. |
2728

2829
---
2930

0 commit comments

Comments
 (0)