Babashka 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)
视窗
# Using scoop
scoop install babashka
其他安装方法请参见Babashka官方安装指南。
验证安装
安装后,验证 Babashka 是否正常工作:
# Check version
bb --version
# Try a simple expression
bb -e '(+ 1 2 3)'
# Run a script from string
bb -e '(defn hello [x] (str "Hello, " x "!")) (hello "World")'
# Use -i flag to process lines of input
ls | bb -i '(take 2 *input*)'
安装
# Install dependencies
npm install
# Build the MCP server
npm run build
配置
可以通过环境变量配置服务器:
BABASHKA_PATH
:Babashka 可执行文件的路径(默认值:“bb”)
工具
执行
使用可选超时执行 Babashka 代码:
{
name: "execute",
arguments: {
code: string; // Babashka code to execute
timeout?: number; // Timeout in milliseconds (default: 30000)
}
}
例子:
{
name: "execute",
arguments: {
code: "(+ 1 2 3)",
timeout: 5000
}
}
资源
服务器维护最近执行的命令的缓存,可通过以下方式访问:
babashka://commands/{index}
- 通过索引访问特定的命令结果
Babashka 语言功能
尾部调用优化(TCO)
Babashka 通过recur
特殊形式支持显式尾调用优化,但不实现自动 TCO。例如:
;; This will cause stack overflow
(defn countdown [n]
(if (zero? n)
:done
(countdown (dec n))))
;; This works with TCO using recur
(defn countdown [n]
(if (zero? n)
:done
(recur (dec n))))
有用的资源
官方资源
社区工具和图书馆
开发工具
发展
该服务器最终设计为自托管,这意味着它将用 Babashka 本身重写。当前的 TypeScript 实现可作为参考和起点。
路线图
- 自托管实施
- 使用 Babashka 重写 MCP 服务器
- 利用 Babashka 的原生功能获得更好的性能
- 删除 Node.js 依赖项
- 保持与 MCP 协议的完全兼容
- 支持所有当前功能:
- 增强功能
- 添加对 Babashka pods 的支持
- 实现文件监视功能
- 添加 REPL 集成
- 支持多个 Babashka 实例
- 性能优化
- 测试与文档