Babashka MCP服务器

一个用于与Babashka交互的模型上下文协议服务器,提供代码执行、结果缓存和命令历史访问功能。

  • by bmorphism
  • JavaScript
  • 本地部署
  • 20 星标
  • 更新于
在 GitHub 查看 bmorphism/babashka-mcp-server

使用说明

Babashka MCP服务器

一种用于交互的模型上下文协议服务器 巴巴什卡,一个用于脚本编写的原生Clojure解释器。

特性

  • 通过MCP工具执行Babashka代码
  • 缓存最近的命令结果
  • 通过MCP资源访问命令历史记录
  • 可配置的命令超时

先决条件

安装Babashka

Babashka可以通过多种方式安装:

macOS

brew install borkdude/brew/babashka

Linux

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实现可以作为参考和起点。

路线图

  1. 自托管实施

    • 在Babashka中重写MCP服务器
    • 利用Babashka的原生功能实现更好的性能
    • 删除Node.js依赖项
    • 保持与MCP协议的完全兼容性
    • 支持所有当前功能:
      • 命令执行
      • 资源管理
      • 命令历史记录
      • 超时处理
  2. 增强功能

    • 添加对Babashka Pod的支持
    • 实现文件监视功能
    • 添加REPL集成
    • 支持多个Babashka实例
  3. 性能优化

    • 实施缓存策略
    • 优化资源使用
    • 缩短启动时间
  4. 测试和文件

    • 全面的测试套件
    • API文档
    • 使用示例
    • 性能基准