【WSL環境】Claude CodeをMCPサーバーとしてClaude for Desktopから使う

# 目的
つい先日、Anthropic社からClaude 3.7 Sonnet と Claude Code が発表されました。

https://www.anthropic.com/news/claude-3-7-sonnet

私はGitHub Copilotと併用しているのですが、コードへの理解、提案内容の具体感などなど、総じて体感Claude Codeの方が優秀と感じております。

しかし、そこで問題となってくるのが料金です。
Claude Codeはブラウザ上の[チャット](https://claude.ai/)から使う場合とまた課金体系が異なり、自身のAnthropicのAPI keyより利用料が請求されます。
つまりClaude Codeを使えば使うほどこのcostが増えていくのです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/621838/cd0d1060-0964-4615-87de-96244f3753b1.png)

私はClaude自体にProプランで加入しているので、できればその枠内に収めたい。。。
その方法として今回の目的**Claude CodeをMCPサーバーとしてClaude for Desktopから使い倒す**手順を解説していきます。

:::note warn
本手順は2025年3月24日時点のものです。
Claude Code および Claude for Desktop はプレビュー機能が含まれているため、常に最新の情報には気を付けてください。
:::

# 前提
本手順の前に[Claude for Desktop](https://claude.ai/download)およびClaude Codeをインストールしておく必要があります。

・Claude for Desktop

https://claude.ai/download

・Claude Code（以下記事を参考に導入してください。）

https://qiita.com/eiji-noguchi/items/a45dbb94ad7544d1c1b4


# 手順
## ・Windows側からClaude Codeを使えるかの確認
少しややこしいですが、Claude for Desktop（クライアント側）はWindows環境で、Claude Code（サーバー側）はWSL環境でそれぞれ動作します。

そのため、一旦Windows環境のPowerShellからWSL上のClaude Codeを実行できるかの確認を行います。

```powershell:powershell
> wsl bash -ic "claude -v"
0.2.53 (Claude Code)
```

このようにバージョンが返ってくればOKです。


## ・Claude for  Desktopを開発モードにする
Claude for Desktopを立ち上げたら、画面左上の「≡」を開き、「ヘルプ」→「開発者モードを有効」を選択してください。

有効化ができれば以下のように開発者向けメニューが表示されます。
※有効化後に一度アプリの再起動をする必要があるかもです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/621838/179b94ae-47bb-448c-aed8-4a06530d791b.png)

## ・MCP構成を編集
続いて、同じく画面左上の「≡」から、「ファイル」→「設定」より開発用設定画面を開きましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/621838/60277168-558b-4541-bc2a-717ca399e20b.png)

ポップアップ画面が表示されたら「開発者」タブを開いてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/621838/b2c28cbb-3dda-4b6c-88b5-081789a6a3c1.png)

「構成を編集」を押下すると、`claude_desktop_config.json`ファイルの場所が開かれます。
configファイルに以下の内容を書いて保存します。

```json:claude_desktop_config.json
{
    "mcpServers": {
        "claude_code": {
            "command": "wsl",
            "args": [
                "bash",
                "-ic",
                "claude mcp serve"
            ],
            "env": {}
        }
    }
}
```

これでClaude for Desktopが開かれる際に自動的にMCPサーバーとしてClaude Codeが実行されるようになります。

よりMCPサーバーについて理解したい方は公式サイトを参考にしてください。

https://modelcontextprotocol.io/quickstart/server

**ここで一度Claude for Desktopを再起動してください。**

## ・Claude for Desktopの利用可能なMCPツールの確認
Claude for Desktopを開きなおすと、画像のように「トンカチマーク」が表示されるようになります。
中身を見ると「ソースサーバー：claude_code」として、利用可能なツールの一覧が表示されるようになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/621838/f0977727-229e-4750-848c-e1d9ed7eade7.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/621838/646e4160-de1b-4668-b921-459ede398180.png)


## ・Claude for DesktopからClaude Code（MCPサーバー）を利用
いよいよ実際に動かしていきます。

使い方はいたってシンプルで、Claude for Desktopに以下のような指示を入力します。
※WSL環境内にある自身のプロジェクトフォルダ（/home/user/LLM_TRAINING）を指す場合
```
/home/user/LLM_TRAINING 内のプロジェクトフォルダを見て、プロジェクトの概要を教えてください。
```

:::note warn
**プロジェクトファイルがWSL側にあるか、Windows側にあるか**
実際にファイルを参照して回答を生成するのはWSL側にあるClaude Codeになります。
そのため、Windows側にあるファイルを参照したい場合はWSL側から認識できる形にする必要があります。
例えばWindows側の「**C:\Users\user\Desktop\LLM_TRAINING**」にプロジェクトファイルがある場合、プロンプトに含める際には「**/mnt/c/Users/user/Desktop/LLM_TRAINING**」のように置き換える必要があります。

```
/mnt/c/Users/user/Desktop/LLM_TRAINING 内のプロジェクトフォルダを見て、プロジェクトの概要を教えてください。
```
:::

回答のと注意ツールへの実行許可を求められるかと思います。
セキュリティ面に注意しつつ進めてください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/621838/a039da07-39c7-4291-a0cb-e7b0ccde0597.png)

しばらくすると以下のような回答が返ってきました。
※長いので折りたたんでいます。

<details><summary>回答</summary>

```
まず、LLM_TRAININGディレクトリの内容を確認しましょう。

次に、READMEファイルの内容を確認して、プロジェクトの概要を把握しましょう。

Pythonファイルの内容も確認しましょう：

プロジェクトの概要をまとめます：

# LLM_TRAININGプロジェクト概要

このプロジェクトは、日本語自然言語処理（NLP）モデルのトレーニングと評価に焦点を当てています。特に、感情分析（センチメント分析）と自然言語推論（NLI）タスクに取り組んでいます。

## 主な機能と特徴

1. **感情分析モデル**:
   - WRIMEデータセットを使用した日本語テキストの感情分析（ポジティブ/ネガティブ分類）
   - Hugging Faceのpre-trained BERTモデル（cl-tohoku/bert-base-japanese-v3）を使用
   - モデルの訓練、評価、予測結果の分析機能

2. **自然言語推論**:
   - JGLUEデータセットのJNLIタスクに基づく文章ペアの関係分類
   - 日本語BERTモデルを使用した推論

3. **モデル訓練と評価**:
   - Hugging Face Transformersライブラリによるモデル訓練
   - 混同行列などを用いた評価メトリクスの視覚化
   - Weights & Biases（wandb）によるトレーニング過程の追跡

4. **Dockerコンテナ**:
   - GPUサポート付きのDockerコンテナ環境
   - NVIDIA GPUドライバを使用した高速トレーニング

## 技術スタック

- **フレームワーク**: Hugging Face Transformers, PyTorch
- **モデル**: cl-tohoku/bert-base-japanese-v3（日本語BERT）
- **データセット**: WRIME（感情分析）、JGLUE-JNLI（自然言語推論）
- **視覚化**: Matplotlib, japanize-matplotlib
- **実験管理**: Weights & Biases
- **コンテナ化**: Docker, docker-compose

## ファイル構成

- `5_2_感情分析モデルの実装.py`: 感情分析モデルのトレーニングと評価
- `5_3_感情分析モデルの予測結果の取得.py`: トレーニング済みモデルを使用した予測と結果分析
- `5_4_1_自然言語推論.py`: 自然言語推論タスクの実装（未完成）
- `/output_wrime/`: トレーニング済みモデルのチェックポイント
- `/wandb/`: Weights & Biasesの実験ログ

## 使用方法

プロジェクトはDockerコンテナ内で実行されるよう設計されています。VSCodeでコンテナを開く場合は、READMEに記載されているようにsrcディレクトリを指定してください。

## 注意点

プロジェクトのコードにはMARC-jaデータセットからWRIMEデータセットへの変更に関するコメントがあり、書籍のコードとの互換性のために調整されている可能性があります。

このプロジェクトは主に日本語BERTモデルを使った感情分析と自然言語推論のトレーニングと評価に焦点を当てた教育的・研究的なプロジェクトであると考えられます。
```
</details>


実際にはClaude Codeがどのようにファイルを参照していっているかを追うことができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/621838/9ee027a9-9bfe-4352-ade4-ad36e8de344f.png)

これより、Claude for Desktopだけではできなかった**ローカルファイルの内容を参照している**のが分かるかと思います。


# まとめ
Claude for DesktopからClaude CodeをMCPサーバーとして実行することができました。
これで以下の恩恵を受けながらもClaude Codeを使い倒すことができますね。
- API 利用料金がかからない
- Claude for DesktopのUIを使ってClaude Codeを操作できる
- Claude Codeのファイル参照を追うことができる

今後このMCPサーバーというものが標準化して広まっていくかは不明ですが、今回のようなAIエージェントシステムは必ず発展していく分野になるかと思われます。
早いうちにキャッチアップが大事ですね。