[go-fan] Go Module Review: modelcontextprotocol/go-sdk
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 68/100
Direzione di ricerca
Inizia da pkg/cli/mcp_inspect_mcp.go e controlla come vengono configurati CommandTransport e StreamableClientTransport. Imposta i limiti di input usando le opzioni MaxLineLength e MaxEventSize dell’SDK, quindi controlla i test di trasporto pertinenti oppure esegui i test dell’inspector. Il lavoro è completato quando entrambi i percorsi hanno dei limiti, così che un input del server troppo grande non possa far crescere senza limiti la memoria dell’inspector.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
🐹 Go Fan Report: modelcontextprotocol/go-sdk
Module overview: go-sdk is the official Go SDK for the Model Context Protocol — server primitives (mcp.NewServer, mcp.AddTool), client primitives (mcp.NewClient), and transports (stdio, command, in-memory, streamable HTTP). It is the backbone of gh-aws gh aw mcp server and the mcp inspect subcommand.
Selection: picked via round-robin with priority for recent activity — pushed_at 2026-10-29 was the most recent among eligible direct dependencies, and this module last reviewed 2026-10-22 (8 days ago, outside the 7-day cooldown).
Current usage in gh-aw
- Files: 17 non-test
.gofiles (plus matching_test.gofiles), all underpkg/cli/andpkg/parser/mcp.go - Subpackages imported:
mcp,jsonrpconly — noauth/oauthex(the server has no OAuth surface) - Key APIs used:
mcp.NewServer/mcp.NewClient,mcp.AddTool,ServerOptions.SupportedProtocolVersions,ServerOptions.SetCacheable,mcp.StdioTransport,mcp.NewStreamableHTTPHandler,mcp.CommandTransport,mcp.StreamableClientTransport,AddReceivingMiddleware,mcp.ToolAnnotations
go.mod is pinned to v1.8.0, the current latest release (was v1.7.0 at the last review on 2026-08-18).
Research findings
Recent updates (v1.8.0, 2026-09-14)
No new protocol revision — it is a hardening/fix release on top of v1.7.0:
- JSON decoding now rejects >1000 levels of nesting before parsing
- New
MaxEventSizeonSSEClientTransport/StreamableClientTransport, andMaxLineLengthonStdioTransport, to bound buffered input - OAuth dynamic-client-registration responses capped at 1 MB
ServerOptions.SupportedProtocolVersions— lets a server narrow (never widen) its advertised protocol setServerOptions.SetCacheable— per-request hook forttlMs/cacheScopeon list and discover results- Session-leak, deadlock, and teardown-hang fixes for
ServerSession/Client.Connect - Two new
MCPGODEBUGescape hatches (plaintextstatefulrejection,blockingcancelnotify), both slated for removal in v1.9.0 — not needed by gh-aw
Best practices (from maintainers / release notes)
- Bare
boolforReadOnlyHint/IdempotentHintis now always serialized by default (the oldomitemptybehavior needs an explicithintomitempty=1opt-out) — gh-aw already does this correctly everywhere annotations are set. - Stay stateful if session affinity across calls is required;
Stateless = trueopts into the2026-07-28revision but drops that affinity.
Best practices already observed in gh-aw (click to expand)
mcp_server.godocuments that schema caching is automatic since go-sdk v1.3.0.mcp_server_http.gohas an explicit comment on whyStatelessis leftfalse: the long-runninglogs/audittools rely on session affinity for progress notifications, and staying stateful still lets the SDK negotiate down to2025-11-25.mcp_server_http.gobinds to loopback only as defense in depth alongside the SDKs own Host-header check, noting the SDK dropped default cross-origin protection in v1.6.0.mcp_inspect_mcp.gosetsDisableStandaloneSSE: trueon the inspectorsStreamableClientTransportsince it only queries capabilities once.- gh-aw already adopts v1.8.0s
SetCacheable(60s private TTL onListToolsRequest/discover responses) and v1.7.0sSupportedProtocolVersions— ahead of the curve rather than lagging.
Improvement opportunities
🏃 Quick wins
- Bound the
mcp inspectclient transports against hostile/misbehaving servers.mcp inspect(pkg/cli/mcp_inspect_mcp.go) connects to arbitrary user-configured MCP servers over bothCommandTransport(stdio) andStreamableClientTransport(HTTP) — exactly the scenario v1.8.0s newMaxLineLength/MaxEventSizecaps were built for. Neither is set today, so an inspected server that emits one giant unterminated line or a huge SSE event can grow the inspector processs memory unbounded. Setting conservative caps (e.g. a few MB) on both transport structs is a small, targeted change.
✨ Feature opportunities
- Stateless HTTP mode (
StreamableHTTPOptions.Stateless = true) would opt into the2026-07-28revision, but the 2-hourSessionTimeoutexists specifically for session affinity on long-runninglogs/auditcalls — staying stateful remains the right call for now; just worth re-checking as more MCP clients default to the new revision. - Extending
SetCacheablebeyond tool lists —resources/readand the other list methods also carryttlMs/cacheScopehooks as of v1.8.0, but gh-aw does not register any resources today, so this is a non-issue until it does. x-mcp-headerpassthrough (SEP-2243) forlogs/audittool params — only relevant if the HTTP server is ever placed behind a reverse proxy; it is loopback-only today.
📏 Best practice alignment
- Tool annotations already use the v1.8.0-aligned bare-
boolconvention. - Deliberate avoidance of premature schema defaults (documented in-code for the
timeoutparam). - In-code comments tracking SDK version-specific behavior — a pattern worth continuing as the SDK keeps shipping
MCPGODEBUG-guarded behavior changes.
🔧 General improvements
- No redundant or legacy-pattern usage found; no
MCPGODEBUGopt-outs are needed anywhere in the codebase.
Recommendations
- Add
MaxLineLengthto themcp inspectstdio path andMaxEventSizeto itsStreamableClientTransport— the one place gh-aw talks to untrusted/arbitrary MCP servers. - No other action needed this cycle — the module is pinned to the latest release and usage already adopts opt-in hardening/caching features rather than lagging behind.
- Keep the
StatelessHTTP mode decision on the radar as stateless-client adoption grows in the MCP ecosystem.
Next steps
- Consider a small follow-up PR adding
MaxLineLength/MaxEventSizebounds tomcp inspects client transports - Re-review after v1.9.0 ships (removes the two new
MCPGODEBUGescape hatches)
Generated by Go Fan — run §41023228742
Module summary saved to: scratchpad/mods/go-sdk.md
Generated by 🐹 Go Fan · claude · agent · ~125 AIC · ⌖ ~1 AIC · ⊞ 4.4K · ◷
- expires on Oct 31, 2026, 12:08 AM UTC-08:00
- Lingua principale
- Go
- Stelle
- 5.5k
- Fork
- 606
- Merge medio
- 4h 35m
- PR unite (30g)
- 807
Preparare l'ambiente
Avvia il container di sviluppo del progetto nel browser, con il tuo account GitHub.
- Include un Dockerfile o un file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di github/gh-aw
-
automation doc-healer documentation
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
I maintainer di solito rispondono entro 1 giorno
-
agent-research
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno
-
agentic-workflows automation aw-essential cookie
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
I maintainer di solito rispondono entro 1 giorno
-
automated-analysis code-quality cookie refactoring
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
github/gh-aw#73088 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
ai-inspected
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di github/gh-aw
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
I maintainer di solito rispondono entro 1 giorno
-
docs(prompts): IF BLOCKED workflow-scope branch says to comment on the issue on jira/local trackersApertaagent-butler-finding bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 77/100
jordansmall/spindrift#6238 ·
I maintainer di solito rispondono entro 1 giorno
-
bug: microcks test get swallows test failure details and operation results in text output modeAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
microcks/microcks-cli#608 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
bug from-studio
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
esengine/DeepSeek-Reasonix#14868 ·
I maintainer di solito rispondono entro 1 giorno
-
Install notes print "Camunda REST API: https://" without a host when global.host is setForse già presa @irisfield l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
camunda/camunda-platform-helm#7790 ·
I maintainer di solito rispondono entro 1 giorno