Packages

Transport-agnostic MCP (Model Context Protocol) server library with a Streamable HTTP Plug integration.

Current section

Files

Jump to
mcp42 CHANGELOG.md
Raw

CHANGELOG.md

# Changelog
All notable changes to mcp42 are documented in this file.
## [Unreleased]
## [0.1.0] - 2026-09-06
### Added
- `Mcp42.Protocol` — pure JSON-RPC 2.0 codec (encode/decode, standard error
codes, no batching per MCP 2025-06-18).
- `Mcp42.Server` behaviour (`use Mcp42.Server`) — tools/0 + handle_tool/3,
optional server_info/0 override. The ONLY integration surface; app logic
never enters the library.
- `Mcp42.Dispatcher` — pure MCP method dispatch: initialize (protocol
negotiation 2025-06-18 / 2024-11-05 / 2024-10-07), ping, tools/list,
tools/call, notifications. Tool errors are RESULTS (isError: true), host
crashes are contained as JSON-RPC internal errors.
- `Mcp42.Session` — per-connection session process (UUID v4 id, negotiated
protocol version, bounded 100-message inbox with fail-fast backpressure).
- `Mcp42.SessionRegistry` — ETS-backed id->pid registry, public reads,
GenServer-owned writes with automatic :DOWN cleanup.
- `Mcp42.Plug` — Streamable HTTP transport (spec 2025-06-18): POST
(JSON-RPC, lazy session on initialize, Mcp-Session-Id echo), GET (SSE
stream), DELETE (terminate, 204), origin validation (403 cross-origin,
localhost allowed by default), content-type guard (415), parse-error
mapping (400 + JSON-RPC error body).