-
Notifications
You must be signed in to change notification settings - Fork 3.1k
Open
Labels
Description
Summary
Integrate the schema caching optimization from the go-sdk fork to dramatically improve tool registration performance.
Background
The go-sdk currently performs expensive reflection-based schema generation on every AddTool call. In stateless server patterns (like github-mcp-server where a new server is created per HTTP request), this causes significant overhead.
The optimization adds automatic schema caching that provides:
- 132x faster tool registration
- 51x fewer allocations
- 19% faster per-tool-call validation
Implementation
1. Update go.mod to use the fork
Add a replace directive to use the optimized fork:
replace github.com/modelcontextprotocol/go-sdk => github.com/SamMorrowDrums/go-sdk v0.0.0-20251204132239-46310a70a79aOr use the branch reference:
replace github.com/modelcontextprotocol/go-sdk => github.com/SamMorrowDrums/go-sdk perf/phase1-schema-cache2. Run go mod tidy
go mod tidy3. Verify all tests pass
go test ./...Expected Impact
No code changes should be required in github-mcp-server. The optimization is automatic and transparent to integrators.
Fork Branch
- Repository: https://github.com/SamMorrowDrums/go-sdk
- Branch:
perf/phase1-schema-cache - PR: perf: add schema caching to avoid repeated reflection SamMorrowDrums/go-sdk#1
Benchmark Results
BenchmarkAddTool_TypedHandler-22 977080 1223 ns/op 1208 B/op 21 allocs/op
BenchmarkAddTool_TypedHandler_NoCache-22 6764 161463 ns/op 39262 B/op 1072 allocs/op
Copilot