A lightweight HTTP streaming gateway that bridges CData's stdio-based MCP servers with HTTP-based MCP clients like the MCP Inspector.
This gateway enables HTTP clients to communicate with CData MCP Servers (like Salesforce, SQL Server, etc.) that use stdio transport. It handles:
- Protocol translation between HTTP streaming and stdio
- Session management for multiple concurrent clients
- Interception of unsupported MCP methods
- HTTP to stdio bridge: Translates HTTP streaming requests to stdio communication
- Session management: Maintains a default shared session for all requests
- Method interception: Handles methods that CData servers don't implement (resources/list, logging/setLevel)
- Environment-based configuration: Uses .env file for configuration
- Full tool support: CData server properly returns all tools with connection name prefixes
npm install
Create a .env
file:
# Server Configuration
PORT=3000
LOG_LEVEL=info
# MCP Server Configuration
# For CData MCP Servers (Salesforce as an example)
# Windows
MCP_COMMAND=C:/Program Files/CData/CData MCP Server for Salesforce 2024/jre/bin/java.exe
MCP_ARGS=-jar,C:/Program Files/CData/CData MCP Server for Salesforce 2024/lib/cdata.mcp.salesforce.jar,salesforce_dev
# MacOS
MCP_COMMAND=/Applications/CData MCP Servers for Salesforce 2025.app/Contents/Payload/jre/Contents/Home/bin/java
MCP_ARGS=-Dfile.encoding=UTF-8,-jar,/Applications/CData MCP Servers for Salesforce 2025.app/Contents/Payload/lib/cdata.mcp.salesforce.jar,salesforce_dev
The last argument in MCP_ARGS
is used as the connection name for tool prefixing.
npm run dev
npm run build
npm start
# Start the gateway
npm run dev
# In another terminal, start the MCP Inspector
npx @modelcontextprotocol/inspector http://localhost:3000/mcp
When connected to a CData Salesforce server with connection name salesforce_dev
:
salesforce_dev_get_tables
- List all available tablessalesforce_dev_get_columns
- Get column information for a tablesalesforce_dev_run_query
- Execute SQL SELECT queriessalesforce_dev_run_nonquery
- Execute INSERT/UPDATE/DELETE statementssalesforce_dev_add_row
- Add a new record to a table
MCP (HTTP) Client
↓
HTTP/SSE Transport
↓
MCP Gateway (this project)
↓
stdio Transport
↓
CData MCP Server (Java process)
↓
Salesforce/SQL/etc API
src/
├── gateway.ts # Main gateway implementation
├── index.ts # Express server setup
└── logger.ts # Logging configuration
MIT