Back to MCP directory
publicPublicdnsLocal runtime

babashka-mcp-server

一个用于与Babashka交互的MCP服务器,支持执行Clojure脚本、缓存结果和命令历史访问。

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 的未来计划包括:

  • 支持多线程和并发执行。
  • 提供更高效的代码执行方式。
  • 增强的错误处理机制。
  • 更好的调试和诊断工具。
help

Runtime guide

cloud

Hosted runtime

Hosted servers run from a provider-managed environment. You usually connect the MCP client to the hosted endpoint or follow the provider's authorization flow, without keeping a local process alive

  1. Open provider connection page
  2. Authorize or copy endpoint
  3. Connect from your MCP client
terminal

Local runtime / other methods

Local servers run on your own machine or infrastructure. You normally copy the server_config into your MCP client, install the required package, and provide env variables from env_schema when needed

  1. Copy server_config
  2. Install required package
  3. Fill env variables and restart client