Skip to content

perf: integrate go-sdk schema caching optimization (Phase 1)#1530

@SamMorrowDrums

Description

@SamMorrowDrums

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:

replacegithub.com/modelcontextprotocol/go-sdk=>github.com/SamMorrowDrums/go-sdkv0.0.0-20251204132239-46310a70a79a

Or use the branch reference:

replacegithub.com/modelcontextprotocol/go-sdk=>github.com/SamMorrowDrums/go-sdkperf/phase1-schema-cache

2. Run go mod tidy

go mod tidy

3. 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

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 

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions