mcptoolsを使ったMCPサーバーのデバッグ方法
使うタイミング: MCPがClaude Desktopで動いたり動かなかったりし、サイレントに失敗する場合 — 生のワイヤトラフィックを確認する必要があるとき。
前提条件
- mcptoolsがインストール済みであること — brew install f/mcptools/mcp or go install github.com/f/mcptools/cmd/mcp@latest
フロー
-
サーバー上のツール一覧を取得する
mcp tools --transport stdio -- node ./my-server.jsを実行し、ツール名とスキーマを確認してください。✓ コピーしました→ 正常な一覧が表示される。空の場合、サーバーがツールを正しくアドバタイズしていない -
特定のツールを生の引数で呼び出す
mcp call my_tool --params '{"x":1}' -- node ./my-server.jsを実行し、JSONレスポンスを確認してください。✓ コピーしました→ ツールの出力が期待されるスキーマと一致する -
インタラクティブシェルを起動する
mcp shell -- node ./my-server.jsを実行し、手動でツールを呼び出してください。✓ コピーしました→ ツールのタブ補完が使えるREPLが表示される
結果: Claudeが見ているものとまったく同じものを確認できます。Claude上でしか再現しなかったバグがここで可視化されます。
注意点
- サーバーがstdoutにログを出力し、JSON-RPCストリームが壊れる — すべてのログをstderrに出力してください。mcptoolsはこれを検出します — JSONパースエラーが文字化けしている場合がヒントです
- ツールスキーマがサポートされていないJSON Schemaキーワードを使用している — コアのdraft-07に準拠してください。一部のクライアントは
$ref、allOfなどを拒否します