CC逆引きリファレンス

MCP サーバーをデバッグしたい

4. 権限・セキュリティ

コマンド / 機能

ログ出力とエラーハンドリング

MCP サーバーの問題を調査

設定例

// デバッグログを stderr に出力(stdout は MCP 通信用)
console.error("[DEBUG] Tool called:", toolName, arguments);

// エラーハンドリング
server.tool("risky-operation", "...", schema, async (args) => {
  try {
    const result = await doSomething(args);
    return { content: [{ type: "text", text: result }] };
  } catch (error) {
    console.error("[ERROR]", error);
    return {
      content: [{ type: "text", text: `エラー: ${error.message}` }],
      isError: true
    };
  }
});

// MCP Inspector でテスト
// npx @modelcontextprotocol/inspector node ./my-server.js

こんな時に使う

  • MCP サーバーが動かない時
  • ツールが期待通り動作しない時
  • エラーの原因を調査したい時

使い方

  1. 1console.error() でログを出力(stdout は使わない)
  2. 2try-catch でエラーをキャッチして返す
  3. 3MCP Inspector でサーバーを単体テスト

Tips

  • stdout は MCP プロトコル通信専用なのでログは stderr へ
  • isError: true を返すと Claude がエラーとして認識
  • MCP Inspector は公式のデバッグツール