mcp-stdio-to-streamable-http-adapter MCP Server
LocalAbout mcp-stdio-to-streamable-http-adapter MCP Server
A STDIO MCP server that relays requests from STDIO-only MCP clients to a Streamable HTTP MCP server. It suits developers who want clients without native Streamable HTTP support to reach their remote servers. The project can also serve as a template for publishing a fixed Streamable HTTP endpoint as an installable STDIO package.
Key features
- 01Relays STDIO requests to a Streamable HTTP server
- 02Target address set through the URI environment variable
- 03Optional Bearer token sent in the Authorization header
- 04Named configurations for running multiple servers
Use cases
- 01Using a Streamable HTTP MCP server in Claude Desktop
- 02Connecting a remote server in LibreChat through STDIO
- 03Distributing a Streamable HTTP server through a STDIO install method
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
We haven’t collected a package or remote endpoint for this server. Follow the instructions in the project README.
Tools
Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.
Details
From the project READMEmcp-stdio-to-streamable-http-adapter MCP Server
Integrate any MCP Client that has STDIO MCP Server Support (most do) with the Streamable HTTP MCP Servers
If you have a Streamable HTTP MCP Server, forking this, hardcoding the URI and publishing will give you a repo that you can point to, add to directories and let people use via STDIO.
Note: This has similarities to the mcp-remote package
Why?
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.

Installation
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
Env Vars
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.
Configuration
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:

Development
Install dependencies:
npm install
Build the server:
npm run build
For development with auto-rebuild:
npm run watch
Debugging
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.
Acknowledgements
- Obviously the modelcontextprotocol and Anthropic teams for the MCP Specification and integration into Claude Desktop. https://modelcontextprotocol.io/introduction
- PyroPrompts for sponsoring this project. Use code
MCPSTREAMABLEADAPTERfor 20 free automation credits on Pyroprompts.
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.