🐡

MCPサーバー開発で迷わないMCP Resourcesの扱い方 — ClineやClaudeでResourcesは実装で使って良いか?

に公開

MCP Resourcesの理解も兼ねて画像も表示できるビジュアルノベルゲームのMCPサーバーを作成していたとき、「Cline ではResourcesが動くけど、Claude Desktop ではResourcesが読み込まれないぞ...」という状態に遭遇。

Claude Desktopでのゲーム

特にMCP Resourcesはアプリケーション側で制御されるが「Resourcesがいつ、どのように読み込まれるのか?」がわからず、思いの他アプリケーション制御が各AIアプリで違うぞということが分かってきたので、記事書きました。

https://github.com/gotalab/mcp-novel-game-server

はじめに(背景)

Cline, Cursor, Windsurf のようなIDEやClaude DesktopModel Context Protocol (MCP) を採用し、LLMと外部サービスの連携が一気に進みつつあります。その一方で、MCP Resourcesはアプリケーション制御のため、実装依存のバリエーションが多く、公式仕様を読んだだけでは「どう扱えば良いのか」腑に落ちないことも多いです。

そこで今回の記事では、ClineのResourcesの実装を読み解きながら、「Cline, Claude Desktop, (or その他IDE)でMCPサーバー作成時にResourcesを使うべきかToolsで実装すべきか」が分かることを目指します。

MCPの概要は分かりやすい記事いっぱいあるので、そちらを読んでください〜!

まずは結論

  • Cline ではMCP Resourcesは使ってOK -> Resources実装OK
  • Claude Desktop では、Resourcesは基本的に使わないほうが良い -> Tools実装
  • その他IDE (Cursor) はそもそもMCP Resourcesに対応していない -> Tools実装

Tools と Resources

MCP 仕様で定義される違い

最も大きい違いは、呼び出し主体の違いです。Resourcesがある大きなメリットは下記のとおりです:

  • ResourcesがLLMのコンテキストに収まらない大規模ファイルやログを扱う際に非常に重宝する
  • LLMで呼び出しする必要がないため、コンテキストを節約する&LLMアプリケーションのレスポンス速度向上に寄与する
観点 Tools Resources
目的 LLM が呼び出す "アクション API" アプリが提供する "静的/準静的データ"
呼び出し主体 LLM (tools/execute) 原則 アプリ (resources/read 呼び出し)
副作用 あり (書き込み・外部 API など) なし (読み取り専用)
権限モデル auto-approve など UI 承認を推奨 基本不要 (読み取りのみ)
ストリーミング 可能 仕様では非推奨

※2025/4/29時点

Cline 実装での扱い

Clineでの実装は実はResourcesをアプリケーションが実行するだけでなく、LLMとしてツールのように呼び出すこともできる実装となっています。若干仕様とは違いますが、これはこれで便利です!

観点 Tools (Cline) Resources (Cline)
検出タイミング 起動直後に tools/list 起動直後に resources/list
LLM からのタグ <use_mcp_tool> <access_mcp_resource>
承認フロー ユーザー設定 autoApprove / ダイアログ なし (即時実行)
UI 表示 Tools タブ & 検索 Resources タブ & 検索
既定の自動添付 なし なし (ドラッグ&ドロップまたは LLM 指定のみ)

※2025/4/29時点

Cline での Resources 実行ステップ

軽く Cline でMCP Resourcesがどのように実行されているかを見てみましょう。

  1. 設定ファイル読込 & 接続確立
    ~/.vscode/cline/mcpSettings.json をパース → それぞれの MCP サーバーへ Stdio または SSE トランスポートで接続。
  2. リソース一覧取得 (resources/list)
    接続後に 1 回実行し server.resources[] にキャッシュ。
  3. LLM システムプロンプト生成
    Cline が <access_mcp_resource> タグ仕様を埋め込んだ system prompt を作成(デフォルト設定)。
  4. リソースアクセス要求
    • LLM がタグを出力した場合のみ実行
    • ユーザーが UI (ドラッグ&ドロップ / 検索) で指定することも可能
      ※現行バージョンに 自動添付ロジックは存在しない
  5. resources/read 呼び出し → 再プロンプト
    取得した contents[] をシステムテキストに追加し、会話を継続。

Resource の MCP 仕様と Cline 実装の対応表

MCP Resourcesの仕様(2025‑03‑26)の中で、Clineが何に対応しているかを見てみましょう。
気をつけておきたいのが、paginationです。resources/listにはページサイズが存在します。例えばページサイズが10に設定されているサーバーの場合、ファイルの数やデータ数が多いときに、resources/list一回では呼び出せていない別のファイルが存在することがあります。Cline はこれが未実装のため、大量のファイルを扱う際はMCP Serverのpage sizeに注意する必要があります。

仕様 必須/任意 Cline 実装 ギャップ/注意点
resources/list 必須 ✅ 実装 pagination 未対応 (cursor)
resources/read 必須 ✅ 実装 エラー -32002 個別処理なし
resources/templates/list 任意 ✅ 実装 テンプレート補完 UI 無し
resources/subscribe 任意 ❌ 未実装 Hot‑reload 非対応
notifications/resources/list_changed 任意 ❌ 未実装 再接続が必要
notifications/resources/updated 任意 ❌ 未実装 Hot‑reload 非対応

※2025/4/29時点

Resourcesは便利な反面、まだまだ実装されていない仕様が多いです。MCP自体がまだ歴史が浅いため、仕方がない部分がありますが、せっかくある機能をフルで使えないのは悲しいです...(泣)

とはいえResourcesは使いたいので、まずは実際に、ClineClaude Desktop でResourcesを使っても良いかどうかを見ていきましょう。

Claude Desktop vs Cline — Resourcesの扱いとサーバー実装可否

結論: Claude Desktop に対しては MCP Resourcesを実装しても現在はメリットがほぼ無い。Cline は問題なくMCP Resourcesを利用可能!

観点 Claude Desktop Cline
Resources 一覧 (resources/list) 呼び出さない (現状サポート外) 起動時に必ず呼び出す
LLMからの呼び出し 無効 有効 (system prompt 定義あり)
listChanged/subscribe デスクトップ側独自実装で更新 UI はあるが MCP 標準ではない listChanged・subscribe 未実装
ユースケース "チャット + 手動ファイル添付" が中心 "IDE コード参照" を想定 (タブ & 検索)
Resources を提供する MCP サーバー 効果薄 (読まれない) 推奨 (即利用可能)

※2025/4/29時点

代表的なClient別の対応表

ClineRoo Code 以外はMCP Resourcesを使ったMCPサーバー開発は現時点ではおすすめできません。
そもそも未対応のClientも多いです。

Client Resources Tools
Claude Desktop App ✅⚠️
Cline
Roo Code
Cursor
Windsurf
VS Code Github Copilot

※2025/4/29時点

詳細は公式ページ見てください!


結論

  • MCP Resources はアプリケーション主導: コンテキストを扱う上でメリットも多い!
  • Cline: MCP Resourcesを活用したMCPサーバーを十分運用可能!大規模プロジェクトでは pagination の追加実装は必要。
  • Claude Desktop: MCP Toolsで実装すべき

まとめ

今回はMCP Resourcesのアプリケーション制御がどうなっているかをClineを中心にまとめてみました!
MCPのこのあたりの仕様さらに良くなってほしいなと思う方は「いいね」してくれると嬉しいです!

画像も表示できるビジュアルノベルゲームのMCPサーバー気になる方はこちらに記事やコード置いてますので良かったら見てください!

Discussion