Use Case
You want to:- Use local stdio-based MCP servers (Brave, Tavily)
- Connect to remote HTTP-based MCP servers (Linear)
- Expose everything through a single unified interface
- Let your host client use one consistent protocol
The Transport Problem
Different MCP servers use different transports:- stdio: Process-based, launched with
commandandargs - HTTP: Network-based, connected via
url - SSE: Server-sent events (also HTTP-based)
- Accepting connections from hosts via stdio OR HTTP
- Connecting to upstreams via stdio, HTTP, or SSE
- Bridging between these transports transparently
Complete Mixed Transport Example
UMCP Configuration
Here’s a full configuration combining both transport types:Host Client Configuration Options
UMCP can serve via stdio OR HTTP. Choose based on your host client’s needs.Option 1: Serve via stdio (Recommended)
Most MCP clients expect stdio:Option 2: Serve via HTTP
If your host client supports HTTP connections:Transport Flow Diagram
Resulting Tools
Regardless of upstream transports, your host sees a unified set of tools:web_search.brave.search(from stdio server)web_search.tavily.search(from stdio server)project_mgmt.linear.add_task(from HTTP server)
Transport Configuration Details
stdio Transport
Required fields:- Launch the process with the specified command
- Manage the process lifecycle
- Communicate via stdin/stdout
- Handle process failures and restarts
streamable-http Transport
Required fields:- Connect to the HTTP endpoint
- Use MCP’s HTTP streaming protocol
- Handle connection retries
- Maintain persistent connections
sse Transport
For Server-Sent Events:Benefits of Mixed Transports
✓ Flexibility: Use local and remote servers together ✓ Simplicity: Host only needs to support one transport ✓ Scalability: Run heavy services remotely, light ones locally ✓ Security: Keep sensitive operations on localhost via stdio ✓ Performance: Balance between local speed and shared resourcesCommon Patterns
Pattern 1: Local Processing + Remote Data
- Use stdio for compute-intensive local tools
- Use HTTP for centralized data services
- Example: Local file analysis + remote database queries
Pattern 2: Development vs Production
- Use stdio in development (easy debugging)
- Use HTTP in production (centralized deployment)
- Same UMCP config, different serve options
Pattern 3: Team Shared Resources
- Use HTTP for expensive/licensed APIs (Linear, GitHub)
- Use stdio for personal tools (file access, local search)
- Team members share the HTTP servers
Testing
Validate the configuration:Troubleshooting
stdio Issues
- Check
commandis in PATH - Verify
envvariables are set correctly - Look for process errors in structured logs
HTTP Issues
- Verify URL is accessible
- Check network connectivity
- Ensure the HTTP endpoint supports MCP protocol
- Review structured logs for connection errors
Summary
UMCP’s transport bridging lets you:- Mix stdio, HTTP, and SSE upstreams freely
- Serve via stdio or HTTP to your host
- Abstract transport complexity from your workflows
- Scale and reorganize servers without changing host config