README
🚀 Babashka MCP 服务器
本项目是一个用于与 Babashka(一种用于脚本编写的本机 Clojure 解释器)交互的 Model Context Protocol (MCP) 服务器,能够借助 MCP 工具执行代码并提供一系列便捷功能。
🚀 快速开始
本服务器可实现与 Babashka 的交互,通过 MCP 工具执行代码,还具备结果缓存、命令历史记录访问等功能。使用前需确保 Babashka 已正确安装并配置。
✨ 主要特性
- 通过 MCP 工具执行 Babashka 代码
- 缓存最近命令的结果
- 通过 MCP 资源访问命令历史记录
- 配置命令超时时间
📦 安装指南
安装 Babashka
Babashka 可以通过多种方式安装:
macOS
brew install borkdude/brew/babashka
Linux
bash < <(curl -s https://raw.githubusercontent.com/babashka/babashka/master/install)
Windows
# 使用 scoop 安装
scoop install babashka
有关其他安装方法,请参见 Babashka 官方安装指南。
验证安装
安装完成后,验证 Babashka 是否正常工作:
# 检查版本
bb --version
# 测试简单表达式
bb -e '(+ 1 2 3)'
# 运行从字符串传递的脚本
bb -e '(defn hello [x] (str "Hello, " x "!")) (hello "World")'
# 使用 -i 标志处理输入行
ls | bb -i '(take 2 *input*)'
安装服务器
# 安装依赖项
npm install
# 构建 MCP 服务器
npm run build
📚 详细文档
配置
服务器可通过环境变量进行配置:
BABASHKA_PATH:Babashka 可执行文件的路径(默认值: "bb")
工具
execute
带有可选超时时间的 Babashka 代码执行:
{
name: "execute",
arguments: {
code: string; // 要执行的 Babashka 代码
timeout?: number; // 超时时间(单位:毫秒,默认值:30000)
}
}
示例:
{
name: "execute",
arguments: {
code: "(+ 1 2 3)",
timeout: 5000
}
}
资源
服务器维护一个缓存的最近命令执行结果,可通过以下方式访问:
babashka://commands/{index}- 按索引访问特定命令的结果
Babashka 语言功能
尾调用优化 (TCO)
Babashka 支持通过 recur 特殊形式实现显式尾调用优化,但不支持自动 TCO。例如:
;; 这会导致堆栈溢出
(defn countdown [n]
(if (zero? n)
"done"
(recur (- n 1))))
;; 支持的实现
(defn countdown [n]
(loop [n n]
(when (> n 0)
(println n)
(recur (- n 1)))))
参考文献
有关 MCP 协议和 babashka 的更多信息,请参考:
如果遇到问题或有改进建议,请通过以下方式联系:
- 邮件:support@babashka-project.org
- 论坛:Babashka 用户论坛
Scan to join WeChat group