Eliminate duplicate code patterns in MCP connection handling#297
Merged
Conversation
- Added helper function newMCPClient() for SDK client creation - Added helper function newHTTPConnection() for HTTP connection initialization - Added helper functions createJSONRPCRequest() and setupHTTPRequest() for request setup - Refactored tryStreamableHTTPTransport, trySSETransport, NewConnection to use newMCPClient() - Refactored tryStreamableHTTPTransport, trySSETransport to use newHTTPConnection() - Refactored initializeHTTPSession and sendHTTPRequest to use request helpers - Reduced ~60-70 lines of duplicated code - All existing tests pass Co-authored-by: lpcox <15877973+lpcox@users.noreply.github.com>
- Added TestNewMCPClient to verify SDK client creation - Added TestCreateJSONRPCRequest with multiple test cases - Added TestSetupHTTPRequest with multiple scenarios - Added TestNewHTTPConnection to verify connection initialization - All tests pass Co-authored-by: lpcox <15877973+lpcox@users.noreply.github.com>
Copilot
AI
changed the title
[WIP] Fix duplicate code patterns in MCP Gateway
Eliminate duplicate code patterns in MCP connection handling
Jan 16, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Consolidates ~60-70 lines of duplicated code across three patterns in
internal/mcp/connection.go: SDK client initialization, HTTP connection struct setup, and JSON-RPC request creation.Changes
SDK Client Creation
newMCPClient()to replace 3 identicalsdk.NewClient(&sdk.Implementation{...}, nil)callsNewConnection,tryStreamableHTTPTransport,trySSETransportHTTP Connection Initialization
newHTTPConnection()to centralize 11-line Connection struct setuptryStreamableHTTPTransportandtrySSETransportJSON-RPC Request Setup
createJSONRPCRequest()for JSON-RPC 2.0 request creationsetupHTTPRequest()for HTTP request header configurationinitializeHTTPSessionandsendHTTPRequestto use helpersExample
Before:
After:
Net change: -5 lines in
connection.go, +139 lines of test coverage inconnection_test.goOriginal prompt
✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.