使用说明
mcp bb clj
用clojure为babashka编写的MCP服务器/客户端
MCP协议的实施(https://modelcontextprotocol.io/specification/2025-06-18/schema)仅使用babashka(clojure)库 https://book.babashka.org/#libraries
拆分实施:
- 通过纯函数进行数据操作
- 使用http skit服务器公开该函数。
- 也做一个客户。
灵感来源:
- https://github.com/hugoduncan/mcp-clj
工具
服务器附带了几个内置工具:
- cljfmt:使用格式化Clojure代码 cljfmt.
- 输入:
code(字符串)
- 输入:
- zprint:使用以下格式格式化Clojure代码或EDN zprint.
- 输入:
code(字符串),options(可选EDN字符串)
- 输入:
- 查找格式错误的分隔符:检查Clojure代码中的分隔符是否格式错误。
- 输入:
code(字符串)
- 输入:
- clj kondo:Lints Clojure代码使用 clj kondo.
- 输入:
code(字符串) - 先决条件:The
clj-kondo二进制文件必须在系统PATH中安装并可用。
- 输入:
- 回声:回显输入文本。
- Malli工具:使用Malli模式的工具(
validate-schema,generate-sample,infer-schema).
添加新工具和提示
添加工具
要添加新工具,请将其定义为映射并在中注册 src/mcp_bb_clj/core.clj.
-
定义工具:
工具定义需要
:name,:description,:inputSchema(JSON模式),以及:implementation功能。例子:
(def my-tool {:name "my-tool" :description "A custom tool description" :inputSchema {:type "object" :properties {"arg" {:type "string"}} :required ["arg"]} :implementation (fn [{:keys [arg]}] {:content [{:type "text" :text (str "You said: " arg)}]})}) -
注册该工具:
将工具添加到
mcp-server/add-tool!打电话src/mcp_bb_clj/core.clj.(mcp-server/add-tool! mcp-server {:tools [echo-tool my-tool]})
添加提示
提示可以类似地定义并用作模板。
-
定义提示:
(def my-prompt {:name "explain-code" :description "Explains the provided code." :arguments {:type "object" :properties {"code" {:type "string"}} :required ["code"]} :messages [{:role "user" :content "Explain this code:\n\n{{code}}"}]})