Claude Code MCPの使い方—リソースを@参照、プロンプトを/で実行

Claude Code MCPの使い方—リソースを@参照、プロンプトを/で実行 | mohablog

MCPサーバーを接続すると増えるのはツールだけではありません。サーバーが公開するリソース@ で参照でき、プロンプト/mcp__ 始まりのスラッシュコマンドとして呼べます。この2つを実際に使う手順を、Claude Code v2.1.201 で整理します。

目次

接続後に見えるのはツールだけではない

MCPの記事はたいてい claude mcp add でサーバーを足すところで終わります。ただ、つないだ後に何を呼べるかまで踏み込むものは少ない。公式ドキュメントの “What you can do with MCP” が挙げるのは、課題管理ツールからの機能実装、監視データの分析、DBへの問い合わせなど。これらは tools / resources / prompts という3種類の口を使い分けて実現します。

tools・resources・promptsの3つ

ツールはClaudeが判断して呼ぶ関数。リソースは自分が @ で指すデータ。プロンプトはサーバー側が用意した定型指示で、こちらがスラッシュコマンドで起動します。呼ぶ主体と起動方法がそれぞれ違う。

/mcp で今の接続を確かめる

手元の状態から確認します。CLIなら claude mcp list、セッション内なら /mcp

claude mcp list

接続済みサーバーと状態が並びます。

github: https://api.githubcopilot.com/mcp/ (HTTP) - ✓ Connected
postgres: npx -y @bytebase/dbhub ... (stdio) - ✓ Connected
jira: https://mcp.atlassian.com/v1/sse (SSE) - ✓ Connected

承認待ちの project スコープは ⏸ Pending approval、拒否済みは ✗ Rejected と出ます。/mcp パネルは各サーバーの横にツール数を表示し、tools capabilityを持つのにツール0個のサーバーには印を付ける。

リソースを @ で参照する

リソースはサーバーが公開するデータで、ファイルと同じように @ で本文に差し込めます。公式の “Use MCP resources” は「参照されると自動で取得され、添付として含まれる」と説明します。

@ を打って一覧から選ぶ

プロンプト入力中に @ を打つと、接続中の全サーバーのリソースがファイル候補と並んで出ます。”Reference MCP resources” の手順どおり、パスはあいまい検索が効くので途中まで打てば絞れる。参照したリソースは自動で取得され、添付として渡ります。テキストでもJSONでも構造化データでも、サーバーが返す形式のまま扱える。手でコピペする工程が要らなくなります。

@server:protocol://path で直接指す

候補から選ばず、書式で直接指すこともできます。形は @server:protocol://resource/path

Can you analyze @github:issue://123 and suggest a fix?

この一文で issue #123 の内容が添付として渡り、Claudeは中身を読んだ上で修正案を返します。ドキュメントを指すなら @docs:file://api/authentication のように書く。

複数のリソースを1つのプロンプトに混ぜる

1回の指示で複数を並べられます。スキーマと設計書を突き合わせるならこう書く。

Compare @postgres:schema://users with @docs:file://database/user-model

実行結果として、Claudeは users テーブルの実スキーマと設計ドキュメントの差分を列挙します。監視ダッシュボードやDBの中身をチャットにコピペして貼っていた作業が、参照1行に置き換わる。

プロンプトをスラッシュコマンドで実行する

/mcp__github__pr_review 456

これはGitHubサーバーが公開する pr_review プロンプトを、PR番号456を引数に実行した形です。サーバーが持つ定型プロンプトは、接続した時点でスラッシュコマンドとして自動的に生えます。

/ を押すと /mcp__server__prompt が並ぶ

“Use MCP prompts as commands” のとおり、/ を押すとMCP由来のコマンドが /mcp__servername__promptname の形で候補に出ます。サーバーをつなげば増え、外せば消える。動的な発見なので、一覧を手で管理する必要はありません。

引数は空白区切りで渡す

多くのプロンプトは引数を取ります。コマンドの後ろに空白区切りで並べる。

/mcp__github__list_prs
/mcp__jira__create_issue "Bug in login flow" high

上は引数なしでオープンなPRを一覧。下はタイトルと優先度 high を渡してJiraにissueを作ります。空白を含む値はダブルクォートで囲む。

ツール呼び出しとの違い

ツールはClaudeが会話の流れで自動的に選びます。プロンプトは自分が明示的に起動する。「この作業はいつもこの手順」という定型を、サーバー作者が name 付きで束ねたものがプロンプト、と捉えると使い分けが早い。

ツール・リソース・プロンプトを1枚で並べる

3つの口は、起動する主体と書式が違うだけです。対応は次のとおり。

種類起動する主体呼び出し方向いている用途
toolsClaude(自動)会話の中で自動選択DB問い合わせ、API操作
resources自分@server:protocol://pathissue・スキーマ・ドキュメントの参照
prompts自分/mcp__server__prompt 引数定型作業の呼び出し

tools は自動、resources と prompts は手動という線引きが基本です。

サーバーを増やすとツール定義がコンテキストを食う

サーバーを3つ4つつなぐと、ツール定義が起動時にコンテキストを削ります。GitHub・Postgres・Jira・Slackを全部つなげば、まだ何も頼んでいないのにツールの説明文だけで数千トークンが消える。会話に使える枠がその分だけ減ります。

tool search で必要なものだけ載せる

v2.1系はこれを tool search で解いています。公式の “Scale with MCP tool search” によれば、MCPツールは既定で遅延され、タスクが必要としたときにClaudeが検索ツールで見つけて呼ぶ。実際に使ったツールだけがコンテキストに入ります。使い勝手はこれまでと変わらない。

挙動は環境変数 ENABLE_TOOL_SEARCH で切り替えます。

挙動
(未設定)全MCPツールを遅延し、必要時にオンデマンドで読む(既定)
autoコンテキストの10%に収まれば起動時に載せ、超過分だけ遅延
auto:Nしきい値を N% に変更。例 auto:5 で5%
false全ツールを起動時に載せる。遅延なし
# しきい値を5%にして起動
ENABLE_TOOL_SEARCH=auto:5 claude

これでコンテキストの5%を超えるツール群だけが遅延に回ります。Haikuモデルは tool_reference ブロックに未対応のため、この検索は効かない。ANTHROPIC_BASE_URL が非first-partyのプロキシを指す場合も、既定で無効側へ倒れます。

常に見せたいサーバーは alwaysLoad で外す

毎ターン必ず使うツールまで検索越しにするのは無駄です。そのサーバーだけ遅延から外すには、設定に alwaysLoad を書く。”Exempt a server from deferral” のとおり、そのサーバーのツールは ENABLE_TOOL_SEARCH の値に関係なく起動時に全部載ります。

{
  "mcpServers": {
    "core-tools": {
      "type": "http",
      "url": "https://mcp.example.com/mcp",
      "alwaysLoad": true
    }
  }
}

alwaysLoad は全サーバー種別で使え、v2.1.121 以降で有効です。ただし付けたサーバーは接続完了まで起動をブロックする(上限は標準の5秒)。ここで一つ実感した挙動。SlackとGitHubを両方 alwaysLoad: true にしたら起動が目に見えて遅くなり、毎ターン参照するGitHubだけ残したら元に戻りました。必要な1つに絞れば済みます。

ToolSearchツール自体を止める

検索の一段を挟みたくない場面もあります。permissions.denyToolSearch を入れれば、その動きを個別に止められる。

{
  "permissions": {
    "deny": ["ToolSearch"]
  }
}

これでツール検索を経由せず、載っているツールだけで動きます。なお、ツール説明とサーバーの instructions は各2KBで切られる。サーバー作者側は、検索に引っかかるよう instructions の頭に用途を短く書くのが効きます。ツールやリソースが大量の出力を返すケースでは、Claude Codeが上限で切って警告を出す。巨大なクエリ結果をそのまま流し込まない設計にしておくと、コンテキストを守れます。

つながりが不安定なとき

接続が切れても、Claude Codeは自動で再接続を試みます。手で貼り直す前に、既定の挙動を知っておくと無駄な操作が減る。

list_changed で自動更新される

サーバーがツール・プロンプト・リソースを動的に足したとき、Claude Codeは list_changed 通知を受けて自動で取り直します。”Dynamic tool updates” のとおり、切断と再接続は要りません。

HTTP・SSEは指数バックオフで再接続

HTTPかSSEのサーバーが途中で切れると、”Automatic reconnection” の挙動で自動再接続します。1秒から始めて倍々に伸ばし、最大5回。再接続中は /mcp で pending 表示になり、5回失敗で failed。そこから手動で再試行できます。stdioはローカルプロセスなので自動再接続の対象外。

反映されないと感じたら

接続直後の tools/listresources/list は、v2.1.191 以降、一時的なnetwork/serverエラーを最大3回リトライします。認証エラーや4xx、タイムアウトはリトライしない。ここで詰まるなら設定側の問題なので、claude mcp get サーバー名 で状態を確かめる。

まとめ

使う側の要点。

  • リソースは @server:protocol://path で参照。@github:issue://123 のように issue やスキーマを添付として渡せる
  • プロンプトは /mcp__server__prompt 引数 で実行。引数は空白区切り、空白を含む値はダブルクォートで囲む
  • tools は自動、resources と prompts は手動起動という線引き
  • ツール定義がコンテキストを食うなら ENABLE_TOOL_SEARCH。既定は遅延、auto:5 でしきい値を制御
  • 毎ターン使うサーバーは alwaysLoad で遅延から外す(v2.1.121以降)
  • HTTP・SSEは最大5回の指数バックオフで自動再接続。list_changed で能力は自動更新

設定の共有やスコープの話は別記事に譲ります。Claude Code MCPのスコープ管理—.mcp.jsonでチーム共有する設計と合わせて読むと、配布から利用までひと通りつながります。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次