debug-mcp-stdio
Node.jsのstdio MCP ServerをVS Codeでデバッグする際に、launch.jsonの設定やinspector起動コマンドを提供し、断点不具合やポート競合などのトラブルシューティングを支援するSkill。
📜 元の英語説明(参考)
用于在 VS Code 中对 **Node.js 的 stdio MCP Server** 做断点调试(Attach 到 Node Inspector)。只要用户提到:MCP stdio、@modelcontextprotocol/inspector、node --inspect/--inspect-brk、VS Code attach 调试、断点不命中、sourcemap、调 build/dist 构建产物、端口 9229 冲突/被占用、launch.json 配置等,都要使用本 skill。输出应直接给出可复制粘贴的 launch.json 片段、可运行的 inspector 启动命令(含换端口版本)、以及按优先级排序的排障清单。
🇯🇵 日本人クリエイター向け解説
Node.jsのstdio MCP ServerをVS Codeでデバッグする際に、launch.jsonの設定やinspector起動コマンドを提供し、断点不具合やポート競合などのトラブルシューティングを支援するSkill。
※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。
下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o debug-mcp-stdio.zip https://jpskill.com/download/9671.zip && unzip -o debug-mcp-stdio.zip && rm debug-mcp-stdio.zip
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/9671.zip -OutFile "$d\debug-mcp-stdio.zip"; Expand-Archive "$d\debug-mcp-stdio.zip" -DestinationPath $d -Force; ri "$d\debug-mcp-stdio.zip"
完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。
💾 手動でダウンロードしたい(コマンドが難しい人向け)
- 1. 下の青いボタンを押して
debug-mcp-stdio.zipをダウンロード - 2. ZIPファイルをダブルクリックで解凍 →
debug-mcp-stdioフォルダができる - 3. そのフォルダを
C:\Users\あなたの名前\.claude\skills\(Win)または~/.claude/skills/(Mac)へ移動 - 4. Claude Code を再起動
⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。
🎯 このSkillでできること
下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。
📦 インストール方法 (3ステップ)
- 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
- 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
- 3. 展開してできたフォルダを、ホームフォルダの
.claude/skills/に置く- · macOS / Linux:
~/.claude/skills/ - · Windows:
%USERPROFILE%\.claude\skills\
- · macOS / Linux:
Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。
詳しい使い方ガイドを見る →- 最終更新
- 2026-05-18
- 取得日時
- 2026-05-18
- 同梱ファイル
- 1
📖 Skill本文(日本語訳)
※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。
stdio MCP 断点デバッグ (VS Code Attach + MCP Inspector + Node --inspect)
目的
ユーザーが VS Code で安定してブレークポイントにヒット させ、stdio 経由で実行される MCP Server (通常は npx @modelcontextprotocol/inspector ... で起動) をデバッグできるようにし、ポートの競合、sourcemap の欠落、ブレークポイントがグレー表示されるなどの問題が発生した場合に、明確なトラブルシューティングパスを提供すること。
Quick Start (最短用法)
すでにビルド成果物 (例: build/internal/index.js または dist/index.js) があり、stdio MCP Server にブレークポイントを設定したい場合:
- sourcemap が有効になっていることを確認 (ビルド成果物の隣に
.mapファイルが表示される) - MCP プロジェクトのルートディレクトリにある
.vscode/launch.jsonに attach 構成を新規追加 - VS Code でこの Attach デバッグを最初に起動
- ターミナルで実行 (ポートは launch.json と一致させる):
npx -y @modelcontextprotocol/inspector node --inspect=9229 build/internal/index.js
もし「ブレークポイントに到達しない / ブレークポイントがグレー表示される」場合は、まず以下のように変更してください:
npx -y @modelcontextprotocol/inspector node --inspect-brk=9229 build/internal/index.js
原理 (わかりやすい説明)
- Node の
--inspect: ローカルマシンに「デバッグポート」(デフォルトは 9229) を開き、VS Code が接続してブレークポイント/ステップ実行を制御できるようにします。 - MCP Inspector: 「一時的な MCP クライアント + UI」のようなもので、サーバーを起動し、stdio を介してサーバーと通信します。
- sourcemap: 「ビルド後の JS」を「あなたの TS ソースコード」にマッピングし、TS でブレークポイントを正確に設定できるようにします。
出力形式 (常にこのテンプレートに従ってユーザーに提供してください)
以下の 3 つの内容を出力してください (すべてコピー&ペースト可能であること):
【1) VS Code Attach 構成 (launch.json スニペット)】
<完全な configuration オブジェクトを提供し、configurations 配列に追加するようにユーザーに促します。port/outFiles が一致する必要があることを明確にします>
【2) 起動コマンド (Inspector + Node --inspect)】
- デフォルト版: <コマンド 1 つ>
- 安定版 (最初の行で一時停止): <コマンド 1 つ>
- ポート変更版 (9229 が使用中の場合): <コマンド 1 つ>
【3) トラブルシューティングリスト (可能性の高い順に)】
1. ...
2. ...
3. ...
重要な制約 ("見た目は正しいがうまくいかない" を避ける)
- ポートは一致する必要がある:
launch.jsonのport==--inspect=PORTの PORT。 - Attach を先に実行してからプロセスを起動: 最初の実行では
--inspect-brkを使用することを推奨します。「起動が速すぎてブレークポイントを逃す」ことを避けるためです。 - ビルド成果物をデバッグする場合は sourcemap が必須: そうでない場合は、コンパイルされた JS でしかデバッグできず、TS ブレークポイントはほぼ確実に正確ではありません。
全体的な流れ (ステップバイステップで実行)
flowchart TD
A[エントリポイントと出力ディレクトリを確認<br/>build/ dist/ 内の index.js] --> B[sourcemap が生成されていることを確認<br/>*.map が見つかること]
B --> C[launch.json の attach 構成を追加<br/>port/outFiles を一致させる]
C --> D[VS Code で Attach を最初に起動<br/>waiting 状態]
D --> E[inspector コマンドを実行してサーバーを起動<br/>--inspect-brk を推奨]
E --> F{ブレークポイントに到達?}
F -- はい --> G[デバッグを開始: ステップ実行/変数/コールスタック]
F -- いいえ --> H[リストに従ってトラブルシューティング: ポート/パス/outFiles/map/スペルミス]
H --> D
ステップ 0: エントリポイントと出力ディレクトリを確認する (パスの記述ミスを避ける)
まず、「どの js ファイルを実行するのか」を明確にします:
ls -la build dist 2>/dev/null
一般的なエントリポイント:
build/internal/index.js(注意: 多くの人がinternelと記述しますが、これはスペルミスです)build/index.jsdist/index.js
ステップ 1: sourcemap を有効にする ("ビルド成果物を直接デバッグする" ための前提条件)
1.1 TypeScript (tsconfig)
TS プロジェクトの場合、tsconfig.json に少なくとも以下が含まれている必要があります:
{
"compilerOptions": {
"sourceMap": true,
"inlineSources": true
}
}
1.2 パッケージャー/ビルドツール (使用しているものを選択)
核となる原則は一言: ビルド出力には .map が含まれている必要がある。
- tsup:
sourcemap: trueを設定 - esbuild: コマンドまたは設定に
sourcemap: true(または--sourcemap) を追加 - rollup:
output.sourcemap: true - webpack: 適切な
devtoolを設定 (例:source-map) - tsc 直接出力:
outDirに.js.mapがあることを確認
自己チェック (.map が表示されるはずです):
find build dist -maxdepth 4 -name "*.map" -print 2>/dev/null | head
.mapが見つからない場合は、すぐにブレークポイントを設定せずに、sourcemap を有効にして再構築してください。
ステップ 2: .vscode/launch.json に attach 構成を新規追加する (最も重要)
MCP プロジェクトのルートディレクトリにある .vscode/launch.json を新規作成/修正し、以下のコードを 新しい構成として 追加します (既存の構成を上書きしないでください)。
通常、変更する必要があるのは 2 箇所のみです:
port: 使用するデバッグポート (デフォルトは 9229)outFiles: 出力ディレクトリがbuild/とdist/のどちらであるか
{
"version": "0.2.0",
"configurations": [
{
"name": "Attach: MCP stdio (Node Inspector)",
"type": "node",
"request": "attach",
"port": 9229,
"protocol": "inspector",
"restart": true,
"timeout": 30000,
"sourceMaps": true,
"smartStep": true,
"skipFiles": ["<node_internals>/**", "**/node_modules/**"],
"cwd": "${workspaceFolder}",
"outFiles": [
"${workspaceFolder}/build/**/*.js",
"${workspaceFolder}/dist/**/*.js"
]
}
]
}
ステップ 3: VS Code で Attach デバッグを起動する
- Run and Debug パネルを開く
Attach: MCP stdio (Node Inspector)を選択- 実行をクリック (または F5 を押す)
この時点で、VS Code は「接続待ち」状態になります。
ステップ 4: Inspector コマンドを実行してサーバーを起動する (stdio モード)
4.1 最も一般的 (推奨)
npx -y @modelcontextprotocol/inspector node --inspect=9229 build/internal/index.js
4.2 最初のデバッグでより安定 (最初にこれを使用することを推奨)
--inspect-brk を使用すると、Node は最初の行で停止し、attach が成功したことを確認してから実行を続行できます:
npx -y @modelcontextprotocol/inspector node --inspect-brk=9229 build/internal/index.js
4.3 pnpm / yarn を使用する場合
pnpm dlx @modelcontextprotocol/inspector node --inspect=9229 build/internal/index.js
yarn dlx @modelcontextprotocol/inspector node --inspect=9229 build/internal/index.js
ステップ 5: よくある問題 (この順序でトラブルシューティング)
5.1 ポートが使用中 (9229 が使用できない)
現象:
- ターミナルにポートが使用中であるというメッセージが表示される
- または VS Code の attach が失敗する/間違ったプロセスに接続される
確認 (macOS / Linux でよく使用される):
lsof -nP -iTCP:9229 -sTCP:LISTEN
対処法 (2 つから 1 つを選択):
- ポートを変更: たとえば、
9230に変更しますlaunch.jsonのportを9230に変更します- コマンドも
--inspect=9230(または--inspect-brk=9230) に変更します
- ポートを使用しているプロセスを終了: 終了したいプロセスであることを確認してから kill します
5.2 ブレークポイントがグレー表示される / 停止しない (最も一般的)
まず、次の 3 つのことを行います:
--inspect-brkで最初に安定させる: プロセスを最初の行で停止させます.mapが実際に存在することを確認: 出力ディレクトリに*.mapが必要ですoutFilesが出力ディレクトリをカバーしていることを確認: たとえば、実際にはbuild/にある場合は、${workspaceFolder}/build/**/*.jsを含める必要があります
追加のチェックポイント (1 つでも確認できれば sourcemap が有効になっています):
- ビルド成果物の
.jsの末尾に//# sourceMappingURL=xxx.js.mapのようなものが含まれている - VS Code の Call Stack に、圧縮された JS の山ではなく、ソースコードのパスが表示される
5.3 Inspector は起動できるが、サーバーが一瞬で終了する
考えられる原因:
- エントリファイルのパスが間違っている (
build/internel/index.jsvsbuild/internal/index.jsのようなスペルミスが最も一般的) - サーバーの起動時にエラーが発生してすぐに終了する (ターミナルの出力を確認)
まず、次の 2 つの最小限のアクションを実行します:
node -p "require('fs').existsSync('build/internal/index.js')"
node --inspect-brk=9229 build/internal/index.js
2 番目のコマンドが実行できる場合は、問題が inspector コマンドまたは渡した引数にある可能性が高くなります。
Examples (例)
例 1: 標準的なビルド成果物のデバッグ (build 出力)
npx -y @modelcontextprotocol/inspector node --inspect-brk=9229 build/internal/index.js
例 2: ポートの競合、9230 に変更
launch.jsonのportを9230に変更- コマンド:
npx -y @modelcontextprotocol/inspector node --inspect-brk=9230 build/internal/index.js
最終手段 (ビルド成果物をデバッグしたくない/できない場合)
sourcemap を一時的に処理できない (またはパッケージ化が複雑すぎる) 場合は、「開発モードでソースコードを直接実行する」方法でデバッグできます (プロジェクトでこのような起動が許可されている場合)。
たとえば、tsx を使用します:
npx -y tsx --inspect-brk=9229 src/index.ts
これは inspector を使用しません。最初に「ブレークポイント/ロジック/フロー」自体に問題がないことを確認し、後でビルド成果物の sourcemap デバッグチェーンを補完するのに適しています。
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開
stdio MCP 断点调试(VS Code Attach + MCP Inspector + Node --inspect)
目标
让用户能够在 VS Code 里稳定命中断点,调试通过 stdio 运行的 MCP Server(通常由 npx @modelcontextprotocol/inspector ... 启动),并在遇到端口占用、sourcemap 缺失、断点灰色等问题时有清晰的排查路径。
Quick Start(最短用法)
你已经有构建产物(例如 build/internal/index.js 或 dist/index.js),要对 stdio MCP Server 打断点:
- 确保 sourcemap 开启(构建产物旁边能看到
.map文件) - 在 MCP 项目根目录的
.vscode/launch.json新增一个 attach 配置 - VS Code 里先启动这个 Attach 调试
- 终端运行(端口要和 launch.json 一致):
npx -y @modelcontextprotocol/inspector node --inspect=9229 build/internal/index.js
如果你发现“断点不进 / 断点灰色”,先改成:
npx -y @modelcontextprotocol/inspector node --inspect-brk=9229 build/internal/index.js
原理(人话版)
- Node 的
--inspect:会在本机开一个“调试口”(默认就是 9229),VS Code 能连进去控制断点/单步。 - MCP Inspector:相当于一个“临时 MCP 客户端 + UI”,它会启动你的 server,并通过 stdio 跟它对话。
- sourcemap:把“构建后的 JS”映射回“你的 TS 源码”,这样你在 TS 上打断点才会准确。
输出格式(请始终按这个模板给用户)
请输出以下 3 块内容(都要可复制粘贴):
【1) VS Code Attach 配置(launch.json 片段)】
<给出一个完整 configuration 对象,提醒用户追加到 configurations 数组里;明确 port/outFiles 需要匹配>
【2) 启动命令(Inspector + Node --inspect)】
- 默认版:<一条命令>
- 稳定版(首行暂停):<一条命令>
- 换端口版(如果 9229 占用):<一条命令>
【3) 排障清单(从最可能到最少见)】
1. ...
2. ...
3. ...
关键约束(避免“看起来对但就是不行”)
- 端口必须一致:
launch.json的port==--inspect=PORT的 PORT。 - 先 Attach 再启动进程:第一次建议用
--inspect-brk,避免“启动太快错过断点”。 - 调构建产物就必须有 sourcemap:否则只能在编译后的 JS 里调,TS 断点大概率不准。
总流程(一步一步照做)
flowchart TD
A[确认入口与输出目录<br/>build/ dist/ 内的 index.js] --> B[确认 sourcemap 已生成<br/>能找到 *.map]
B --> C[追加 launch.json 的 attach 配置<br/>port/outFiles 对齐]
C --> D[VS Code 先启动 Attach<br/>处于 waiting]
D --> E[运行 inspector 命令启动 server<br/>建议用 --inspect-brk]
E --> F{断点命中?}
F -- 是 --> G[开始调试:单步/变量/调用栈]
F -- 否 --> H[按清单排查:端口/路径/outFiles/map/拼写错误]
H --> D
步骤 0:确认入口与输出目录(避免路径写错)
先把“我到底要跑哪个 js 文件”确定下来:
ls -la build dist 2>/dev/null
常见入口:
build/internal/index.js(注意:很多人会写成internel,这是拼写坑)build/index.jsdist/index.js
步骤 1:开启 sourcemap(“直接调构建产物”的前提)
1.1 TypeScript(tsconfig)
如果你是 TS 项目,tsconfig.json 里至少要有:
{
"compilerOptions": {
"sourceMap": true,
"inlineSources": true
}
}
1.2 打包器/构建工具(选你用的那一种)
核心原则就一句话:构建输出必须带 .map。
- tsup:配置
sourcemap: true - esbuild:命令或配置加
sourcemap: true(或--sourcemap) - rollup:
output.sourcemap: true - webpack:设置合适的
devtool(例如source-map) - tsc 直出:确认
outDir下有.js.map
自检(你应该能看到 .map):
find build dist -maxdepth 4 -name "*.map" -print 2>/dev/null | head
如果找不到任何
.map,先别急着调断点:把 sourcemap 打开并重新构建一次。
步骤 2:在 .vscode/launch.json 新增 attach 配置(最关键)
在 MCP 项目根目录新增/修改 .vscode/launch.json,把下面这段 作为一个新配置加进去(不要覆盖你已有的配置)。
你通常只需要改两处:
port:你准备使用的调试端口(默认 9229)outFiles:你的输出目录到底是build/还是dist/
{
"version": "0.2.0",
"configurations": [
{
"name": "Attach: MCP stdio (Node Inspector)",
"type": "node",
"request": "attach",
"port": 9229,
"protocol": "inspector",
"restart": true,
"timeout": 30000,
"sourceMaps": true,
"smartStep": true,
"skipFiles": ["<node_internals>/**", "**/node_modules/**"],
"cwd": "${workspaceFolder}",
"outFiles": [
"${workspaceFolder}/build/**/*.js",
"${workspaceFolder}/dist/**/*.js"
]
}
]
}
步骤 3:在 VS Code 里启动 Attach 调试
- 打开 Run and Debug 面板
- 选择
Attach: MCP stdio (Node Inspector) - 点击运行(或按 F5)
此时 VS Code 会进入“等待连接”状态。
步骤 4:运行 Inspector 命令启动 server(stdio 模式)
4.1 最常用(推荐)
npx -y @modelcontextprotocol/inspector node --inspect=9229 build/internal/index.js
4.2 第一次调试更稳(建议先用它)
--inspect-brk 会让 Node 在第一行就停住,确保 attach 成功后你再继续执行:
npx -y @modelcontextprotocol/inspector node --inspect-brk=9229 build/internal/index.js
4.3 你用 pnpm / yarn
pnpm dlx @modelcontextprotocol/inspector node --inspect=9229 build/internal/index.js
yarn dlx @modelcontextprotocol/inspector node --inspect=9229 build/internal/index.js
步骤 5:常见问题(按这个顺序排查)
5.1 端口被占用(9229 用不了)
现象:
- 终端提示端口占用
- 或 VS Code attach 失败/连错进程
检查(macOS / Linux 常用):
lsof -nP -iTCP:9229 -sTCP:LISTEN
处理方式(二选一):
- 换端口:比如改成
9230- 把
launch.json的port改为9230 - 把命令也改为
--inspect=9230(或--inspect-brk=9230)
- 把
- 结束占用端口的进程:确认是你想结束的进程再 kill
5.2 断点灰色 / 不会停(最常见)
优先做这三件事:
- 用
--inspect-brk先稳住:让进程在第一行停住 - 确认
.map真实存在:输出目录里必须有*.map - 确认
outFiles覆盖到了你的输出目录:例如你实际在build/,就必须包含${workspaceFolder}/build/**/*.js
额外检查点(看到一个就说明 sourcemap 生效了):
- 构建产物
.js末尾有类似//# sourceMappingURL=xxx.js.map - VS Code 的 Call Stack 能看到你的源码路径,而不是一堆压缩后的 JS
5.3 Inspector 能起,但 server 一闪就退出
可能原因:
- 入口文件路径错了(
build/internel/index.jsvsbuild/internal/index.js这种拼写最常见) - server 启动时报错直接退出(去看终端输出)
先做两个最小动作:
node -p "require('fs').existsSync('build/internal/index.js')"
node --inspect-brk=9229 build/internal/index.js
如果第二条能跑起来,说明问题更可能在 inspector 命令或你传参上。
Examples(示例)
示例 1:标准构建产物调试(build 输出)
npx -y @modelcontextprotocol/inspector node --inspect-brk=9229 build/internal/index.js
示例 2:端口冲突,换到 9230
launch.json把port改成9230- 命令:
npx -y @modelcontextprotocol/inspector node --inspect-brk=9230 build/internal/index.js
兜底策略(你不想/不能调构建产物时)
如果你暂时搞不定 sourcemap(或打包太复杂),可以先用“开发态直接跑源码”的方式调试(前提是你的项目允许这么启动)。
例如使用 tsx:
npx -y tsx --inspect-brk=9229 src/index.ts
这条不走 inspector;适合先确认“断点/逻辑/流程”本身没问题,再回头补齐构建产物的 sourcemap 调试链路。