CursorのMCPサーバ設定「no tools or prompts」トラブルシューティングガイド
CursorでMCPサーバをセットアップしようとした際に表示される「no tools or prompts」というメッセージ。これは多くの開発者が一度は遭遇する壁です。このメッセージの正体は 「サーバープロセス自体の起動には成功したが、そのサーバーが持つべき能力(ToolsやPrompts)の定義をCursorが受け取れなかった」 という状態です。
原因は、認証情報の誤り、設定ファイルの記述ミス、ローカル実行環境の差異など多岐にわたります。しかし、正しい手順で切り分けていけば、必ず解決できます。
この記事では、これまでの試行錯誤の過程を体系化し、無用な手戻りを防ぐための決定木(デシジョンツリー)形式のトラブルシューティング方法をナレッジとして提供します。
解決へのロードマップ:3つのステップ
問題解決は、以下の3ステップで進めます。重要なのは、いきなりCursorで試すのではなく、まずMCP Inspectorという専用ツールで各サーバを単体で確実に動かすことです。これが最短の解決ルートです。
-
【静的チェック】
mcp.json
の記述を疑う- ファイル自体の文法や論理的な間違いがないかを確認します。
-
【動的チェック】MCP Inspectorでサーバの単体起動を試す
- 問題の核心に迫る最も重要なステップです。エラーメッセージを元に原因を特定します。
-
【最終反映】成功した設定を
mcp.json
に書き戻す- 動くことが確認できた設定をCursorに反映させます。
mcp.json
の記述を疑う
ステップ1:【静的チェック】まず、設定ファイル自体に明らかな誤りがないかを確認します。
✅ チェックリスト
-
JSON構文は正しいか?
- 末尾の余分なカンマ、閉じ括弧
{}
や[]
の不足はありませんか? エディタで構文エラーが表示されていないか確認してください。
- 末尾の余分なカンマ、閉じ括弧
-
サーバ定義は重複していないか?
-
"playwright"
と"playwright-mcp"
のように、同じサーバを指す定義が複数存在していませんか? 必ず一つに統一してください。
-
-
command
とargs
は正しく分離されているか?-
"command": "npx -y @playwright/mcp@latest"
のように1行で書くのは間違いです。 -
正しくは
"command": "npx"
,"args": ["-y", "@playwright/mcp@latest"]
のように、コマンド本体と引数を明確に分離します。
-
ステップ2:【動的チェック】MCP Inspectorでサーバを単体起動する
mcp.json
の見た目に問題がなければ、次に実際にサーバが起動するかを試します。ここで発生する具体的なエラーが、原因を特定する最大のヒントになります。
まず、ターミナルでMCP Inspectorを起動します。
Bash
npx -y @modelcontextprotocol/inspector
ブラウザでInspectorが開いたら、「Child process (stdio)」を選択し、以下の決定木に従って検証を進めてください。
MCP Inspector 起動テスト決定木
-
試行A:
npx
経由での起動-
command
:npx
-
Arguments
:-y
,(パッケージ名)
(例:@playwright/mcp@latest
) -
▶️ 結果は?
-
成功:
Capabilities
欄にtools
やprompts
が表示されればOKです。→ ステップ3へ。 -
失敗: エラーメッセージを確認し、下記に進みます。
-
-
-
エラー別対処法
-
エラー:
... ENOENT
-
原因: 「ファイルが見つかりません」。
npx
コマンド自体が見つかっていません。 -
対策: ターミナルで
where npx
(Windows) またはwhich npx
(macOS/Linux) を実行し、パスが表示されるか確認してください。表示されなければ、Node.jsのPATH設定を見直すか、Node.jsを再インストールしてください。
-
-
エラー:
SyntaxError: Unexpected token 'M', "Microsoft "... is not valid JSON
-
原因: 最も典型的な失敗パターンの一つです。MCPサーバは標準出力(stdout)をJSON形式のプロトコル通信にしか使いません。しかし、
npx
やWindowsのcmd
が、著作権表示などのJSONではない余計な文字列をstdoutに出力してしまい、パースエラーを引き起こしています。 -
対策:
npx
ラッパーを介さず、サーバの実体を直接実行します。→ 試行Bへ。
-
-
エラー:
Command not found, transports removed
-
原因:
command
にnpx
とだけ入力し、Arguments
が空の状態です。npx
が何も実行せずに即終了したため、Inspectorが通信を切断したというログです。 -
対策:
Arguments
に実行したいパッケージ名を正しく入力してください。
-
-
エラー:
Error: SSE connection not established
-
原因: プロセスが起動直後に終了している可能性が高いです。多くはコマンドのパス間違いか、サーバが期待する通信方式(transport)が指定されていないことが原因です。
-
対策: 実行パスが正しいか(特に
<YOU>
のようなプレースホルダーが残っていないか)を確認し、env
にTRANSPORT=stdio
を追加します。→ 試行Bへ。
-
-
-
試行B:実体コマンドの直接実行(最安定策)
この方法は、npxによる出力汚染を回避できるため、最も確実で推奨される方法です。
-
① グローバルインストール:
ターミナルで、使用したいサーバをPC全体で使えるようにインストールします。
Bash
npm i -g @playwright/mcp @notionhq/notion-mcp-server @bytebase/dbhub
-
② 実行ファイルのフルパスを確認:
インストールしたコマンドの場所を探します。
Bash
where playwright-mcp # Windowsの場合 # 例: C:\Users\<YOU>\AppData\Roaming\npm\playwright-mcp.cmd
-
③ Inspectorで直接実行:
-
command
: 上記で確認したフルパス
(例:C:\Users\<YOU>\AppData\Roaming\npm\playwright-mcp.cmd
) -
Arguments
: (空欄でOK) -
env
:-
TRANSPORT
:stdio
(←重要) -
MCP_LOG_LEVEL
:warn
(余計なログを抑制)
-
-
-
▶️ 結果は?
-
成功:
Capabilities
にtools
が表示されるはずです。おめでとうございます!これで動く設定が確定しました。→ ステップ3へ。 -
失敗: フルパスの記述が間違っていないか(ユーザ名部分など)を再確認してください。
-
-
mcp.json
に書き戻す
ステップ3:【最終反映】成功した設定をMCP Inspectorで成功した設定を、そのままmcp.json
にコピーします。
-
推奨設定例 (
playwright
の場合):JSON
{ "mcpServers": { "playwright": { "command": "C:\\Users\\<YOU>\\AppData\\Roaming\\npm\\playwright-mcp.cmd", "args": [], "env": { "TRANSPORT": "stdio", "MCP_LOG_LEVEL": "warn" } }, // ... 他のサーバー } }
-
注意: JSONファイル内では、Windowsのパス区切り文字
\
は\\
とエスケープする必要があります。
-
注意: JSONファイル内では、Windowsのパス区切り文字
-
最終確認:
-
mcp.json
を保存します。 -
Cursorを完全に終了させ、再起動します。 (設定を確実に再読み込みさせるため)
-
エディタで
@
を入力し、@playwright
などのツールが候補に表示されれば、設定は成功です。
-
まとめ:3行サマリ
-
「no tools」はサーバ起動後の能力取得失敗。原因の9割はパス、引数、環境変数のミス。
-
トラブル時は必ず
MCP Inspector
を使い、「グローバルインストール → フルパスで直接実行」 を試すのが最短ルート。 -
Inspectorで動いた設定(
command
,args
,env
)をそのままmcp.json
にコピーし、Cursorを再起動すれば解決する。
Discussion