presa aims to be a complete MCP library for Clojure: servers and clients, for Babashka and the JVM from the same source. snodo (Elixir) is the reference for features and protocol behavior, and the official MCP conformance runner is the measure. The wire details presa follows are in wire-2026-07-28.md; what real hosts send is in hosts.md.
Each milestone lands as its own branch with tests under bb and the JVM.
isErrorserver/discover, per-request _meta validation, -320222025-11-25, 2025-06-18)resources/read, resource not foundcompletion/completettlMs, cacheScope)notifications/message, logLevel) and progress
(notifications/progress) from handlersnotifications/cancelled)input_required results with elicitation, sampling and roots requestsrequestState that the server can trust (signed)Mcp-Session-Id)server/discover, falling back to initializeinput_required with caller-supplied elicitation, sampling and
roots functionssubscriptions/listen, with list-changed! and resource-updated!The first backlog (joshrotenberg/presa#5 to joshrotenberg/presa#22) is done: the client conformance leg, Tasks, the OAuth resource server and client, runtime catalogs, limits, the session event stream, client caching, full JSON Schema validation, initialize-era schema rules, notification checks, scoped cancellation, instrumentation, the proxy, the guides, the release process, lint prefixes and the wire schema check.
The second (joshrotenberg/presa#42 to joshrotenberg/presa#50) is done too:
DPoP, the JWT-bearer and enterprise-managed grants, task status
notifications on subscriptions/listen, proxy log and input forwarding,
the notebook example, and a fix for a client lane flake. Before the first
release, scope checks were extended to completion and resource
subscriptions, and the JWT verifier was made to require exp.
Open work is filed as issues, labelled by priority and area: https://github.com/joshrotenberg/presa/issues. At the time of writing:
| Issue | Priority |
|---|---|
| none open |
Can you improve this documentation?Edit on GitHub
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |