mcpField
M
mcp-clj

mcp-clj

ローカル
github.com/hugoduncan開発ツール5837 週間前に更新

mcp-clj について

mcp-clj は Clojure で実装された MCP ライブラリで、サーバーとクライアントの両方を提供し、依存関係は最小限です。サーバープロセス内で Clojure を直接評価するため、Claude Desktop などのクライアントから REPL を利用したい開発者に適しています。

主な機能

  1. 01サーバーとクライアントの実装
  2. 02組み込みの clj-eval と ls ツール
  3. 03stdio・SSE・インメモリのトランスポート
  4. 04org.clojure/data.json のみに依存
  5. 05nREPL を必要としない自己完結型 REPL

活用シーン

  1. 01Clojure REPL の機能を Claude Desktop に公開
  2. 02Clojure アプリケーションから他の MCP サーバーへ接続
  3. 03外部 REPL を使わないシンプルなデプロイ

MCP 対応

本プロジェクトは stdio または SSE 経由で clj-eval と ls ツールを公開する MCP サーバーとして動作するほか、他の MCP サーバーに接続する MCP クライアントとしても動作します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

mcp-clj

最小限の依存関係と、自己完結型の Clojure REPL 統合を備えた、Model Context Protocol(MCP)の Clojure 実装です。

クイックスタート

# Add to deps.edn
{:deps {org.hugoduncan/mcp-clj
        {:git/url   "https://github.com/hugoduncan/mcp-clj"
         :git/sha   "latest-commit-sha"
         :deps/root "projects/server"}}}
;; Start MCP server
(require 'mcp-clj.mcp-server.core)
(def server (mcp-clj.mcp-server.core/create-server {:transport {:type :stdio}}))

;; Server exposes tools like clj-eval and ls
;; Connect with Claude Desktop via stdio transport (see Claude Desktop Setup)

移動先: インストール • クライアントの使い方 • Claude Code のセットアップ • Claude Desktop のセットアップ • 開発

概要と理由

mcp-clj は、Clojure で MCP サーバーとクライアントの両方を実装しています。

  • 自己完結型 REPL:サーバープロセス内で Clojure を直接評価します(nREPL への依存はありません)
  • 依存関係が少ない:必要なのは org.clojure/data.json のみです
  • 複数のトランスポート:SSE(HTTP)、stdio、テスト用のインメモリに対応しています
  • 組み込みツール:Clojure の評価(clj-eval)と、gitignore に対応したファイル一覧表示(ls)を提供します
  • MCP クライアント:Clojure から他の MCP サーバーに接続できます

mcp-clj の使用に適したケース:

  • Clojure REPL の機能を Claude Desktop や他の MCP クライアントに公開する
  • MCP サービスを利用する Clojure アプリケーションを構築する
  • 外部 REPL への依存なしでシンプルにデプロイする

clojure-mcp と比較した場合のトレードオフ:

  • ✅ セットアップがより簡単で、評価機能が自己完結しています
  • ❌ 既存のリモート REPL には接続できません
  • ❌ 組み込みツールが少なくなっています

インストール

Git 依存関係(推奨)
;; deps.edn
{:deps {org.hugoduncan/mcp-clj
        {:git/url   "https://github.com/hugoduncan/mcp-clj"
         :git/sha   "latest-commit-sha"  ; Replace with actual latest SHA
         :deps/root "projects/server"}}}
CLI の使い方
# Clone and run directly
git clone https://github.com/hugoduncan/mcp-clj
cd mcp-clj

# Start stdio server (recommended for Claude Desktop)
clj -M:stdio-server

# Start SSE server (HTTP) on port 3001 (default)
clj -M:sse-server

# Start SSE server on custom port
clj -M:sse-server --port 8080

サーバーの使い方

基本的なサーバー
(require 'mcp-clj.mcp-server.core)

;; Stdio server (recommended for Claude Desktop)
(def server (mcp-clj.mcp-server.core/create-server
             {:transport {:type :stdio}}))

;; SSE server (for HTTP-based clients)
(def server (mcp-clj.mcp-server.core/create-server
             {:transport {:type :sse :port 3001}}))

;; Stop server
((:stop server))
カスタムツール
(def echo-tool
  {:name "echo"
   :description "Echo the input text"
   :inputSchema {:type "object"
                 :properties {"text" {:type "string"}}
                 :required ["text"]}
   :implementation (fn [{:keys [text]}]
                     {:content [{:type "text" :text text}]
                      :isError false})})

;; Server with custom tools
(def server (mcp-clj.mcp-server.core/create-server
             {:transport {:type :sse :port 3001}
              :tools {"echo" echo-tool}}))

;; Add tools dynamically
(mcp-clj.mcp-server.core/add-tool! server echo-tool)
組み込みツール

clj-eval:Clojure の式を評価します

{"name": "clj-eval", "arguments": {"code": "(+ 1 2 3)"}}
// Returns: "6"

ls:gitignore に対応したファイル一覧を表示します

{"name": "ls", "arguments": {"path": "src", "max-depth": 2, "max-files": 50}}
// Returns: {"files": [...], "truncated": false, "total-files": 12}

クライアントの使い方

Clojure から他の MCP サーバーに接続します。

(require 'mcp-clj.mcp-client.core)

;; Connect to stdio MCP server
(def client (mcp-clj.mcp-client.core/create-client
             {:transport {:type :stdio
                          :command "clojure"
                          :args ["-M:stdio-server"]}
              :client-info {:name "my-client" :version "1.0.0"}}))

;; Wait for connection
(mcp-clj.mcp-client.core/wait-for-ready client)

;; List available tools
(mcp-clj.mcp-client.core/list-tools client)
;; => {:tools [{:name "clj-eval" :description "..." :inputSchema {...}}]}

;; Call a tool
@(mcp-clj.mcp-client.core/call-tool client "clj-eval" {:code "(* 6 7)"})
;; => {:content [{:type "text" :text "42"}] :isError false}

;; Cleanup
(.close client)

Claude Code のセットアップ

Claude Code は stdio トランスポートを使用して mcp-clj サーバーに接続できます。

1. プロジェクトに mcp-clj を追加する

deps.edn に追加します。

{:aliases
 {:mcp {:extra-deps {org.hugoduncan/mcp-clj
        {:git/url   "https://github.com/hugoduncan/mcp-clj"
         :git/sha   "latest-commit-sha"
         :deps/root "projects/server"}}
 :main-opts ["-m" "mcp-clj.stdio-server.main"]}}}
2. Claude Code を設定する

Claude Code の CLI を使用して MCP サーバーを追加します。

claude mcp add mcp-clj clojure -M:mcp
3. 接続をテストする
# Verify the MCP server is configured and accessible
claude mcp list

使用可能なサーバーの一覧に mcp-clj が表示されます。これで、Claude Code はプロジェクトのコンテキスト内で clj-eval と ls の各ツールを利用できるようになります。

Claude Desktop のセットアップ

Claude Desktop は追加のプロキシツールを必要とせず、stdio トランスポートを使用して mcp-clj に直接接続できます。

1. プロジェクトに mcp-clj を追加する

deps.edn に追加します。

{:deps {org.hugoduncan/mcp-clj
        {:git/url   "https://github.com/hugoduncan/mcp-clj"
         :git/sha   "latest-commit-sha"
         :deps/root "projects/server"}}

 :aliases
 {:mcp {:main-opts ["-m" "mcp-clj.stdio-server.main"]}}}
2. Claude Desktop を設定する

~/Library/Application Support/Claude/claude_desktop_config.json に追加します。

{
  "mcpServers": {
    "mcp-clj": {
      "command": "/opt/homebrew/bin/bash",
      "args": [
        "-c",
        "cd /path/to/your/project && clojure -M:mcp"
      ],
      "env": {
        "PATH": "/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin"
      }
    }
  }
}

注: /path/to/your/project を実際のプロジェクトディレクトリに置き換え、必要に応じて bash のパスを調整してください(which bash でパスを確認できます)。

3. Claude Desktop を再起動する

これで、Claude はプロジェクトのコンテキスト内で実行される clj-eval と ls の各ツールを利用できるようになります。

開発

セットアップ
git clone https://github.com/hugoduncan/mcp-clj
cd mcp-clj

# Start REPL with all components
clj -M:dev
テスト
# Fast unit tests (default)
clj -M:kaocha:dev:test

# Integration tests (starts servers)
clj -M:kaocha:dev:test --focus :integration

# All tests
clj -M:kaocha:dev:test --focus :unit :integration

# Specific namespace
clj -M:kaocha:dev:test --focus mcp-clj.mcp-server.core-test
REPL を使った開発
;; After adding dependencies to deps.edn
(require 'clojure.repl.deps)
(clojure.repl.deps/sync-deps)

;; Reload namespace
(require 'my.namespace :reload)

;; Run tests
(require 'clojure.test)
(clojure.test/run-tests 'mcp-clj.mcp-server.core-test)

変更履歴

リリースノートとバージョン履歴については、CHANGELOG.md を参照してください。

変更履歴をローカルで生成する

git-cliff をインストールします。

# macOS
brew install git-cliff

# Or download from https://github.com/orhun/git-cliff/releases

変更履歴を生成します。

# Preview unreleased changes
git cliff --unreleased

# Update CHANGELOG.md
git cliff -o CHANGELOG.md

アーキテクチャ

mcp-clj は、コンポーネントベースで構成された ポリリス型アーキテクチャを使用しています。

  • コンポーネント(components/)— 再利用可能な機能(mcp-server、mcp-client、json-rpc、tools など)
  • ベース(bases/)— エントリーポイント(sse-server、stdio-server)
  • プロジェクト(projects/server/)— デプロイ可能な成果物
主要なコンポーネント
  • mcp-server/ — ツール、プロンプト、リソースを備えた MCP プロトコルサーバー
  • mcp-client/ — サーバーに接続するための MCP プロトコルクライアント
  • json-rpc/ — EDN と JSON の自動変換に対応した JSON-RPC 2.0
  • tools/ — MCP の組み込みツール(clj-eval、ls)
  • *-transport/ — 複数のトランスポート層(SSE、stdio、HTTP、インメモリ)

すべてのコンポーネントは mcp-clj 名前空間を使用し、MCP プロトコルバージョン 2024-11-05 に準拠した JSON-RPC 2.0 を使用します。

コントリビューション

  1. リポジトリをフォークします
  2. 機能ブランチを作成します
  3. 変更を加え、テストが通ることを確認します:clj -M:kaocha:dev:test
  4. プルリクエストを送信します

ライセンス

MIT License。詳細については LICENSE ファイルを参照してください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。