Babashka MCP Server について
Babashka MCP Serverは、スクリプト用のネイティブClojureインタープリターであるBabashkaをMCPクライアントから操作するサーバーです。コードを実行し、直近の結果をキャッシュして、コマンド履歴をリソースとして公開します。
主な機能
- 01ツールによるBabashkaコードの実行
- 02直近のコマンド結果のキャッシュ
- 03リソース経由のコマンド履歴へのアクセス
- 04実行タイムアウトの設定
活用シーン
- 01AIクライアントからClojure式を実行
- 02直近のコマンド結果の確認
- 03長いスクリプトへの制限時間の設定
MCP 対応
Babashkaコード実行ツールをMCPクライアントに提供し、babashka://commands/{index}リソースを通じて直近のコマンド結果を公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Babashka MCP サーバー
スクリプト作成用のネイティブ Clojure インタープリターである Babashka と連携するための 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 Book - 公式ドキュメント
- Babashka Examples - サンプルスクリプト集
コミュニティのツールとライブラリ
- 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 実装は、参考および出発点として機能します。
ロードマップ
-
セルフホスト可能な実装
- MCP サーバーを Babashka で書き直す
- Babashka のネイティブ機能を活用してパフォーマンスを向上させる
- Node.js への依存をなくす
- MCP プロトコルとの完全な互換性を維持する
- 現在のすべての機能をサポートする:
- コマンド実行
- リソース管理
- コマンド履歴
- タイムアウト処理
-
機能の強化
- Babashka pods のサポートを追加する
- ファイル監視機能を実装する
- REPL 統合を追加する
- 複数の Babashka インスタンスをサポートする
-
パフォーマンスの最適化
- キャッシュ戦略を実装する
- リソース使用量を最適化する
- 起動時間を短縮する
-
テストとドキュメント
- 包括的なテストスイート
- API ドキュメント
- 使用例
- パフォーマンスベンチマーク
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。