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に反映させます。
ステップ1:【静的チェック】mcp.json の記述を疑う
まず、設定ファイル自体に明らかな誤りがないかを確認します。
✅ チェックリスト
-
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へ。 -
失敗: フルパスの記述が間違っていないか(ユーザ名部分など)を再確認してください。
-
-
ステップ3:【最終反映】成功した設定をmcp.jsonに書き戻す
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