Babashka服务管理器
启用使用模型上下文协议的 Babashka 脚本的执行和管理,提供缓存、命令历史记录访问和可配置超时等功能,以增强脚本工作流。
可用工具 (1 个)
该服务在 MCP 协议中暴露的工具,AI 可按需调用
execute 2 个参数 需填 1 项
Execute Babashka (bb) code
必填参数:code
服务介绍
Babashka MCP 服务器
一个用于与 Babashka(一种原生的 Clojure 脚本解释器)交互的 Model Context Protocol 服务器。
功能
- 通过 MCP 工具执行 Babashka 代码
- 缓存最近的命令结果
- 通过 MCP 资源访问命令历史记录
- 可配置的命令超时时间
前提条件
安装 Babashka
Babashka 可以通过多种方式安装:
macOS
brew install borkdude/brew/babashka
Linux
bash < <(curl -s https://raw.githubusercontent.com/babashka/babashka/master/install)
Windows
# 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")
工具
execute
使用可选超时时间执行 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 书籍 - 官方文档
- 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文档
- 使用示例
- 性能基准测试