返回 MCP 目录
public公开dns本地运行

bmorphism_babashka-mcp-server

一个基于Babashka的MCP服务器,支持通过MCP工具执行Clojure脚本,提供命令缓存、历史访问和超时配置等功能。

article

README

🚀 Babashka MCP 服务器

本项目是一个用于与 Babashka(一种用于脚本编写的本机 Clojure 解释器)交互的 Model Context Protocol (MCP) 服务器,能够借助 MCP 工具执行代码并提供一系列便捷功能。

🚀 快速开始

本服务器可实现与 Babashka 的交互,通过 MCP 工具执行代码,还具备结果缓存、命令历史记录访问等功能。使用前需确保 Babashka 已正确安装并配置。

✨ 主要特性

  • 通过 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 countdown [n]
  (if (zero? n)
      "done"
      (recur (- n 1))))

;; 支持的实现
(defn countdown [n]
  (loop [n n]
    (when (> n 0)
      (println n)
      (recur (- n 1)))))

参考文献

有关 MCP 协议和 babashka 的更多信息,请参考:

如果遇到问题或有改进建议,请通过以下方式联系:

help

运行方式说明

cloud

托管运行

托管运行通常表示这个 MCP Server 由服务方环境承载,用户一般按页面提供的连接方式或授权流程接入,不需要在本地长期启动一个 MCP 进程

  1. 打开服务方连接页
  2. 完成授权或复制端点
  3. 在 MCP 客户端中连接
terminal

本地运行 / 其它方式

本地运行通常需要用户在自己的电脑或服务器上安装依赖,把 server_config 复制到 MCP 客户端,并按 env_schema 补齐环境变量、密钥或其它配置

  1. 复制 server_config
  2. 安装所需依赖
  3. 补齐环境变量后重启客户端