clojure-mcp-light: Claude CodeでClojure開発をシンプルに
clojure-mcp の開発者である Bruce Hauman さんが新しく clojure-mcp-light というプロジェクトを開始しました。本記事では、このプロジェクトが生まれた背景、既存の clojure-mcp との違い、そして誰がどのような場面で使うべきかを解説します。
内容は、Clojurian Slack / ai-assisted-coding で、2025/11/05 07:33:29 に開始されたスレッドに基づいています。
なぜこのプロジェクトが生まれたのか?
開発の動機は以下2つのようです。
1. clojure-mcp は複雑すぎる
clojure-mcp-light が生まれた背景には、
「Claude CodeでClojureを使うのに、本当に必要な最小限のツールは何か?」
というシンプルな問いがあります。
既存の clojure-mcp は、LLMのループ以外のすべてを備えたフルスペックのコーディングアシスタントです。それゆえに、
- セットアップが複雑
- メンテナンスコストが高い
- Claude Codeのデフォルトツールとの統合に課題がある
という問題を抱えています。
Bruceさんは、
「Claudeは自身のツールに対してファインチューニングされているはず。だとすれば、Claude純正ツールに寄せたアプローチの方が、より良い結果を得られるのではないか?」
という仮説たて、検証するために、clojure-mcp-light の開発を始めました。
2. Claude Code Webへの対応
もう一つの重要な動機は、Claude Code Webでの動作です。Claude Code Webはサンドボックス環境で動作するため、複雑なMCPサーバーのセットアップは困難です。一方、フックベースのシンプルなアプローチなら、この環境でも動作する可能性があります。
clojure-mcpとの違い
機能比較表
| 特徴 | clojure-mcp | clojure-mcp-light |
|---|---|---|
| アプローチ | フルスペックMCPサーバー | フック + スクリプト |
| ツール | カスタムツール多数 | Claude純正ツール + 拡張 |
| セットアップ | 複雑(MCPサーバー必要) | シンプル(フックのみ) |
| 構造編集 | 専用ツール(clojure_edit等) | Parinferによる自動修正 |
| REPL評価 | 統合されたツール | スクリプトベース |
| DIFF表示 | カスタム実装 | Claude純正(IntelliJ統合可) |
| ファイル保護 | 編集前検証 | プレフックで検証 |
| Claude Code Web | ❌ 困難 | ✅ 対応可能 |
| メンテナンス | 複雑 | シンプル |
技術的な違い
1. Parinferの統合方法
clojure-mcp:
- 独自の構造編集ツールを提供
-
clojure_edit、clojure_edit_replace_sexpなど専用コマンド - ファイルを不正な区切り文字状態にすることは決してない
clojure-mcp-light:
- Claude純正のEdit/Writeツールを使用
- フックでParinferを後処理として適用
- 区切り文字エラーがある場合のみParinferを実行
- ファイルが破損して修正できない場合はロールバック
# フックの動作イメージ
1. Claude が Edit/Write ツールでファイルを編集
2. プレフック: 区切り文字チェック
3. エラーがあれば Parinfer で修正試行
4. 修正できなければロールバック
2. REPLの実装
clojure-mcp:
- MCPツールとして統合 (一番のウリ)
-
structuredContentで美しい結果表示 - セッション管理が統合されている
clojure-mcp-light:
- シンプルなスクリプトベース
- タイムアウトと中断を処理
- Parinferを通してから評価
- セッションの永続性を保証(
*ns*で検証可能)
このプロジェクトでHappyになりそうなこと
つまりどういうことを解決してくれるのか?というと、
セットアップの複雑さ
MCPサーバーのセットアップは、特に初心者には敷居が高いものです。clojure-mcp-light は、
- 設定ファイルにフックを追加するだけで動作
-
bb installで簡単にインストール可能(計画中) - Claude Code Webではリポジトリのクローンだけで動作
括弧バランシングの自動修正
Clojureを書くLLMの最大の弱点は、括弧のバランシングです。LLMは本質的に自己回帰的な自動補完器であり、閉じ括弧を管理するための「スタック」を持っていません。
clojure-mcp-light は、Parinferをフックとして統合することで、この問題を透過的に解決します。
;; LLMが生成したコード(括弧が不足)
(defn calculate-tax [amount rate]
(* amount rate) ;; 閉じ括弧が足りない!
;; Parinferが自動修正
(defn calculate-tax [amount rate]
(* amount rate)) ;; ✅ 修正完了
このプロジェクトで制限されること
一方で、clojure-mcp のほうがよいところは、というと、
1. 構造編集の制限
- clojure-mcpのような専用構造編集ツールはない
- 複雑なS式の編集では、まれにParinferが失敗することも
- 回避策: コードを小さな関数に分割し、深いネストを避ける
2. デバッグ体験
-
structuredContentのような豊富な結果表示はない - シンプルなテキストベースの出力
-
回避策: 必要に応じてclojure-mcpの
:clojure_evalのみを有効化
3. Markdown編集との混在
- Clojure特化のため、Markdownとの混在編集で問題が起きる可能性
- 回避策: デフォルトツールに戻すか、選択的にツールを有効化
4. 高度な機能
- clj-kondoやnrepl-refactorとの深い統合はまだ実験段階
- 将来的な方向性: これらのツールをフックとして統合予定
誰が使うべきか?
推奨するケース
ケース1: プロジェクトの立ち上げ段階
新しいClojureプロジェクトを始める際、まずは clojure-mcp-light でシンプルに始めることをお勧めします。
# セットアップ例
1. プロジェクトを作成
2. .claude/config に フックを追加
3. 開発開始!
ケース2: チーム開発での標準化
チーム全体で統一したツーリングを使いたい場合、シンプルな clojure-mcp-light は:
- オンボーディングが簡単
- トラブルシューティングが容易
- ドキュメント作成の負担が少ない
ケース3: Claude Code Webユーザー
サンドボックス環境で作業する必要がある場合、これが現時点でほぼ唯一の選択肢です。
ケース4: 実験的な開発
新しいアイデアを素早く試したい場合、セットアップが軽量な clojure-mcp-light が最適です。
clojure-mcpを使うべきケース
以下の場合は、フルスペックの clojure-mcp の方が適しています:
-
複雑なリファクタリング
- 大規模なコード変更
- 構造編集の高度な機能が必要
-
デバッグ集中作業
- REPLで反復的にテストを実行
- 豊富な結果表示が必要
-
既に導入済み
- すでに
clojure-mcpを使っていて満足している - チームで標準化されている
- すでに
ハイブリッドアプローチ
実は、両方を併用することもできます:
;; clojure-mcp の設定例
{:disable-tools [:clojure_edit :clojure_edit_replace_sexp] ; 編集ツールは無効化
:enable-tools [:clojure_eval]} ; 評価のみ有効化
この設定により:
- 通常の編集は
clojure-mcp-lightのフック経由 - REPLの評価のみ
clojure-mcpの高度な機能を使用 - 両方の良いとこ取りが可能
Bruce さん本人もお気に入りぽい
と本人が言っているので、これは期待❤️。使ってみようと思います。
今後の展開
関連プロジェクト
- nextdoc/ai-tools: 同様のアプローチを3ヶ月使用して効果的
- kennyjwilli/claude-clojure-tools: プラグインとして実装
短期的な計画
-
bb installによるインストール対応
- スクリプトのインストールを簡単に
- バージョン管理の改善
-
Claude Code プラグイン化
- さらに簡単なインストール
- 一般ユーザーへの普及
-
統計収集機能
- Parinferがエラーを修正した回数をカウント
- どの操作が括弧エラーを生成するかを追跡
長期的な展望
-
複数Lisp対応
- Elisp、Scheme、Racketなど
-
parinfer-rustは複数言語に対応
-
修復CLIの独立化
- ClojureScript(CLJS)での実装
- Edamame + parinfer.js
- npm経由でインストール可能な単一実行ファイル
- cljs-shrinkwrapで単一ファイル化
-
フックの組み合わせ可能性
- clj-kondo、cljfmtなどをフックとして統合
- トークン節約のための最適化
- 正しい順序での実行
リンク
- clojure-mcp-light: https://github.com/bhauman/clojure-mcp-light
- clojure-mcp: https://github.com/bhauman/clojure-mcp
- nextdoc/ai-tools: https://github.com/nextdoc/ai-tools
- kennyjwilli/claude-clojure-tools: https://github.com/kennyjwilli/claude-clojure-tools
Discussion