MCP-CLOJURE-SDK
Un SDK Clojure pour créer des serveurs MCP (et éventuellement les clients)
1
Github Watches
3
Github Forks
18
Github Stars
io.modelcontext/clojure-sdk
A clojure-sdk for creating Model Context Protocol servers!
Table of Contents :TOC_4:
Usage
The calculator_server.clj file and vegalite_server.clj file examples contains a full working code for defining an MCP server.
examples is a deps-new app project, and instructions for compiling
and running the various example servers are in the examples/README.md
file (also copied below this section)
The deps for clojure-sdk are:
{io.modelcontextprotocol/mcp-clojure-sdk
{:git/url "https://github.com/unravel-team/mcp-clojure-sdk.git"
:git/sha "039cf220ac6bb3858f71e823016035e257a5380d"}}
Examples
Building the Examples Jar
$ make clean && make examples-jar
The examples jar contains the following servers:
- Calculator:
calculator_server - Vega-lite:
vegalite_server - Code Analysis:
code_analysis_server
Calculator: calculator_server
Provides basic arithmetic tools: add, subtract, multiply, divide, power, square-root, average, factorial
Some example commands you can try in Claude Desktop or Inspector:
- What's the average of [1, 2, 3, 4, 5]?
- What's the factorial of 15?
- What's 2 to the power of 1000?
- What's the square-root of 64?
Before running the calculator MCP server:
Remember:
- Use the full-path to the examples JAR on your system
In Claude Desktop
"calculator": {
"command": "java",
"args": [
"-Dclojure.tools.logging.factory=clojure.tools.logging.impl/log4j2-factory",
"-Dorg.eclipse.jetty.util.log.class=org.eclipse.jetty.util.log.Slf4jLog",
"-Dlog4j2.contextSelector=org.apache.logging.log4j.core.async.AsyncLoggerContextSelector",
"-Dlog4j2.configurationFile=log4j2-mcp.xml",
"-Dbabashka.json.provider=metosin/jsonista",
"-Dlogging.level=INFO",
"-cp",
"/Users/vedang/mcp-clojure-sdk/examples/target/io.modelcontextprotocol.clojure-sdk/examples-1.2.0.jar",
"calculator_server"
]
}
In MCP Inspector
npx @modelcontextprotocol/inspector java -Dclojure.tools.logging.factory=clojure.tools.logging.impl/log4j2-factory -Dorg.eclipse.jetty.util.log.class=org.eclipse.jetty.util.log.Slf4jLog -Dlog4j2.contextSelector=org.apache.logging.log4j.core.async.AsyncLoggerContextSelector -Dlog4j2.configurationFile=log4j2-mcp.xml -Dbabashka.json.provider=metosin/jsonista -Dlogging.level=INFO -cp examples/target/io.modelcontextprotocol.clojure-sdk/examples-1.2.0.jar calculator_server
Vega-lite: vegalite_server
Provides tools for generating Vega-lite charts: save-data, visualize-data
PRE-REQUISITES: Needs vl-convert CLI to be installed.
Some example commands you can try in Claude Desktop or Inspector:
Here is some example data for you:
[
{ "year": 2011, "value": 14.6, "growth_type": "Market Cap Growth" },
{ "year": 2011, "value": 11.4, "growth_type": "Revenue Growth" },
{ "year": 2011, "value": 26.6, "growth_type": "Net Income Growth" },
{ "year": 2012, "value": 40.1, "growth_type": "Market Cap Growth" },
{ "year": 2012, "value": 42.7, "growth_type": "Revenue Growth" },
{ "year": 2012, "value": 36.9, "growth_type": "Net Income Growth" },
{ "year": 2013, "value": 16.9, "growth_type": "Market Cap Growth" },
{ "year": 2013, "value": 14.6, "growth_type": "Revenue Growth" },
{ "year": 2013, "value": 15.3, "growth_type": "Net Income Growth" },
{ "year": 2014, "value": 9.6, "growth_type": "Market Cap Growth" },
{ "year": 2014, "value": 7.9, "growth_type": "Revenue Growth" },
{ "year": 2014, "value": 10.9, "growth_type": "Net Income Growth" },
{ "year": 2015, "value": 5.8, "growth_type": "Market Cap Growth" },
{ "year": 2015, "value": 6.7, "growth_type": "Revenue Growth" },
{ "year": 2015, "value": 6.2, "growth_type": "Net Income Growth" },
{ "year": 2016, "value": -12.4, "growth_type": "Market Cap Growth" },
{ "year": 2016, "value": -3.9, "growth_type": "Revenue Growth" },
{ "year": 2016, "value": -32.2, "growth_type": "Net Income Growth" },
{ "year": 2017, "value": 25.3, "growth_type": "Market Cap Growth" },
{ "year": 2017, "value": 5.9, "growth_type": "Revenue Growth" },
{ "year": 2017, "value": 43.9, "growth_type": "Net Income Growth" }
]
Visualize this data for me using vega-lite.
Before running the vegalite MCP server
Remember:
- Replace the full-path to the examples JAR with the correct path on your system
- Specify the full-path to
vl-converton your system
In Claude Desktop
"vegalite": {
"command": "java",
"args": [
"-Dclojure.tools.logging.factory=clojure.tools.logging.impl/log4j2-factory",
"-Dorg.eclipse.jetty.util.log.class=org.eclipse.jetty.util.log.Slf4jLog",
"-Dlog4j2.contextSelector=org.apache.logging.log4j.core.async.AsyncLoggerContextSelector",
"-Dlog4j2.configurationFile=log4j2-mcp.xml",
"-Dbabashka.json.provider=metosin/jsonista",
"-Dlogging.level=INFO",
"-Dmcp.vegalite.vl_convert_executable=/Users/vedang/.cargo/bin/vl-convert",
"-cp",
"/Users/vedang/mcp-clojure-sdk/examples/target/io.modelcontextprotocol.clojure-sdk/examples-1.2.0.jar",
"vegalite_server"
]
}
In MCP Inspector
(Remember to use the full-path to the examples JAR on your system, or execute this command from the mcp-clojure-sdk repo)
npx @modelcontextprotocol/inspector java -Dclojure.tools.logging.factory=clojure.tools.logging.impl/log4j2-factory -Dorg.eclipse.jetty.util.log.class=org.eclipse.jetty.util.log.Slf4jLog -Dlog4j2.contextSelector=org.apache.logging.log4j.core.async.AsyncLoggerContextSelector -Dlog4j2.configurationFile=log4j2-mcp.xml -Dbabashka.json.provider=metosin/jsonista -Dlogging.level=INFO -Dmcp.vegalite.vl_convert_executable=/Users/vedang/.cargo/bin/vl-convert -cp examples/target/io.modelcontextprotocol.clojure-sdk/examples-1.2.0.jar vegalite_server
Code Analysis: code_analysis_server
This server is an example of a server which provides prompts and not tools. The following prompts are available: analyse-code and poem-about-code.
You can try the prompts out in Claude Desktop or Inspector. While these prompts are very basic, this is a good way to see how you could expose powerful prompts through this technique.
Before running the code-analysis MCP server
Remember:
- Replace the full-path to the examples JAR with the correct path on your system
In Claude Desktop
"code-anaylsis": {
"command": "java",
"args": [
"-Dclojure.tools.logging.factory=clojure.tools.logging.impl/log4j2-factory",
"-Dorg.eclipse.jetty.util.log.class=org.eclipse.jetty.util.log.Slf4jLog",
"-Dlog4j2.contextSelector=org.apache.logging.log4j.core.async.AsyncLoggerContextSelector",
"-Dlog4j2.configurationFile=log4j2-mcp.xml",
"-Dbabashka.json.provider=metosin/jsonista",
"-Dlogging.level=INFO",
"-cp",
"/Users/vedang/mcp-clojure-sdk/examples/target/io.modelcontextprotocol.clojure-sdk/examples-1.2.0.jar",
"code_analysis_server"
]
}
In MCP Inspector
(Remember to use the full-path to the examples JAR on your system, or execute this command from the mcp-clojure-sdk repo)
npx @modelcontextprotocol/inspector java -Dclojure.tools.logging.factory=clojure.tools.logging.impl/log4j2-factory -Dorg.eclipse.jetty.util.log.class=org.eclipse.jetty.util.log.Slf4jLog -Dlog4j2.contextSelector=org.apache.logging.log4j.core.async.AsyncLoggerContextSelector -Dlog4j2.configurationFile=log4j2-mcp.xml -Dbabashka.json.provider=metosin/jsonista -Dlogging.level=INFO -cp examples/target/io.modelcontextprotocol.clojure-sdk/examples-1.2.0.jar code_analysis_server
Pending Work
You can help dear reader! Head over to the todo.org file to see the list of pending changes, arranged roughly in the order I plan to tackle them.
Development of the SDK
The clojure-sdk is a standard deps-new project, so you should
expect all the deps-new commands to work as expected. Even so:
Run the project's tests:
$ make test ## or clojure -T:build test
Run the project's CI pipeline and build a JAR:
$ make build ## or clojure -T:build ci
This will produce an updated pom.xml file with synchronized
dependencies inside the META-INF directory inside target/classes
and the JAR in target. You can update the version (and SCM tag)
information in generated pom.xml by updating build.clj.
Install it locally:
$ make install ## or clojure -T:build install
Deploy it to Clojars -- needs CLOJARS_USERNAME and
CLOJARS_PASSWORD environment variables (requires the ci task be
run first):
$ make deploy ## or clojure -T:build deploy
Your library will be deployed to io.modelcontext/clojure-sdk on clojars.org by default.
Inspiration
This SDK is built on top of
lsp4clj, which solves the
hard part of handling all the edge-cases of a JSON-RPC based server. I
built this layer by hand and discovered all the edge-cases before
realising that lsp4clj was the smarter approach. The code is super
well written and easy to modify for my requirements.
License
Copyright © 2025 Unravel.tech
Distributed under the MIT License
相关推荐
I craft unique cereal names, stories, and ridiculously cute Cereal Baby images.
I find academic articles and books for research and literature reviews.
Evaluator for marketplace product descriptions, checks for relevancy and keyword stuffing.
Confidential guide on numerology and astrology, based of GG33 Public information
Advanced software engineer GPT that excels through nailing the basics.
Emulating Dr. Jordan B. Peterson's style in providing life advice and insights.
Your go-to expert in the Rust ecosystem, specializing in precise code interpretation, up-to-date crate version checking, and in-depth source code analysis. I offer accurate, context-aware insights for all your Rust programming questions.
Découvrez la collection la plus complète et la plus à jour de serveurs MCP sur le marché. Ce référentiel sert de centre centralisé, offrant un vaste catalogue de serveurs MCP open-source et propriétaires, avec des fonctionnalités, des liens de documentation et des contributeurs.
L'application tout-en-un desktop et Docker AI avec chiffon intégré, agents AI, constructeur d'agent sans code, compatibilité MCP, etc.
Manipulation basée sur Micropython I2C de l'exposition GPIO de la série MCP, dérivée d'Adafruit_MCP230XX
Plateforme d'automatisation de workflow à code équitable avec des capacités d'IA natives. Combinez le bâtiment visuel avec du code personnalisé, de l'auto-hôte ou du cloud, 400+ intégrations.
🧑🚀 全世界最好的 LLM 资料总结 (数据处理、模型训练、模型部署、 O1 模型、 MCP 、小语言模型、视觉语言模型) | Résumé des meilleures ressources LLM du monde.
Une liste organisée des serveurs de protocole de contexte de modèle (MCP)
Reviews
user_6RRaWT7l
I've been using the mcp-clojure-sdk by unravel-team, and it's truly a game-changer for Clojure development. The SDK is well-documented and integrates seamlessly into my projects. The support and resources available via the GitHub link are outstanding. Highly recommend this for anyone looking to streamline their Clojure workflows!