Babashka MCP服务器
一种用于交互的模型上下文协议服务器 巴巴什卡,一个用于脚本编写的原生Clojure解释器。
特性
- 通过MCP工具执行Babashka代码
- 缓存最近的命令结果
- 通过MCP资源访问命令历史记录
- 可配置的命令超时
先决条件
安装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}-按索引访问特定命令结果
巴巴什卡语言特征
尾部呼叫优化(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 Pod的支持 - 实现文件监视功能 - 添加REPL集成 - 支持多个Babashka实例
- 性能优化
- 实施缓存策略 - 优化资源使用 - 缩短启动时间
- 测试和文件
- 全面的测试套件 - API文档 - 使用示例 - 性能基准

