Changelog

Copy Markdown

All notable changes to this project are documented in this file.

1.14.0 (2026-07-30)

Features

  • mcp: route message encode and validation through the negotiated protocol module (c327da7)
  • protocol: widen behaviour into full dialect contract (fcefb88)
  • transport: formalize transport-session contract as public behaviour (784452d)

Bug Fixes

  • server: route SSE notifications across nodes via pg (cfb8635)

1.13.0 (2026-07-29)

Bug Fixes

  • server: reject unknown sessions on the request path instead of silent auto-recovery (b2db47f), closes #204

Code Refactoring

  • session: extract request scheduler (88b0cce), closes #253
  • session: extract server-initiated request engine (8b877af), closes #253
  • session: extract tasks runtime (ff6047c), closes #253

1.12.0 (2026-07-29)

Features

  • session: version session serialization format (0a91fee), closes #252

Bug Fixes

  • client: handle session_expired cast from streamable HTTP transport (59a8896), closes #264
  • client: store negotiated protocol version from initialize response (3cdba16), closes #249
  • transport: send and validate MCP-Protocol-Version header (fe6b767), closes #250

Code Refactoring

  • protocol: unify version negotiation APIs (#251) (985d940)

1.11.0 (2026-07-29)

Features

  • session_store: supervise Redis store subtree to make restarts race-free (#242) (48c8c1a)

Bug Fixes

  • prompts: wrap prompt content objects and map system_message to user role (#234) (2451bb7)
  • server: make title option compile in use Anubis.Server.Component (b04feed)
  • server: use restart :temporary for session processes (#240) (30bc4f5)
  • sse: buffer partial events across Finch chunks (#245) (beea2f6)
  • Stream the client SSE GET instead of buffering it (server push never delivered) (#231) (a722c1b)
  • telemetry: expose tool call success/failure in tool_call span metadata (#246) (ace5ecb)
  • telemetry: include client_info in initialize response event metadata (#248) (74ed457)
  • telemetry: namespace tool_call span under :anubis_mcp (#244) (561a96b)

Tests

  • server: fix stale tool_call event name and function_exported? loading races (7247d2c)
  • transport: synchronize held SSE plug with Bypass teardown (93c5a34)

Continuous Integration

1.10.0 (2026-07-17)

Features

  • add _meta field and refresh persisted session TTL (677a186)

Bug Fixes

  • streamable_http: route session messages to owning SSE handler (#229) (3288c46)

1.9.0 (2026-07-16)

Features

  • streamable_http: add spec resumability (Last-Event-ID replay) (#216) (78e33b4)
  • support pre_initialized sessions for cross-pod restore (#187) (13be0d7)

Bug Fixes

  • session: return encodable JSON-RPC errors when init/2 fails (#211) (f9af7cc)
  • streamable_http: emit telemetry on SSE handler registration (#217) (4a4c528)
  • streamable_http: restore session from store on notif/resp registry miss (#221) (d757b39)
  • streamable_http: return correct JSON-RPC error codes for parse failures (#222) (1867994)

1.8.0 (2026-07-16)

This release focuses on simplifying the runtime footprint and giving consumers more control over networking.

⚠️ Breaking change: the Application callback and the bundled CLI have been removed. If you relied on anubis_mcp starting supervision trees or processes automatically via application/0, you'll now need to start the relevant components explicitly in your own supervision tree. See the updated README and Introduction guide for the new setup.

Alongside that, the Finch HTTP pool is now injectable, so you can plug in your own pool configuration (name, size, pool options) instead of relying on a globally started pool - handy for apps that already manage their own Finch instances or need per-tenant pools.

On the housekeeping side, example apps moved out of lib/ into a dedicated root-level folder to keep the library package lean, and CI now publishes the Hex package using Elixir 1.20.2.

Features

  • add a serialize_assigns callback for server (1059119), closes #199
  • drop Application callback + CLI, make Finch pool injectable (#224) (b92a131)

Bug Fixes

  • correctly append 2025-11-25 version to http transport (889fa79), closes #220
  • correctly truncate tools args (4e9288c)
  • dedup protocol schema definitions (a0314a2), closes #157

Documentation

Miscellaneous Chores

  • move example apps to dedicated root folder (631a929)
  • remove dead llms.txt (1e115b5)

Continuous Integration

  • use elixir 1.20.2 to publish hex pkg (a4d5f3c)

1.7.0 (2026-07-16)

Features

  • streamable_http: per-subscriber metadata and targeted sends (#218) (c606658)

Bug Fixes

  • Forward configured :headers on the DELETE session-teardown request (follow-up to #180) (#213) (b32134a)
  • prevent "Server not initialized" race on first request (#198) (e84624c)
  • server: resolve session names via Registry to prevent atom-exhaustion DoS (#188) (17e4a6d)
  • session: trap_exit so terminate/2 runs on supervisor shutdown (#209) (6335cf4)
  • streamable_http: don't close superseded SSE handler to prevent reconnect flap (#215) (a1e0ce6)

Continuous Integration

  • add new elixir versions (3b636a8)
  • add pr-quality workflow (c0ca08f)
  • fix zig correct version for burrito (6e410bd)
  • use mlugg/setup-zig 0.15.2 in release-please auto build job (2ed6187)

1.6.2 (2026-06-09)

Bug Fixes

  • forward :headers to SSE GET request (#180) (bb3280f)
  • macros for Elixir 1.20 type checker compatibility (48c9478)
  • streamable_http: always advertise both content types on POST (#178) (66abc13)

1.6.1 (2026-05-23)

Bug Fixes

  • Echo request id in "Server not initialized" error (#168) (226b71e)

1.6.0 (2026-05-18)

Features

  • add OAuth 2.1 authorization for MCP servers (#158) (a12a8f6)
  • add Registry.PG for distributed session tracking via :pg (#160) (512e103)

1.5.0 (2026-05-09)

Features

  • MCP Tasks (2025-11-25) — server-receiver for tools/call (#98) (#155) (51348f1)

Bug Fixes

  • drop compile-connected deps from component/1 macro (#154) (1e368b9)

Continuous Integration

1.4.0 (2026-05-08)

Features

  • add resource subscription capability implementation (#152) (10a09cf)
  • dispatch session requests in supervised tasks (#153) (f0496b4)

Tests

1.3.1 (2026-05-04)

Bug Fixes

  • log sse_keepalive_failed at :warning, matching sse_send_failed (#145) (f8dbc43)

Miscellaneous Chores

  • change setup-zig version on ci (f77a844)

Code Refactoring

  • delegate JSON Schema to Peri, retire :mcp_field (#146) (9c674fd)

1.3.0 (2026-04-29)

Features

  • elicitation: MCP 2025-06-18 elicitation support (#139) (8ab36e2)
  • resource templates with RFC 6570 URI matching (#141) (aaee374)

Bug Fixes

  • scope POST-with-SSE response to originating conn (#144) (5593006)

1.2.0 (2026-04-24)

Features

  • pluggable session supervisor and :via tuple session naming (#133) (0a1aadc)

Bug Fixes

  • correct SSE task lifecycle bugs in StreamableHTTP transport (#130) (3a34382)
  • defer streamable_http plug opts fetching to runtime (#137) (ad29215)
  • handle session expiry gracefully with optional callback and store restore (#134) (a42f462)
  • prevent lost SSE responses when client connection closes (#132) (f961fa0)
  • replace opaque KeyError with ArgumentError for missing :client_info (#135) (fc9444c)
  • server stdio test againts custom io device (#136) (4b567d9)

1.1.1 (2026-04-22)

Bug Fixes

  • buffer chunked STDIO responses before decoding in client (#127) (eff7f24)

Miscellaneous Chores

  • capture log from stdio transports processes (fbcca0a)
  • encapsulate transport_parse_state into the Client.State struct (602d74c)
  • suppress SSE deprecation warnings (05565fc)
  • supress SSE deprecation warnings (8334779)

Tests

  • fix the stdio cast message from server using a buffer (76d7ecd)

1.1.0 (2026-04-13)

Features

  • Add Client.await_ready/2 to block until MCP handshake completes (#117) (4c48647)
  • add instructions field to initialize response (#122) (8103b7c)

Documentation

1.0.0 (2026-03-16)

⚠ BREAKING CHANGES

  • remove client base module and client macro (#110)
  • phase-3: server re-implementation and simplification (#96)

Features

  • add _meta support to Tool struct and JSON encoder (#108) (6ac49d1)

Bug Fixes

  • phase-5: remove dead code and update docs (#104) (eea86af)
  • regression for input/output server schema (85f8ebb)
  • remove client base module and client macro (#110) (1f9f13c)
  • server examples and sse server transport (944bafb)
  • session serializion errors (#112) (cb8c0e3), closes #60
  • Start SSE keepalive when first handler is registered (#83) (c3c01e9)
  • stdio server transport working (#111) (b331281)

Code Refactoring

  • phase-3: server re-implementation and simplification (#96) (badb0f0)
  • phase-4: client extraction of handlers (#100) (08b98c0)

0.17.1 (2026-02-28)

Bug Fixes

  • Check Process.alive? before sending to SSE handler (#82) (e1dc705)

Code Refactoring

  • phase-1: abstract protocol version negotiation (#93) (05a2362)
  • phase-2: transport layer as functions, backward compatible (#95) (105d6a9)

0.17.0 (2025-12-09)

Features

  • redis: add redix_opts for SSL/TLS support (#59) (33658ab)

Bug Fixes

0.16.0 (2025-11-18)

Features

Bug Fixes

  • correct arguments in Logging.should_log? (#47) (6f550e6)

0.15.0 (2025-11-03)

Features

  • add timeout for client/server -> transport calling option (#50) (1e37c23)
  • allow template resources registration (#43) (9af9b8d)

Bug Fixes

  • Timeout options not properly passed to HTTP transport (#52) (0d392d6)

0.14.1 (2025-10-07)

Bug Fixes

  • correct capability parsing to nest options under capability keys (#31) (9946027)
  • correctly handle timeouts and keepalive (#41) (2f44840)

Documentation

  • rewrite introduction/home documentation page (34baf39)

Miscellaneous Chores

  • add sponsors section with coderabbit (f04f8bb)
  • update example projects elixir deps, use fixed otp version and stable version for CLI release (b362e54)

Continuous Integration

  • fix zig version for CLI release and locally on flake (e7ed2b4)

0.14.0 (2025-08-21)

Features

  • resources/templates/list method for clients (a6eb210)

Bug Fixes

  • align docs and parsing of server component schema-field definition options (#12) (cb2df76)
  • correctly pass server call timeout options (a49f497)
  • explicit handle title for components (#9) (1adfed2)
  • output schemas should not validate on error resps (#15) (b5faaad)

Reverts

  • "Add keep-alive messages to the StreamableHTTP transport (#11)" (8ea5a3c)

Miscellaneous Chores

  • rename hermes folders/files to anubis (#5) (239ee3f)

0.13.1 (2025-07-31)

Bug Fixes

  • not crash server on empty tool/prompt args (#4) (ee8043f)

Miscellaneous Chores

0.13.0 (2025-07-18)

Features

  • allow redact patterns on server assigns/data (#190) (07af99f)
  • better dsl for embedded nested fields on server components (#199) (097f5fd)
  • new server response contents for tools/resources with annotations (2025-06-18) (#195) (9b65308)
  • resources templates (#193) (1457e59)
  • tools output schema feature (2025-06-18) (#194) (8088a49)

Miscellaneous Chores

0.12.1 (2025-07-14)

Code Refactoring

0.12.0 (2025-07-11)

Features

Bug Fixes

  • allow configuring server request timeout (#182) (e79fe2f)
  • do not allow duplicate server components and more convenient API (#180) (bc71df8)

Miscellaneous Chores

  • add llms summary about the library (#175) (ed0e608)
  • allow different kind of components have the same name (#181) (d5ba6f5)

Code Refactoring

  • handle_sampling callback, use frame as entrypoint for notifications (#176) (1e88711)
  • interactive tasks now support JSON file input (#172) (9465266)

0.11.3 (2025-07-02)

Bug Fixes

  • correctly parse dates when default values are passed (58f6368)
  • include frame helpers on module-based component (#163) (15ba2c7)
  • server can now send notifications correctly (#166) (33f32de)

Miscellaneous Chores

  • update documentation, simplify, more storytelling (#168) (ccdddc1)

0.11.2 (2025-06-30)

Bug Fixes

  • correctly parse peri numeric contrainsts to json-schema (#160) (808c2c0)
  • interactive http tasks should accept custom headers (#159) (c2fe91e)

0.11.1 (2025-06-30)

Bug Fixes

  • loggin should respect the logger config (#157) (0fbf6a6)

0.11.0 (2025-06-30)

Features

  • runtime server components, simplified api (#153) (8af35d6)

Bug Fixes

  • allow users to control external process messages (#149) (8fef4eb)
  • correctly encode prompt/resource (#155) (4249b13)
  • more genserver mcp server callbacks, plug based startup and documentation (#152) (9c26b1c)
  • server behaviour with optional callbacks (#151) (91aa191)

Code Refactoring

0.10.5 (2025-06-25)

Bug Fixes

0.10.4 (2025-06-24)

Bug Fixes

  • server session expiration on idle (configurable) (#143) (d9f7164)

0.10.3 (2025-06-23)

Bug Fixes

0.10.2 (2025-06-23)

Bug Fixes

  • default implementation for server handle_notification (#135) (c958041)

Code Refactoring

0.10.1 (2025-06-21)

Bug Fixes

  • client should send both sse/json headers on POST requests (#134) (e906b7f)
  • correctly allows macro-based/callback-based server implementations (#131) (d7bfc75)
  • remove last uses of hard-coded Anubis.Server.Registry (cc0ffd9)

0.10.0 (2025-06-18)

Features

Miscellaneous Chores

0.9.1 (2025-06-13)

Bug Fixes

0.9.0 (2025-06-12)

Features

Bug Fixes

  • allow registering a name for the client supervisor (#117) (d356511)

0.8.2 (2025-06-11)

Code Refactoring

0.8.1 (2025-06-10)

Bug Fixes

  • anubis should respect mix releases startup (#109) (f42d476)

0.8.0 (2025-06-10)

Features

  • inject user and transport data on mcp server frame (#106) (feb2ce3)
  • legacy sse server transport (#102) (4a71088)

Bug Fixes

  • allow empty capabilities on incoming JSON-RPC messages (#105) (f0ad4cf), closes #96

Miscellaneous Chores

  • release please should include all files (#108) (d0a25b9)

0.7.0 (2025-06-09)

Features

  • allow json schema fields on tools/prompts definition (#99) (0345f12)

0.6.0 (2025-06-09)

Features

  • allow customize server registry impl (#94) (f3ac087)
  • mcp high level server components definition (#91) (007f41d)
  • mcp server handlers refactored (#92) (e213e04)

Bug Fixes

  • correctly handle mcp requests on phoenix apps (#88) (09f4235), closes #86

Miscellaneous Chores

Code Refactoring

0.5.0 (2025-06-05)

Features

  • client support new mcp spec (#83) (73d14f7)
  • enable log disabling (#78) (fa1453f)
  • low level genservy mcp server implementation (stdio + stremable http) (#77) (e6606b4)
  • mvp higher level mcp server definition (#84) (a5fec1c)

Code Refactoring

  • base mcp server implementation correctly uses streamable http (#85) (29060fd)

0.4.0 - 2025-05-06

Added

  • Implemented WebSocket transport (#70)
  • Emit telemetry events (#54)
  • Implement client feature completion request (#72)
  • Implement client feature roots, server requests (#73)

0.3.12 - 2025-04-24

Fixed

  • Correctly handles "nested" timeouts (genserver vs MCP) (#71)

0.3.11 - 2025-04-17

Added

  • Improved core library logging and added verbosity level on interactive/CLI (#68)

0.3.10 - 2025-04-17

Fixed

  • Handle SSE ping and reconnect events from server (#65)

0.3.9 - 2025-04-15

Fixed

  • Improved and simplified SSE endpoint event URI merging (#64)

Added

  • Added internal client/transport state inspection on CLI/mix tasks (#61)

0.3.8 - 2025-04-10

Added

  • Created Operation struct to standardize client API calls (#56)
  • Fixed ERTS version to avoid release errors

Fixed

  • Resolved client timeout confusion by standardizing timeout handling (#42)

0.3.7 - 2025-04-01

Fixed

  • Client reinitialization from interactive CLI (#55)

0.3.6 - 2025-03-28

Added

  • New roadmap and protocol update proposal (#53)
  • Added documentation for the 2025-03-26 protocol update

0.3.5 - 2025-03-25

Documentation

  • Added Roadmap to README (#47)

0.3.4 - 2025-03-20

Added

  • help command and flag on the interactive CLI (#37)
  • improve SSE connection status on interactive task/cli (#37)

0.3.3 - 2025-03-20

Added

  • Client request cancellation support (#35)
  • Improved URI path handling for SSE transport (#36)
  • Enhanced interactive mix tasks for testing MCP servers (#34)

0.3.2 - 2025-03-19

Added

  • Ship static binaries to use anubis-mcp as standalone application

0.3.1 - 2025-03-19

Added

  • Ship interactive mix tasks stdio.interactive and sse.interactive to test MCP servers

0.3.0 - 2025-03-18

Added

  • Structured server-client logging support (#27)
  • Progress notification tracking (#26)
  • MCP domain model implementation (#28)
  • Comprehensive SSE unit tests (#20)
  • Centralized state management (#31)
  • Standardized error response handling (#32)

Fixed

  • Improved domain error handling (#33)

0.2.3 - 2025-03-12

Added

  • Enhanced SSE transport with graceful shutdown capabilities (#25)
  • Improved SSE streaming with automatic reconnection handling (#25)

0.2.2 - 2025-03-05

Added

  • Support for multiple concurrent client <> transport pairs (#24)
  • Improved client resource management

0.2.1 - 2025-02-28

Added

  • Support for custom base and SSE paths in HTTP/SSE client (#19)
  • Enhanced configuration options for SSE endpoints

0.2.0 - 2025-02-27

Added

  • Implemented HTTP/SSE transport (#7)
    • Support for server-sent events communication
    • HTTP client integration for MCP protocol
    • Streaming response handling

Documentation

  • Extensive guides and documentation improvements

0.1.0 - 2025-02-26

Added

  • Implemented STDIO transport (#1) for MCP communication

    • Support for bidirectional communication via standard I/O
    • Automatic process monitoring and recovery
    • Environment variable handling for cross-platform support
    • Integration test utilities in Mix tasks
  • Created stateful client interface (#6)

    • Robust GenServer implementation for MCP client
    • Automatic initialization and protocol handshake
    • Synchronous-feeling API over asynchronous transport
    • Support for all MCP operations (ping, resources, prompts, tools)
    • Proper error handling and logging
    • Capability negotiation and management
  • Developed JSON-RPC message parsing (#5)

    • Schema-based validation of MCP messages
    • Support for requests, responses, notifications, and errors
    • Comprehensive test suite for message handling
    • Encoding/decoding functions with proper validation
  • Established core architecture and client API

    • MCP protocol implementation following specification
    • Client struct for maintaining connection state
    • Request/response correlation with unique IDs
    • Initial transport abstraction layer

Documentation

  • Added detailed RFC document describing the library architecture
  • Enhanced README with project overview and installation instructions