Clojure MCP を触ってみる
セットアップ
前提
$ clj -Tclj-new app :name clojure-mcp-example.main
2. deps.edn > :aliases に nrepl を追加する code:deps.edn
{
;; 省略
:aliases {
:extra-deps {nrepl/nrepl {:mvn/version "1.3.1"}}
3. nrepl サーバを立ち上がるかチェックする
$ clj -M:nrepl
4. deps.edn > :aliases に MCP Server に必要な依存関係と設定を追加する code:deps.edn
{
;; 省略
:aliases {
;; 省略
:mcp {:deps {org.slf4j/slf4j-nop {:mvn/version "2.0.16"}
:git/tag "v0.1.8-alpha"
:git/sha "457f197"}}
:exec-fn clojure-mcp.main/start-mcp-server
:exec-args {:port 7888}}}}
5. MCP Server が立ち上がるかチェックする
$ clj -X:mcp
6. 以下を実行して MCP Client の設定を追加
$ claude mcp add clojure-mcp -s project -- clj -X:mcp :port 7888
生成されたファイル
code:.mcp.json
{
"mcpServers": {
"clojure-mcp": {
"type": "stdio",
"command": "clj",
"args": [
"-X:mcp",
":port",
"7888"
],
"env": {}
}
}
}
実際に動かしてみる
REPL サーバを立ち上げる
$ clj -M:nrepl
実行したプロンプト
code:md
スターリンソートを REPL 駆動開発で実装してください。
結果
clojure_eval でゴリゴリ REPL で動作確認しながら実装しているのが確認できる
https://gyazo.com/b45a6bf1ee15ae9526e7992e215fced4
所感
トークンはゴリゴリ減っていく
開発時に用いていた動作確認用の関数も成果物に含めていたので、プロンプトによる制御は必要そう
REPL 駆動開発に関するソース・ドキュメントも作成しておくと better