返回市场
巴aba卡-mcp服务器

巴aba卡-mcp服务器

作者:bmorphism16 星标更新:2025-01-05

项目介绍

Babashka MCP Server

用于与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

# 使用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
    (countdown (dec n))))

;; 使用recur实现TCO
(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文档
    • 使用示例
    • 性能基准测试