This library is a very unofficial MCP SDK in Clojure.
It handles the communication between MCP clients and MCP servers, and attempts to provide a Clojure-ish experience to developers working on expending the MCP ecosystem.
Status: alpha quality
Tested on Claude Desktop and Claude Code, no problems found for the features implemented.
- API for both clients & servers
- CLJC
- Clojure
- Clojurescript
- Babashka
- I/O agnostic library
- Uses Promesa to support async tasks in prompts, resources and tools
- Compatible with protocol versions
-
2024-11-05
-
2025-03-26
-
2025-06-18
(not yet)
-
- MCP features implemented
- Cancellation
- Ping
- Progress
- Roots
- Sampling
- Prompts
- Resources
- Tools
- Completion
- Logging
- Pagination
- Example projects
- CLJC server using STDIO
- CLJC client using STDIO
- CLJ server using HTTP/SSE
- CLJ server using Streamable HTTP (PR welcome)
See the README.md
in the example/cljc-server-stdio/
project to learn:
- how to use this library to make your own MCP server in Clojure, and
- how to develop its components (prompts, resources and tools) via the REPL while the server is running.
Additionally, see the documentation on CLJDocs or in the doc/
directory.
npm install
./bin/kaocha --watch
MCP toolkit aims to be more convenient for the Clojure community than the official MCP SDKs for Java or Typescript.
It provides utilities to build an MCP server in Clojure(script), but doesn't provide any prompts, resources or tools to help working on a Clojure codebase. It is typically used for building general purpose MCP stuffs.
- MCP Clojure SDK: similar library, discovered after being mostly done implementing this one 😅
- Calva's Backseat Driver
- Clojure MCP
- Modex
This project is distributed under the Eclipse Public License v2.0.
Copyright (c) Metosin and contributors.