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:

replace github.com/modelcontextprotocol/go-sdk => github.com/SamMorrowDrums/go-sdk v0.0.0-20251204132239-46310a70a79a

Or use the branch reference:

replace github.com/modelcontextprotocol/go-sdk => github.com/SamMorrowDrums/go-sdk perf/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