Babashka MCP 服务器
用于与Babashka (用于脚本的本机 Clojure 解释器)交互的模型上下文协议服务器。
特征
通过 MCP 工具执行 Babashka 代码
缓存最近的命令结果
通过 MCP 资源访问命令历史记录
可配置命令超时
Related MCP server: Akash MCP Server
先决条件
安装 Babashka
Babashka 可以通过多种方式安装:
macOS
brew install borkdude/brew/babashkaLinux
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 GitHub 存储库- 主要 Babashka 项目
Babashka Book - 官方文档
Babashka 示例- 示例脚本集合
社区工具和图书馆
pod-babashka-buddy -Babashka 的加密 API
bb-clis - 有用的 Babashka CLI 脚本集合
bb-scripts - Babashka 的各种实用脚本
开发工具
setup-babashka - 用于安装 Babashka 的 GitHub Actions
babashka-docker-action - 在 GitHub Actions 中运行 Babashka 脚本
发展
该服务器最终设计为自托管,这意味着它将用 Babashka 本身重写。当前的 TypeScript 实现可作为参考和起点。
路线图
自托管实施
使用 Babashka 重写 MCP 服务器
利用 Babashka 的原生功能获得更好的性能
删除 Node.js 依赖项
保持与 MCP 协议的完全兼容
支持所有当前功能:
命令执行
资源管理
命令历史记录
超时处理
增强功能
添加对 Babashka pods 的支持
实现文件监视功能
添加 REPL 集成
支持多个 Babashka 实例
性能优化
实施缓存策略
优化资源使用
减少启动时间
测试与文档
综合测试套件
API 文档
使用示例
性能基准