🔀
clojure-mcp を claude desktop で実行したときの接続の流れをメモ
先週から Clojurian Slack の #ai-assisted-coding チャンネルで大話題になっている bhauman/clojure-mcp: Clojure MCP を私のマシンで試して見ました。
そのメモを残します。
1. 通信図
(私の理解が正しければ)MCP-Client ⇔ Clojure-MCP (MCP server) ⇔ 自分のClojure Project は以下の図のような通信でつながっています。
- nREPL ポートは7888で開けたものとしています。
2. セッティング
Claude Desktop はインストール済みであると仮定しています。
2.1. MCP Client (Claude Desktop) と MCP Server (Clojure-MCP)
- clojure-mcp を Clone
git clone git@github.com:bhauman/clojure-mcp.git
- Claude Desktop セッティング
~/.config/Claude/claude_desktop_config.json
(このパスが見つからない場合は、Claude Desktop > ファイル > 設定 > 開発者 > 構成を編集
で見つかります。)claude_desktop_config.json{ "mcpServers": { "clojure-mcp": { "command": "/bin/sh", "args": [ "-c", "cd /to/your/path/clojure-mcp && PATH=/opt/homebrew/bin:$PATH && clojure -X:mcp :port 7888" ] } } }
-
/to/your/path/clojure-mcp
は先程 clone した clojure-mcp のローカルディレクトリへのパス -
/opt/homebrew/bin
はwhich clojure
コマンドで返るパス
-
-
.clojure/deps.edn
の更新- グローバル
deps.edn
である.clojure/deps.edn
にエイリアスとして、mcp を追加する。 - (TODO:あとでローカルの環境でも試す)
.clojure/deps.edn{:aliases {:mcp {:deps {org.slf4j/slf4j-nop {:mvn/version "2.0.16"} com.bhauman/clojure-mcp {:git/url "https://github.com/bhauman/clojure-mcp.git" :git/sha "latest-main-branch-sha"}} :exec-fn clojure-mcp.main/start-mcp-server :exec-args {:port 7888}}}}
-
latest-main-branch-sha
には、github から最新の SHA をコピーして貼り付け - この文字列です:
- グローバル
2.2. MCP Server (Clojure-MCP) と 自分のClojure Project
- 自分のProject でnREPL サーバを立ち上げる
- 例として簡単なClojureプロジェクトを作ります。
mkdir myapp cd myapp touch deps.edn
deps.edn{:paths ["src"] :aliases {} ;; nREPL server for AI to connect to :nrepl {:extra-paths ["test"] :extra-deps {nrepl/nrepl {:mvn/version "1.3.1"}} :jvm-opts ["-Djdk.attach.allowAttachSelf"] :main-opts ["-m" "nrepl.cmdline" "--port" "7888"]}}
clojure -M:nrepl
- Claude Desktop を起動(再起動)
-
+
ボタンで確認
-
3. 接続の流れ
Claude Desktopが起動したときに起きる、接続の流れは(おそらく)以下の通りです。
- 起動 -> Claude Desktopが MCP-server の設定を
claude_desktop_config.json
で確認。 -
clojure-mcp
のセッション開始準備cd /to/your/path/clojure-mcp PATH=/opt/homebrew/bin:$PATH
-
cd
はこのあとstart-mcp-server
関数を実行するための cd
-
-
.clojure/deps.edn
の:mcp
を確認。:exec-fn clojure-mcp.main/start-mcp-server
に従って、MCP-Serverを立ち上げる。clojure -X:mcp :port 7888
-
-X
オプションは、:exec-fn
またはmain-opts
で定義された関数を実行するためのオプション -
-X:mcp
にすることで、:mcp
の:exec-fn
を実行している。 -
clojure-mcp.main/start-mcp-server
はこれ↓。この中で port を引数に取って、nREPLへの接続を行っている。
-
この流れで図で示した接続を作っているみたいです。
Discussion