feat: migrate from mark3labs/mcp-go to toolhive-core/mcpcompat (go-sdk)#5729
Open
JAORMX wants to merge 3 commits into
Open
feat: migrate from mark3labs/mcp-go to toolhive-core/mcpcompat (go-sdk)#5729JAORMX wants to merge 3 commits into
JAORMX wants to merge 3 commits into
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #5729 +/- ##
==========================================
+ Coverage 70.70% 70.77% +0.06%
==========================================
Files 683 683
Lines 69194 69194
==========================================
+ Hits 48923 48970 +47
+ Misses 16687 16625 -62
- Partials 3584 3599 +15 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
651a3fe to
8201028
Compare
rdimitrov
previously approved these changes
Jul 6, 2026
Swaps all github.com/mark3labs/mcp-go/{mcp,server,client,client/transport}
imports to the go-sdk-backed compatibility shim in toolhive-core
(github.com/stacklok/toolhive-core/mcpcompat/*). No call-site logic changes —
the shim mirrors mcp-go's API. This moves ToolHive's MCP protocol handling
onto the official modelcontextprotocol/go-sdk.
Depends on stacklok/toolhive-core#150; the toolhive-core dependency is pinned
to that branch commit and should be bumped to the released version once #150
merges.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Bump github.com/stacklok/toolhive-core to the mcpcompat shim commit that closes the server/client compatibility gaps exercised by the vMCP and MCP test suites (pulls the required cel-go v0.29.1). Also fix gci import grouping in three files flagged by lint (toolhive-core shares the github.com/stacklok/toolhive prefix, so its imports group with toolhive's). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
JAORMX
added a commit
to stacklok/toolhive-core
that referenced
this pull request
Jul 7, 2026
Stop registry/types from importing github.com/mark3labs/mcp-go/mcp directly. Switch both publisher_provided_types.go and registry_types.go to import the mcpcompat/mcp shim (aliased as `mcp`), whose Tool type is a type alias for mcpgo.Tool — identical type, wire-compatible, source-compatible. Zero call-site changes. This was the last non-shim import of mcp-go in the module; the only remaining reference is the intentional chokepoint in mcpcompat/mcp/alias.go. Unblocks stacklok/toolhive#5729 from carrying mcp-go as a transitive indirect dep.
200d32f to
3156cb9
Compare
rdimitrov
approved these changes
Jul 7, 2026
ChrisJBurns
approved these changes
Jul 7, 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.
What this does
Pure import swap: every
github.com/mark3labs/mcp-go/{mcp,server,client,client/transport}import is replaced with the go-sdk-backed compatibility shim in toolhive-core (github.com/stacklok/toolhive-core/mcpcompat/*). No call-site logic changes — the shim mirrors mcp-go's API. This moves ToolHive's MCP protocol handling onto the officialmodelcontextprotocol/go-sdk, and removes the directgithub.com/mark3labs/mcp-godependency from ToolHive (it remains only as a transitive// indirectrequirement pulled in by other modules).Dependency
Pinned to the released
github.com/stacklok/toolhive-core v0.0.27, which includes stacklok/toolhive-core#150 (the mcp-go → go-sdk compatibility shim) plus all the incremental shim fixes that were previously picked up as pre-release commits.Verification
All run against
toolhive-core v0.0.27:Remaining transitive mcp-go dependency
mark3labs/mcp-gostays as a// indirectrequirement becausetoolhive-core/registry/typesstill referencesmcp.Tooldirectly (publisher_provided_types.go,registry_types.go). That is a toolhive-core-side change, tracked separately. No ToolHive source imports mcp-go directly.Known behavioral caveats (inherited from the shim)
SendNotificationToAllClientsin the stdio bridge forwards only progress/message notifications —tools/list_changedand other methods are dropped because go-sdk v1.6.1 exposes no public generic notification sender.SessionIdManagerisn't yet wired to go-sdk's session lifecycle.