Claude + Perplexity で Deep Research を実現する手順【MCPサーバー構築ガイド】

## 概要

- **目的**  
  Claude の既存の知識（2024年などの学習データ）に加え、Perplexity の検索APIを使って **最新情報** を参照できるようにする「Deep Research」機能を構築します。
  
- **アプローチ**  
  MCP（Model Context Protocol）サーバーを用いて、Claude に外部ツール（Perplexity）へのアクセス能力を付与します。Claude は必要に応じて Perplexity からリアルタイム検索結果を取得し、高精度な回答を返すことが可能になります。

<iframe width="560" height="315" 
        src="https://www.youtube.com/embed/ENfG3hSYpbk" 
        frameborder="0" 
        allowfullscreen>
</iframe>

## 全体の流れ

1. **WSL2 or Windows環境の準備**  
2. **Node.js のインストール**  
3. **Perplexity APIキーの取得**  
4. **MCP用コード（perplexity-ask）のダウンロード**  
5. **Claude Desktop の設定ファイル（claude_desktop_config.json）の作成**  
6. **エラー対処（nodeコマンドが見つからない、APIキーの受け渡しなど）**  
7. **Claude でツールを呼び出すテスト**  

---

## 1. WSL2 or Windows環境の準備

### 1-1. WSL2の有効化（Windowsユーザー向け）
Windows 10/11 でWSL2を使う場合は、以下の手順を参考にセットアップしてください。

1. **PowerShellを管理者権限で起動**  
2. **WSL2を有効化**  
   ```powershell
   dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
   dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
   wsl --set-default-version 2
   ```
3. **WSL2用のLinuxディストリビューションをインストール**  
   Microsoft Store などから Ubuntu をインストールしておく。

### 1-2. Windowsのみで実行したい場合
- Node.js をWindowsネイティブでインストールして、Dockerを使わずにローカル実行することも可能です。  
- ただし、本記事では **WSL2上で Node.js を実行し、Windows側のClaude Desktop から呼び出す** 例を中心に解説します。

---

## 2. Node.js のインストール

WSL2（Ubuntu）上で Node.js をインストールします。最新の LTS を入れればOKです。

```bash
# パッケージを更新
sudo apt update && sudo apt upgrade -y

# Node.js (npm含む) のインストール
sudo apt install -y nodejs npm
```

> **補足**: より新しいバージョンが必要な場合は `nvm` を使う方法もあります。  
> 例: [nvm-sh/nvm](https://github.com/nvm-sh/nvm)

インストール後、以下でバージョンを確認してください。

```bash
node --version
npm --version
```

---

## 3. Perplexity APIキーの取得

1. **Perplexity AI 公式サイト**  
   [Perplexity AI](https://www.perplexity.ai) にアクセスし、アカウントを作成してログインします。  
2. **APIキーを生成**  
   - プロフィールアイコン → Settings → API  
   - 必要に応じて課金プランを設定し、新規APIキーを発行  
3. **メモしておく**  
   生成されたAPIキー（例: `pplx-xxxxxx...`）は後ほど使うので控えておきます。

---

## 4. MCP用コード（perplexity-ask）のダウンロード

Perplexity MCPサーバーの実装は、[ppl-ai/modelcontextprotocol](https://github.com/ppl-ai/modelcontextprotocol) リポジトリの `perplexity-ask` に含まれています。

### 4-1. リポジトリをクローン

WSL2 ターミナルで任意のディレクトリへ移動し、GitHubからクローンします。

```bash
cd ~
git clone https://github.com/ppl-ai/modelcontextprotocol.git
cd modelcontextprotocol/perplexity-ask
```

### 4-2. npm install

```bash
npm install
```

これで依存パッケージがインストールされ、`dist/index.js` などが生成されます。

---

## 5. Claude Desktop の設定ファイルを作成

### 5-1. 設定ファイルの場所

Claude Desktop は、通常 **`%APPDATA%\Claude\claude_desktop_config.json`** を読み込みます。無い場合は作ってください。  
例：  
```
C:\Users\ユーザー名\AppData\Roaming\Claude\claude_desktop_config.json
```

### 5-2. ファイル内容の例

```jsonc
{
  "mcpServers": {
    "perplexity-ask": {
      "command": "wsl",
      "args": [
        // Node.js のフルパス,
        // perplexity-ask のエントリーポイント
        "/usr/bin/node",
        "/home/your_user/modelcontextprotocol/perplexity-ask/dist/index.js"
      ],
      "env": {
        "PERPLEXITY_API_KEY": "pplx-あなたのAPIキー"
      }
    }
  }
}
```

> **注意**:  
> - `"/home/your_user/.../index.js"` の部分は、実際にクローンした場所に合わせて修正してください。  
> - WSL2 上に Node.js がインストールされている場合、`/usr/bin/node` などフルパスを指定すると確実です。  
> - `env` で `PERPLEXITY_API_KEY` を指定しても、WSL2 の非対話的シェル経由では引き継がれないことがあります（後述の対策を参照）。

### 5-3. 「env が渡らない」場合の対策

WSL2 上で `env` が反映されない場合は、次のいずれかを行います：

1. **bash -c で export**  
   ```jsonc
   {
     "mcpServers": {
       "perplexity-ask": {
         "command": "wsl",
         "args": [
           "bash",
           "-c",
           "export PERPLEXITY_API_KEY='pplx-xxx'; /usr/bin/node /home/your_user/modelcontextprotocol/perplexity-ask/dist/index.js"
         ]
       }
     }
   }
   ```

2. **WSL2 内にスクリプトを作り export → node 実行**  
   ```bash
   # /home/your_user/mcp_run.sh
   #!/usr/bin/env bash
   export PERPLEXITY_API_KEY="pplx-xxx"
   exec /usr/bin/node /home/your_user/modelcontextprotocol/perplexity-ask/dist/index.js
   ```
   ```jsonc
   {
     "mcpServers": {
       "perplexity-ask": {
         "command": "wsl",
         "args": [
           "/home/your_user/mcp_run.sh"
         ]
       }
     }
   }
   ```

このように設定ファイルを作成したら、Claude Desktop を **完全に再起動** してください。

---

## 6. エラー対処

### 6-1. 「node: コマンドが見つかりません」

- WSL2 非対話的シェルでは `PATH` が異なる場合があります。  
- Node.js のフルパスを指定すれば解決することが多いです。  
- 例：`"/usr/bin/node"`

### 6-2. 「PERPLEXITY_API_KEY が必須です」と表示される

- `env` が渡っていない場合は、上記の **bash -c** や **スクリプト**方式で `export` してから実行してください。

### 6-3. 「ハンマーアイコンは出るが最新情報が取得されない」

- Claude は外部ツールが必要と判断しない限り、自分の知識ベースで回答を試みます。  
- **「最新情報を取得するために perplexity_ask を使ってください」** と明示的に指示すると、外部検索を実行してくれます。

---

## 7. Claude でツールを呼び出すテスト

1. **Claude Desktop を起動**  
2. **ハンマーアイコンの確認**  
   右上などに「perplexity-ask」が表示されていれば、MCPサーバーが認識されている状態です。  
3. **質問で外部ツール使用を指示**  
   例：  
   ```
   今日の最新ニュースを取得するために perplexity_ask を使ってください。
   ```
   または  
   ```
   Use perplexity_ask to search for the latest news about [topic].
   ```
4. **回答が最新情報を含むか確認**

---

# まとめ

- **Claude Desktop + MCP サーバー（perplexity-ask）** の連携により、Claude が最新情報を取得可能になります。  
- ただし、WSL2 経由の実行では `env` が引き継がれないなどのハマりどころがあるため、**フルパス指定** や **bash -c** 方式などで対処が必要です。  
- Claude に「ツールを使って検索して」と指示すると、実際に Perplexity API からリアルタイムの情報を取得して回答する「Deep Research」が実現できます。

これで、0 から MCP サーバーを構築し、Claude に最新情報を参照させるまでの一連の流れは完了です。お疲れさまでした！

---

## 参考リンク

- [Claude Desktop 公式サイト](https://www.anthropic.com/)  
- [Perplexity AI 公式サイト](https://www.perplexity.ai)  
- [modelcontextprotocol (GitHub)](https://github.com/ppl-ai/modelcontextprotocol)  
- [WSL 公式ドキュメント](https://learn.microsoft.com/ja-jp/windows/wsl/)