Skip to content

Tags: po-et/mcp-go

Tags

v1.1.1

Toggle v1.1.1's commit message

Verified

This tag was signed with the committer’s verified signature.
ezynda3 Ed Zynda
v1.1.1 - Bug fixes for stdio concurrency, pagination, tasks and resou…

…rces

Fixes:
- mcp: accept empty text and blob resource contents (mark3labs#952)
- mcp: read the tasks/result payload from the top level (mark3labs#973)
- stdio: serve requests off the read loop so slow handlers no longer block reads (mark3labs#977)
- client: reset pagination cursors for each iterator traversal (mark3labs#985)
- server: validate x-mcp-header annotations on every tool registration path (mark3labs#986)

v1.1.0

Toggle v1.1.0's commit message

Verified

This tag was signed with the committer’s verified signature.
ezynda3 Ed Zynda
v1.1.0 - In-process client options, roots handler support, and transp…

…ort fixes

Features:
- client: NewInProcessClientWithOptions configures sampling, elicitation, and
  roots handlers together on the in-process transport (mark3labs#953)
- mcptest: SetRootsHandler registers a roots/list handler for tools under test (mark3labs#955)
- mcp: tool schema property order is preserved through decode and encode (mark3labs#984)

Fixes:
- mcp: decode the result envelope in the prompts/get and resources/read parsers (mark3labs#971)
- server: cancel task execution on TTL expiration (mark3labs#982)
- transport: skip unsupported SIGTERM on Windows stdio Close (mark3labs#978)
- transport: reject SSE restart after close and close the Start/Close race (mark3labs#968)

v1.0.0

Toggle v1.0.0's commit message

Verified

This tag was signed with the committer’s verified signature.
ezynda3 Ed Zynda
v1.0.0 - First stable release

The 1.0 line commits to a stable API on the github.com/mark3labs/mcp-go
import path. It supports the 2026-07-28 specification alongside every
earlier protocol revision, served from the same code.

Protocol 2026-07-28:
- mcp: protocol version negotiation, io.modelcontextprotocol/* _meta keys,
  result typing and cache hints, and the SEP-2243 standard headers (mark3labs#951)
- mcp: multi round-trip request types (SEP-2322), wired into tools/call,
  prompts/get, and resources/read (mark3labs#951)
- server: server/discover and subscriptions/listen handlers, per-request
  protocol era detection, and era-gated method dispatch (mark3labs#951)
- server: the 2026-07-28 Streamable HTTP transport, served concurrently with
  the legacy one on the same endpoint; WithStreamableHTTPProtocolVersions
  pins a deployment to the legacy revisions (mark3labs#951)
- server: multi round-trip handlers via InputRequestBuilder, answered by
  client retry on modern connections and by server-initiated requests on
  legacy ones, from a single handler (mark3labs#951)
- server: WithExtensions advertises optional protocol extensions, and
  per-request log levels are honoured for modern requests (mark3labs#951)
- client: server/discover probing with initialize fallback, _meta-carried
  identity and capabilities, Mcp-Param-* header lifting, bounded
  renegotiation on -32022, and Listen/ListenAsync for subscription streams (mark3labs#951)

Features:
- client: WaitForTask polls a task to a terminal state, honouring the
  server-provided poll interval over the caller's fallback (mark3labs#954)
- server: SessionWithResourceSubscriptionsErr lets implementations reject
  subscriptions with RESOURCE_NOT_FOUND (mark3labs#946)

Fixes:
- transport: prevent SSE client panics on a duplicate endpoint event and on
  concurrent Close, by scoping the endpoint channel and sync.Once per
  connection attempt (mark3labs#964)
- transport: drain the stdio subprocess stderr pipe so a chatty server can no
  longer deadlock on a full pipe (mark3labs#963)
- client: do not fire the connection-lost handler when the SSE stream was
  closed intentionally, which caused a shut-down transport to reconnect (mark3labs#962)
- mcp: carry _meta on ResourceLink content through ParseContent (mark3labs#965)
- mcp: report the correct item index in RequireIntSlice conversion errors (mark3labs#958)
- mcp: preserve schema tags on nested struct fields (mark3labs#920)
- mcp: rewrite draft-07 "#/definitions/..." refs to "#/$defs/..." when
  adopting definitions as $defs (mark3labs#950)
- server: flush the final SSE response in handlePost (mark3labs#945)
- server: deliver request-scoped elicitation on the originating POST SSE
  stream (mark3labs#933)
- server: return 200 for HEAD requests instead of 404 (mark3labs#937)

Migrating from v0.58.0:
- server.NewTestServer and server.NewTestStreamableHTTPServer moved to the new
  server/servertest package, keeping net/http/httptest out of production
  binaries. Use servertest.NewTestServer and
  servertest.NewTestStreamableHTTPServer (mark3labs#966)
- Methods removed in 2026-07-28 degrade rather than fail on the client: Ping
  is a no-op, SetLevel records the level, Subscribe accumulates URIs.
- Features deprecated by 2026-07-28 remain supported for at least a
  twelve-month deprecation window.

Compatibility:
- A wire-level conformance suite pins responses to clients on earlier
  protocol versions as byte-identical.

v1.0.0-beta.1

Toggle v1.0.0-beta.1's commit message

Verified

This tag was signed with the committer’s verified signature.
ezynda3 Ed Zynda
v1.0.0-beta.1 - MCP protocol 2026-07-28 support

First beta of the 1.0 line. Adds support for the 2026-07-28 specification
across mcp, server, and client, while serving every earlier revision
unchanged from the same code.

Features:
- mcp: protocol version negotiation, io.modelcontextprotocol/* _meta keys,
  result typing and cache hints, and the SEP-2243 standard headers (mark3labs#951)
- mcp: multi round-trip request types (SEP-2322), wired into tools/call,
  prompts/get, and resources/read (mark3labs#951)
- server: server/discover and subscriptions/listen handlers, per-request
  protocol era detection, and era-gated method dispatch (mark3labs#951)
- server: the 2026-07-28 Streamable HTTP transport, served concurrently with
  the legacy one on the same endpoint; WithStreamableHTTPProtocolVersions
  pins a deployment to the legacy revisions (mark3labs#951)
- server: multi round-trip handlers via InputRequestBuilder, answered by
  client retry on modern connections and by server-initiated requests on
  legacy ones, from a single handler (mark3labs#951)
- server: WithExtensions advertises optional protocol extensions, and
  per-request log levels are honoured for modern requests (mark3labs#951)
- client: server/discover probing with initialize fallback, _meta-carried
  identity and capabilities, Mcp-Param-* header lifting, bounded
  renegotiation on -32022, and Listen/ListenAsync for subscription streams (mark3labs#951)

Compatibility:
- Additive for existing users: a wire-level conformance suite pins responses
  to clients on earlier protocol versions as byte-identical.
- Methods removed in 2026-07-28 degrade rather than fail on the client: Ping
  is a no-op, SetLevel records the level, Subscribe accumulates URIs.

Docs:
- A protocol 2026-07-28 guide and a multi round-trip example.

v0.58.0

Toggle v0.58.0's commit message

Verified

This tag was signed with the committer’s verified signature.
ezynda3 Ed Zynda
v0.58.0 - Resource subscription rejection API and streamable HTTP fixes

Features:
- Add SessionWithResourceSubscriptionsErr, an optional session interface that
  lets implementations reject subscriptions with RESOURCE_NOT_FOUND (mark3labs#946)

Fixes:
- mcp: preserve schema tags on nested struct fields (mark3labs#920)
- mcp: rewrite draft-07 "#/definitions/..." refs to "#/$defs/..." when
  adopting definitions as $defs (mark3labs#950)
- server: flush the final SSE response in handlePost (mark3labs#945)
- server: deliver request-scoped elicitation on the originating POST SSE
  stream (mark3labs#933)
- server: return 200 for HEAD requests instead of 404 (mark3labs#937)

Docs:
- Document exported helper functions in the mcp package (mark3labs#940)
- Correct CONTRIBUTING Go version to match go.mod (mark3labs#929)

v0.57.0

Toggle v0.57.0's commit message

Verified

This tag was signed with the committer’s verified signature.
ezynda3 Ed Zynda
v0.57.0 - Streamable HTTP resumability and transport fixes

Features:
- Add streamable HTTP stream resumability via pluggable EventStore (mark3labs#930)
- Support jsonschema_description and enum struct tags (mark3labs#931)

Fixes:
- Deliver server notifications to in-process transport clients (mark3labs#919)
- Concatenate multi-line SSE data fields instead of overwriting (mark3labs#927)
- Unmarshal embedded resource contents (mark3labs#938)
- Label client JSON-RPC errors by method in streamable HTTP (mark3labs#924)
- Accept Content-Type parameters on GET listening stream (mark3labs#925)
- Close active sessions before Shutdown (mark3labs#926)
- Make client initialized state atomic (mark3labs#936)

Docs:
- Fix stale struct tags in structured_input_and_output example (mark3labs#923)

v0.56.0

Toggle v0.56.0's commit message

Verified

This tag was signed with the committer’s verified signature.
ezynda3 Ed Zynda
v0.56.0 - DNS rebinding protection and raw JSON preservation

Features:
- Automatic DNS rebinding protection for localhost on streamable HTTP and
  SSE transports (enabled by default; opt out with WithDisableLocalhostProtection
  / WithSSEDisableLocalhostProtection for reverse-proxy setups) (mark3labs#921)

Fixes:
- Preserve raw JSON for tool arguments and structuredContent via new
  RawArguments/RawStructuredContent fields, avoiding float64 precision loss
  for large integers (mark3labs#916)
- Render readable ErrorKind labels in validation messages (mark3labs#915)

v0.55.1

Toggle v0.55.1's commit message

Verified

This tag was signed with the committer’s verified signature.
ezynda3 Ed Zynda
v0.55.1 - Bug fixes for client headers and filter performance

Fixes:
- Avoid forwarding inbound request headers in client (mark3labs#909)
- Avoid full filter scans on call hot paths (mark3labs#908)

v0.55.0

Toggle v0.55.0's commit message

Verified

This tag was signed with the committer’s verified signature.
ezynda3 Ed Zynda
v0.55.0 - Structured logging migration to slog, tracing & test improv…

…ements

Breaking Changes:
- Logging options now accept *slog.Logger instead of util.Logger
- The util package (util.Logger, util.DefaultLogger) has been removed
- server.WithLogger is now a ServerOption(*slog.Logger); the old
  StreamableHTTP logger option is renamed to WithStreamableHTTPLogger

Features:
- server: WithLogger consolidates structured logging onto *slog.Logger (mark3labs#892)
- otel: WithServerLogging OTEL slog bridge for server structured logs (mark3labs#901)
- tracing: add MetaPropagator for W3C trace context via MCP _meta (SEP-414) (mark3labs#895)
- mcptest: add SetSamplingHandler and SetElicitationHandler (mark3labs#902)

Fixes:
- enforce tool/prompt filters at call time, not just list time (mark3labs#898)
- oauth: return error instead of (nil, nil) from getServerMetadata (mark3labs#903, mark3labs#904)

v0.54.1

Toggle v0.54.1's commit message

Verified

This tag was signed with the committer’s verified signature.
ezynda3 Ed Zynda
v0.54.1 - Bug fixes and performance improvements

Fixes:
- Print errors to stderr for invalid jsonschema tags in WithInputSchema
  and WithOutputSchema (mark3labs#894)

Performance:
- Reduce allocations in UnmarshalContent by avoiding map[string]any (mark3labs#890)

Improvements:
- Add Title and Size fields to ResourceLink
- Refactor session types to share clientInfoStore and writeJSONRPCError helper