🐥

clojure-mcp を claude code で実行したときの接続の流れをメモ

に公開

先日、clojure-mcp を claude desktop で実行したときの接続の流れをメモ という記事を書きました。
https://zenn.dev/shinseitaro/articles/try-clojure-mcp

今回は Claude Code で行ってみます。

ClojureMCPのセットアップは、現在アルファ版であるため、簡単にインストールできるように最適化されていません。このガイドでは、プロセスをステップごとに説明します。

といっても難しいことはなくて

  • .clojure/deps.edn に間違いなく設定すること
  • REPLのポートを間違えないこと
  • 起動の順番を間違えないこと

を守れば大丈夫です!

1. セッティング

1.1. .clojure/deps.edn

.clojure/deps.edn に設定を記述することで Clojure MCP Server をインストールします。

.clojure/deps.edn
{:aliases
  {:mcp
    {:deps {org.slf4j/slf4j-nop {:mvn/version "2.0.16"} ;; Required for stdio server
            com.bhauman/clojure-mcp {:git/url "https://github.com/bhauman/clojure-mcp.git"
                                     :git/tag "v0.1.8-alpha"
                                     :git/sha "457f197"}}
     :exec-fn clojure-mcp.main/start-mcp-server
     :exec-args {:port 7888}}}}
  • 最新の SHA は https://github.com/bhauman/clojure-mcp/commits/main を参照してください
  • ポートはこのあと設定する Project ディレクトリに合わせて変更してもいいですし、7888と固定して、ProjectのREPLを必ず7888で開けるようにしても良いです。

1.2. Project ディレクトリ

deps.edn

簡単なClojureプロジェクトを作ります。

mkdir example 
cd example
touch deps.edn 
{:paths ["src"]
 :aliases {: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/deps.edn が必ず同値である必要があります。
  • この設定で一度REPLを立ち上げ、エラーが起きなければOKです。
    ➜ clj -M:nrepl
    rlwrap: warning: could not set locale
    warnings can be silenced by the --no-warnings (-n) option
    nREPL server started on port 7888 on host localhost - nrepl://localhost:7888
    
    
  • テストしたらREPLは必ずCloseしてください。

.mcp.json

次に Clojure-MCP を Claude Codeに 追加します。ここでは、このProjectにおいてのみ使える状態で追加します。

まず、Projectディレクトリ直下に .mcp.jsonを作成してください。

touch .mcp.json

そして、以下を記述します。

{
  "mcpServers": {
    "clojure-mcp": {
      "command": "/bin/bash",
      "args": [
        "-c",
        "clojure -X:mcp :port 7888"
      ]
    }
  }
}

こんな感じです。

2. 起動

起動の順番がとても大切で、必ず

  1. ProjectのNREPLを立ち上げる
  2. Claude Codeを立ち上げる

という順番を守ってください。

まず、Projectと立ち上げましょう。

clj -M:nrepl

次に Claude Codeを起動します。

claude

すると以下のように、.mcp.json の clojure-mcp の実行してもいいですか?というようなメッセージが出ますので使う選択をします。

別のMCPサーバを追加した場合は、必ず Claude Code を再起動して、同様に適用させてください。

確認

claude code チャットに /mcp と送信すると現在使えるMCPサーバがリストされ、Statusを確認できます。

テスト

ではプロンプトでテストしてみましょう

src/hoge.clj に clojure-mcp を使って何かClojureらしいコードを書いてください。

すると、このように clojure-mcp の tool を使いますよ?という確認をしてくるはずです。これでOK!です。

バシバシOKして clojure を書いてもらいましょう!

トラブルシューティング

Error building classpath. Error reading edn. Invalid file, expected edn to contain a single value. (~/.clojure/deps.edn)

このエラーは ~/.clojure/deps.edn での階層の書き方が間違ってます。よーく見直してください。

Repository

書いたものはここにおいておきました。ご参考にどうぞ。

https://github.com/shinseitaro/try-clojure-mcp-with-claude-code

Discussion