by pyroprompts
A proxy that enables MCP Clients supporting STDIO to interact with Streamable HTTP MCP Servers, bridging the gap between different MCP transport protocols.
mcp-stdio-to-streamable-http-adapter is a proxy that allows MCP (Model Context Protocol) clients that only support STDIO (Standard Input/Output) to connect and interact with MCP servers that use the newer Streamable HTTP transport. This project addresses the current challenge where many MCP clients have not yet adopted support for Streamable HTTP, leaving developers in a difficult position when building Streamable HTTP MCP servers.
This adapter can be used by configuring it within your MCP client, such as Claude Desktop or LibreChat. It acts as an intermediary, relaying communication from your STDIO-based client to a Streamable HTTP MCP Server.
Installation:
Via npx
(recommended for Claude Desktop):
Configure your Claude Desktop claude_desktop_config.json
file to use npx
to run the adapter. You'll need to specify the URI
of your Streamable HTTP MCP Server and optionally MCP_NAME
and BEARER_TOKEN
.
{
"mcpServers": {
"my-saas-app-development": {
"command": "npx",
"args": [
"@pyroprompts/mcp-stdio-to-streamable-http-adapter"
],
"env": {
"URI": "http://localhost:3002/mcp",
"MCP_NAME": "local-custom-streamable-http-adapter"
}
}
}
}
Cloning the repository (for local development/custom builds):
Clone the repository, build the project, and then configure your MCP client to execute the built index.js
file.
{
"mcpServers": {
"my-saas-app-development": {
"command": "node",
"args": [
"/path/to/mcp-stdio-to-streamable-http-adapter/build/index.js"
],
"env": {
"URI": "http://localhost:3002/mcp",
"MCP_NAME": "local-custom-streamable-http-adapter"
}
}
}
}
For LibreChat:
Configure LibreChat's librechat.yaml
to use the adapter as a stdio
type server.
my-saas-app-development:
type: stdio
command: npx
args:
- -y
- @pyroprompts/mcp-stdio-to-streamable-http-adapter
env:
URI: "http://localhost:3002/mcp",
MCP_NAME: "my-custom-saas-app"
PATH: '/usr/local/bin:/usr/bin:/bin'
Environment Variables:
URI
: The URL of the Streamable HTTP MCP Server (required).MCP_NAME
: The name of the MCP Server (optional, but recommended for multiple configurations).BEARER_TOKEN
: Bearer token for authentication with the Streamable HTTP MCP Server (optional).Development:
npm install
: Install dependencies.npm run build
: Build the server.npm run watch
: For development with auto-rebuild.npm run inspector
: Use the MCP Inspector for debugging.npx
or by directly running the built JavaScript file.Q: Why was this project created? A: The project was created because while the MCP Spec added Streamable HTTP Transport, many MCP clients have not yet adopted support for it. This leaves developers in an awkward position when building Streamable HTTP MCP servers, as clients cannot easily connect to them. This adapter bridges that gap.
Q: Is this similar to mcp-remote
?
A: Yes, it has similarities to the mcp-remote
package, but this project specifically focuses on bridging STDIO to Streamable HTTP.
Q: What are the required environment variables?
A: The URI
of the Streamable HTTP MCP Server is required. MCP_NAME
and BEARER_TOKEN
are optional but can be useful for specific configurations.
Q: How can I debug my MCP server when using this adapter?
A: You can use the MCP Inspector by running npm run inspector
, which provides a URL to access debugging tools in your browser.
Integrate any MCP Client that has STDIO MCP Server Support (most do) with the Streamable HTTP MCP Servers
Note: This has similarities to the mcp-remote package
The MCP Spec to add a Streamable HTTP Transport landed end of March 2025 and as of the end of April, no clients have adopted support. The typescript-sdk has merged the code, but not released. The Python SDK is still in development to support it. The Inspector supports it, but that's it.
This leaves developers in an awkward position. Develop the MCP Server using STDIO or SSE (deprecated) so it works with clients or develop with Streamable HTTP transport, but nobody can use it.
I (ferrants) want to start integrating the Streamable HTTP MCP Servers beyond just the inspector, so I need a way to connect them to clients and LLMs right away!
This package aims to bridge the cap by being a STDIO MCP Server that relays to your Streamable HTTP MCP Server. This makes all MCP Clients support Streamable HTTP right away. And now developers can develop the Streamable HTTP MCP Servers and provide an installation method.
To add OpenAI to Claude Desktop, add the server config:
On MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json
On Windows: %APPDATA%/Claude/claude_desktop_config.json
URI
: The URL of the Streamable HTTP MCP Server. This is required.MCP_NAME
: The name of the MCP Server. This is optional. If you configure multiple, this is required so they do not have the same names.BEARER_TOKEN
: The Bearer token for the Streamable HTTP MCP Server. This is optional. If specified, this will be sent along in the Authorization header.You can use it via npx
in your Claude Desktop configuration like this:
{
"mcpServers": {
"my-saas-app-development": {
"command": "npx",
"args": [
"@pyroprompts/mcp-stdio-to-streamable-http-adapter"
],
"env": {
"URI": "http://localhost:3002/mcp",
"MCP_NAME": "local-custom-streamable-http-adapter"
}
}
}
}
Or, if you clone the repo, you can build and use in your Claude Desktop configuration like this:
{
"mcpServers": {
"my-saas-app-development": {
"command": "node",
"args": [
"/path/to/mcp-stdio-to-streamable-http-adapter/build/index.js"
],
"env": {
"URI": "http://localhost:3002/mcp",
"MCP_NAME": "local-custom-streamable-http-adapter"
}
}
}
}
You can add multiple providers by referencing the same MCP server multiple times, but with different env arguments:
{
"mcpServers": {
"my-saas-app-development": {
"command": "node",
"args": [
"/path/to/mcp-stdio-to-streamable-http-adapter/build/index.js"
],
"env": {
"URI": "http://localhost:3002/mcp",
"MCP_NAME": "local-custom-streamable-http-adapter"
}
},
"pyroprompts": {
"command": "node",
"args": [
"/path/to/mcp-stdio-to-streamable-http-adapter/build/index.js"
],
"env": {
"URI": "https://api.pyroprompts.com/mcp",
"MCP_NAME": "pyroprompts",
"BEARER_TOKEN": "abcdefg"
}
}
}
}
With these three, you'll see a tool for each in the Claude Desktop Home:
And then you can chat with other LLMs and it shows in chat like this:
Or, configure in LibreChat like:
my-saas-app-development:
type: stdio
command: npx
args:
- -y
- @pyroprompts/mcp-stdio-to-streamable-http-adapter
env:
URI: "http://localhost:3002/mcp",
MCP_NAME: "my-custom-saas-app"
PATH: '/usr/local/bin:/usr/bin:/bin'
And it shows in LibreChat:
Install dependencies:
npm install
Build the server:
npm run build
For development with auto-rebuild:
npm run watch
Since MCP servers communicate over stdio, debugging can be challenging. We recommend using the MCP Inspector, which is available as a package script:
npm run inspector
The Inspector will provide a URL to access debugging tools in your browser.
MCPSTREAMABLEADAPTER
for 20 free automation credits on Pyroprompts.Reviews feature coming soon
Stay tuned for community discussions and feedback