Claude Media
Claude CodeでgetDiagnosticsがVS Codeパネルに出ない原因

Claude CodeでgetDiagnosticsがVS Codeパネルに出ない原因

VS CodeのClaude Codeパネルにmcp__ide__getDiagnosticsが現れない原因と、v2.1.285以降の別名ツールへの切り替え方、古い版の回避策をまとめます。

VS CodeのClaude Codeパネルで「Problemsパネルのエラーを見て直して」と頼んでも、mcp__ide__getDiagnostics が見つからない。これは設定ミスではなく、パネルと統合ターミナルでIDE用MCPサーバーの渡り方が違うことで起きる症状です。v2.1.285以降のパネルには、同じ役割の別名ツール mcp__claude-vscode__getDiagnostics があります。

パネルに mcp__ide__getDiagnostics が無いのは何が起きているのか

症状は次の2点です。

  • パネルのセッションでツール検索をかけても mcp__ide__getDiagnostics が見つからない
  • 同じVS Codeウィンドウの統合ターミナルで claude を起動すると、同じツールが現れて動く

GitHub issue #96742は、この差をVS Code拡張2.1.281で再現した報告で、バグとして起票されています。報告によると、パネルは編集直後のファイルには <ide_diagnostics> を添えます。ただ、別のファイルやビルド後の状態をClaude側から取りに行く手段がありません。

差が出る場所は「ツールの名前」ではなく「IDE用サーバーがセッションに渡るかどうか」です。次の節で原因を分けます。

原因は、IDE用サーバーのポートが統合ターミナルにしか渡らないこと

拡張機能は、getDiagnostics を提供するローカルのWebSocketサーバーを起動します。CLIはロックファイルのポートを手がかりにこのサーバーへ接続します。ここまでは統合ターミナルでもパネルでも同じです。

issue #96742の報告者は、2.1.281の extension.js と同梱CLIを調べ、次の4点を挙げています。以下は報告者の分析で、Anthropic側が確認した説明ではありません。

  1. 拡張機能は CLAUDE_CODE_SSE_PORT を、拡張のコンテキストが持つ環境変数コレクション経由で通知する。VS Codeはこのコレクションを統合ターミナルにだけ適用する
  2. パネルがSDK経由でCLIを起動するときの環境変数は拡張が自前で組み立てる。そこに CLAUDE_CODE_SSE_PORT は含まれない
  3. パネルがSDKへ渡すMCPサーバーは claude-vscode と追加サーバーだけで、IDE用サーバーは含まれない。claude-vscode は通知の受け口で、ツールを登録しない
  4. CLIのIDE自動接続は対話UIでしか動かないように見える。パネルはCLIを --output-format stream-json のヘッドレス実行で使うため、ポートを環境変数で渡しても接続されない

4点目は、報告者が実機で試した結果が根拠です。ロックファイルのポートを環境変数に入れ、同梱バイナリをヘッドレスで動かしても、initメッセージにIDEサーバーは現れず、mcp__ide__* ツールも無かったとされています。

この4点目から、拡張機能の環境変数設定(environmentVariables)に CLAUDE_CODE_SSE_PORT を書く回避策は期待できません。ポートはウィンドウを再読み込みするたびに変わるため、固定値も使えません。

v2.1.285以降は、パネルに別名のツールが入った

issue #96742が起票された時点の2.1.281では、パネルに診断をオンデマンドで取るツールがありませんでした。changelogのv2.1.285(2026-09-29)に、次の項目が入っています。

  • VS Codeのパネルで、Problemsパネルの現在のエラーと警告をいつでも読めるオンデマンドの診断ツールを追加。従来は編集直後にしか読めなかった

VS Code拡張のドキュメントは、この仕組みを次のように説明しています。

  • パネルは ide ではなく、別の内蔵サーバー claude-vscode を通して診断を読む
  • 1ファイル分も、VS Codeが診断を持つ全ファイル分も取得できる
  • フックや権限ルールからは mcp__claude-vscode__getDiagnostics という名前に見える

つまり、v2.1.285以降のパネルで mcp__ide__getDiagnostics を検索して見つからないのは正常です。探す名前が違います。統合ターミナルのCLIでは従来どおり mcp__ide__getDiagnostics です。

issue #96742の内容は、パネルにIDEサーバーそのものを渡す修正を求めるものです。v2.1.285の項目は、それとは別のツールを足したものです。changelogの項目とissueの内容がどう対応するかは、どちらにも書かれていません。名前が別である点を前提に運用するのが確実です。

ログとソケットで「渡っていない」ことを裏づける

ツールが見つからないだけでは、検索の語が悪いのか、そもそもサーバーが無いのか区別がつきません。issue #96742には、渡っていないことを示す手がかりが3つ載っています。

  • 起動ログ: VS Codeの出力パネルで「Claude VSCode」を選ぶと、パネル起動時のログが読めます。設定済みのMCPサーバー(例では playwright や nuget)が接続を始める一方、ide という名前のサーバーは現れません
  • ツール検索のログ: デバッグ出力に ToolSearchTool: select failed — none found: mcp__ide__getDiagnostics が出ます。ツールが無いと判定された記録です
  • ソケット: パネルの動作中に ss --tcp --all --numeric --processes を実行すると、~/.claude/ide/<port>.lock のポートで待ち受けるソケットだけが見え、パネルの claude プロセスからの接続はありません(Linuxでの確認手順です)

なお、パネルの起動ログには claude-vscode notification channel error: Received a response for an unknown message ID という警告がほぼ毎回出ます。報告者は、通知専用の claude-vscode サーバーから出るもので、診断が出ない原因ではなさそうだと書いています。ただし、この警告を出した後はそのチャンネルの後続エラーがログに出なくなるとも指摘しています。

自分の環境がどのケースか切り分ける

使っている面とバージョンで、探すべき名前が決まります。

使っている面バージョン現れるツール
VS Codeの統合ターミナルで起動した claudeバージョン拡張が有効なら現れるツールmcp__ide__getDiagnostics
拡張機能のパネルバージョンv2.1.285以降現れるツールmcp__claude-vscode__getDiagnostics
拡張機能のパネルバージョンv2.1.284以前現れるツールオンデマンドの診断ツールなし。編集直後のファイルにだけ <ide_diagnostics> が付く
VS Code外のターミナルで起動した claudeバージョン/ide で接続した場合現れるツールmcp__ide__getDiagnostics

/mcp の一覧に ide が見えないことは、判断材料になりません。ドキュメントによると、IDE用サーバーは設定する項目が無いため /mcp から隠されています。統合ターミナルのCLIでも一覧には出ないので、「一覧に無いから接続できていない」とは読めません。見るべきはサーバー名ではなく、ツールが実際に呼べるかどうかです。

確認の手順は短く済みます。

手順

パネルで診断ツールの有無を確かめる手順

  1. 1

    拡張機能のバージョンを見る

    VS Codeの拡張機能ビューでClaude Codeのバージョンを確認します。2.1.285未満なら、まず更新します。

  2. 2

    新しいセッションで頼んでみる

    更新後は新しい会話を開き、Problemsパネルに出ているエラーを指定して調べるよう頼みます。既存の会話は起動時の構成のままの可能性があるため、新規会話で試します。

  3. 3

    使われたツール名を見る

    ツール呼び出しの表示が mcp__claude-vscode__getDiagnostics なら、パネル側の仕組みで動いています。

権限ルールとフックは両方の名前を書く

「許可リストに mcp__ide__getDiagnostics を入れたのにパネルで確認を求められる」「拒否したつもりがパネルで通る」といったずれは、名前が2系統あることで起きます。VS Code拡張のドキュメントも、CLIとパネルの両方を対象にするなら2つの名前を並べるよう案内しています。拒否ルールの例は次の形です。

{
  "permissions": {
    "deny": [
      "mcp__ide__getDiagnostics",
      "mcp__claude-vscode__getDiagnostics"
    ]
  }
}

許可側に並べる場合も、2つの名前を同じように書きます。注意点が1つあります。Read の拒否ルールは、どちらの診断ツールも止めません。診断の取得を止めたいときは、上のように名前で指定します。

名前で止める設計の背景は、IDE内蔵MCPサーバーのセキュリティモデルで整理しています。

古い版で今すぐ診断を取りたいときの回避策

拡張機能を更新できない環境では、統合ターミナルでCLIを起動する方法が使えます。issue #96742の報告者も、回避策としてこれを挙げています。

ドキュメントによると、拡張機能をインストールしても claude がシェルのPATHに入るわけではありません。ターミナルから claude を動かすには、スタンドアロンのCLIを別途インストールします。

# VS Codeの統合ターミナル(Ctrl+` / Cmd+`)で
claude

統合ターミナルのCLIは、diff表示や診断の共有を含めてIDEと自動で連携します。VS Code外のターミナルを使うときは、Claude Code内で /ide を実行して接続します。

パネルを使い続けたい場合は、診断が必要なときに次の頼み方で補えます。

  • 診断を見たいファイルをClaudeに一度編集させる(編集直後は <ide_diagnostics> が付く)
  • ビルドやlintのコマンドを実行させ、出力を読ませる。たとえば npm run build や npx tsc --noEmit の結果を直してもらう

後者は診断ツールとは別の経路ですが、Problemsパネルに出ない型エラーやビルドエラーも拾えます。

過去の同じ報告との関係

同じ症状は以前から報告されています。issue #40766は「統合ターミナルのCLIでは使えるのにパネルでは使えない」という内容で、2026-07-11にnot plannedとして閉じられました。#8635も閉じられ、#65709は完了として閉じられています。

#96742は、これらと違って原因の絞り込みまで書かれた報告です。症状の検索で古いissueが閉じられているのを見つけても、「直らない」と受け取る必要はありません。v2.1.285のパネル側の追加で、診断を読む手段自体は用意されています。

パネルそのものが動かない、応答しないといった別の症状はVS Code拡張機能が応答しないときの切り分け手順に分けています。拡張機能全体の設定はVS Code拡張の設定ガイドが扱っています。

まとめ

パネルで mcp__ide__getDiagnostics が出ないのは、IDE用サーバーの接続情報が統合ターミナルにしか渡らない経路の違いによるものです。報告者の分析では、ヘッドレス実行のパネルは環境変数を足しても接続しません。

v2.1.285以降は、パネルに mcp__claude-vscode__getDiagnostics があります。権限ルールやフックには2つの名前を並べ、古い版では統合ターミナルのCLIか、ビルドコマンドの出力で補います。

この記事を共有:XはてブLinkedIn