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側が確認した説明ではありません。
- 拡張機能は
CLAUDE_CODE_SSE_PORTを、拡張のコンテキストが持つ環境変数コレクション経由で通知する。VS Codeはこのコレクションを統合ターミナルにだけ適用する - パネルがSDK経由でCLIを起動するときの環境変数は拡張が自前で組み立てる。そこに
CLAUDE_CODE_SSE_PORTは含まれない - パネルがSDKへ渡すMCPサーバーは
claude-vscodeと追加サーバーだけで、IDE用サーバーは含まれない。claude-vscodeは通知の受け口で、ツールを登録しない - 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
拡張機能のバージョンを見る
VS Codeの拡張機能ビューでClaude Codeのバージョンを確認します。2.1.285未満なら、まず更新します。
- 2
新しいセッションで頼んでみる
更新後は新しい会話を開き、Problemsパネルに出ているエラーを指定して調べるよう頼みます。既存の会話は起動時の構成のままの可能性があるため、新規会話で試します。
- 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か、ビルドコマンドの出力で補います。