article
README
🚀 Babashka MCP 服务器
Babashka MCP 服务器是一个与 Babashka 交互的 Model Context Protocol (MCP) 服务器。Babashka 是用于脚本编写的原生 Clojure 解释器,本服务器为其提供了便捷的交互方式。
✨ 主要特性
- 🛠️ 通过 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 factorial [n]
(if (= n 0)
1
(* n (factorial (- n 1)))))
(factorial 500)
;; 使用 recur 避免栈溢出
(defn factorial [n]
(defn helper [n acc]
(if (= n 0)
acc
(recur (- n 1) (* acc n))))
(helper n 1))
(factorial 500)
未来发展
Babashka 的未来计划包括:
- 支持多线程和并发执行。
- 提供更高效的代码执行方式。
- 增强的错误处理机制。
- 更好的调试和诊断工具。
微信扫一扫