Repository navigation
Tags: po-et/mcp-go
Tags
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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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
PreviousNext