Add HTTP transport fallback for non-standard MCP servers #180
+225
−46
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Multi-Transport HTTP MCP Backend Support - COMPLETE ✓
Problem Solved
The gateway now properly handles different types of HTTP MCP servers, including safeinputs which uses a non-standard JSON-RPC 2.0 over HTTP implementation.
Implementation Summary
File Modified:
internal/mcp/connection.go(229 additions, 46 deletions)Key Changes:
Added HTTPTransportType enum to track transport in use:
HTTPTransportStreamable- for 2025-03-26 specHTTPTransportSSE- for 2024-11-05 specHTTPTransportPlainJSON- for non-standard implementationsEnhanced NewHTTPConnection with smart fallback logic:
Added transport-specific connection functions:
tryStreamableHTTPTransport()- Uses SDK's StreamableClientTransporttrySSETransport()- Uses SDK's SSEClientTransporttryPlainJSONTransport()- Manual HTTP POST implementationRefactored SendRequestWithServerID:
Added callSDKMethod helper:
Defensive programming:
Test Results
Compatibility
What This Enables
💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.