clineで検索のMCPサーバを使う、その他諸々の設定

## はじめに
ここ最近ずっと、「clineから検索のMCPサーバを使えるようにしたい」と格闘してました。そんな中、最近[MCP Market place](https://x.com/cline/status/1892264978302062958?t=5FUrC4I45zHz0XZ4ZHVoow&s=19
)なるものが出たということで早速使ってみました。

## 大まかな流れ
### セットアップ
1. vscodeの拡張機能から、clineを入れる。
2. clineの設定で、APIキーを登録する。OpenAIキーでもAWSキーでもなんでも行けます。
3. 拡張機能っぽいアイコンから、目的のサーバを見つけてinstallを押すと、clineが動き始めて勝手にセットアップしてくれます。
私は[Exa APIキー](https://dashboard.exa.ai/login?redirect=/api-keys)（無料）を発行して、Exa searchというのを使いました。
![スクリーンショット (1314).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3680875/52c8eaf1-282f-4448-94dd-1c7c4fd712ff.png)
4. その結果、jsonの設定ファイルはこんな感じになりました。
```ruby:cline_mcp_settings.json
{
  "mcpServers": {
    "github.com/exa-labs/exa-mcp-server": {
      "command": "node",
      "args": [
        "C:/Users/user/AppData/Roaming/npm/node_modules/exa-mcp-server/build/index.js"
      ],
      "env": {
        "EXA_API_KEY": "XXXXXXXXXXXXXXXXXXXX"
      },
      "disabled": false,
      "autoApprove": [
        "search"
      ]
    }
  }
}
```

### 使用感
- 普通に検索だけでもできる感じです。urlもちゃんと存在しました。
![スクリーンショット (1315).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3680875/f5a19294-800d-44b1-bf4a-a55128a149eb.png)
- Actモードばかりで回していると、clineが自主的に調べに行くことはほぼなかった印象です。clineは知らない知識でもあの手この手で通しに行こうとするので、ドツボにはまってそうなときはPlanモードで一旦ちゃんと調べさせたほうがいいといｔ感触でした。

## その他諸々
### APIキー
APIキーは、OpenAIキーでもAWSキーでもなんでも行けると言ったのですが、AWSキーは使っているとすぐにリクエスト制限に引っかかるので、clineを使う上ではストレスになると思います。clineにおいてはOpenRouterキーというものを使うのが使用感としてベストでした。詳しくは、こちらの動画で語られてます→[話題のAIエージェント！Clineについて解説してみた](https://www.youtube.com/watch?v=Fd_UK0zhhAQ)
それからclaudeを使う場合は、prompt-cachingといって同じ文章なら1/10の価格になる機能があります。この機能はbedrockでは使えずOpenRouterなら使えたので、その点も有用です。clineは会話履歴などの過去情報をリクエストの度に何度もLLMに送ってその度に料金が増えるので、prompt-cachingは使えたほうがよいと思われます→[Claude最新機能！Prompt Cache機能について解説してみた](https://www.youtube.com/watch?v=bHHDxfr2MCI)
![スクリーンショット (1317).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3680875/7b118b9f-a003-4303-b457-c2ffaf256b56.png)

### auto-approve
clineが都度人間の承認を求めてくるので、それを全部okとして勝手に進めてもらう設定です。こちらは慣れてくるとONにしないとやってられないと思います。
２画面で、clineに走ってもらってるのをちょくちょく確認しながら、もう片方の画面で詰まりそうなところをchatGPT検索機能で調べるといった作業の仕方が効率良さげでした。

### カスタムインストラクション
.clinerulesファイルを作ってそこに色々書くだけで、振る舞いをある程度制御できます。.clinerulesを使わないとclineはただ環境破壊するだけのツールに成り下がってしまうので、とても重要です。
とりあえず現状私が使っている.clinerulesは以下です。まだまだ改良の余地だらけだと思います。特筆すべき点としては、とりあえず３つ
- 仮想環境下で依存関係をインストールさせること。auto-approveを使っているので、目を離した隙に環境に致命的な影響を与え得る可能性があります。なのでなるべく仮想環境内に閉じた方がいいです。
といっても、このプロンプトの効果は体感５割程度なので、改良の余地があります。
- 検索時はcomputer useではなく、MCPサーバを使わせること。computer useだとCAPCTHA認証に引っかかったり、記事一覧からタイトルだけ見てわかった気になって帰ってくることが多いです。よってMCPサーバでちゃんと調べさせた方が良さげでした。
- タスク完了時にコミットさせること。試行錯誤を高速で繰り返してる内に、どんどんドツボにはまって軌道が逸れていくことがしばしばあるので、こまめにコミットしておいて戻れるようにしておく使い方がベストでした。
```ruby:.clinerules
# Cline Rules

## 期待する回答

- 日本語での詳細な説明
- 説明時には「実行するネ」というように、語尾に「ネ」をつけたチャイナ風での説明を行うこと

## 絶対守ってほしい対応
- 新たなライブラリなどを追加する場合は、まず「.\myenv\Scripts\activate」で仮想化すること。そしてこのプロジェクトのmyenv内に追加・修正を行うこと。
- llmは、gpt-4o-mini以外に変えないこと。

## 検索時
- まずはMCPサーバを使ってみること
- MCPサーバで十分な情報が得られなかった時のみ、computer useを使っていい

## タスク完了時
- まず「git add -A」でステージングすること
- 次に「git commit -m "タスク名"」でコミットすること。このとき、タスク名にはやったことを日本語で簡潔に記述すること

## 機密ファイル

以下のファイルの読み取りと変更を禁止：
- .envファイル
絶対に守れ

## セキュリティ対策

- 機密ファイルを絶対にコミットしない
- シークレット情報は環境変数を使用する
- ログや出力に認証情報を含めない
 

```

### checkpoint機能
gitと似ていて任意の時のコードに戻せます。ただまあ、一応安全のために.clinerulesで自動コミットするようにしています。
詳しくはこちらの記事がわかりやすいです→[Cline、Cursor Composer、Windsurf Cascadeでコードをぶっ壊された時のリバート方法](https://note.com/oft0nland/n/ne6ba789d01ef)

### 記憶の保持
.clinerulesではなく設定のほうのカスタムインストラクションのほうで公式のプロンプトを入れると、記憶を保持させることができるようです→[SpecStory：コーディングエージェントに記憶を持たせたい人々](https://laiso.hatenablog.com/entry/2025/02/15/214756)
私もやってみたところ最初はmemory-bank内に色々作られたのですが、その後作業をしていても特に更新されてませんでした。まだ使いこなせておらず、継続ウォッチが必要そうです。
ただ、毎回これを読み込ませるとしたらトークン数が指数関数的に増えすぎてパンクしそうです。それを考えると、この記事にもあるようにMCPサーバを使ってベクトルDBと連携してRAGするなどの選択肢が出てきそうです。
![スクリーンショット (1316).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3680875/2632d7e7-44d2-486f-ab43-138603f57daa.png)

## 所感
2画面で、片方の画面でclineを走らせて、もう片方の画面でperplexityなどで危険箇所を先読みするといった進め方になっていきそうだと感じました。clineの現在地点としては
- 実装の方向がズレる対策として、gitやcheckpointで軌道修正
- 最新情報を活用するという点で、検索のMCP
- 過去の学びを利用するという点で、記憶の保持

こんな感じで、足りない部分を付け足して完成に近づいてるので、あとは使い込み次第といった感触です。私個人としては、まだ検索のMCPサーバ１つしか使えていないので、他のMCPサーバもぼちぼち試していきたいと思います。