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 サーバーが動かない時
- ツールが期待通り動作しない時
- エラーの原因を調査したい時
使い方
- 1console.error() でログを出力(stdout は使わない)
- 2try-catch でエラーをキャッチして返す
- 3MCP Inspector でサーバーを単体テスト
Tips
- stdout は MCP プロトコル通信専用なのでログは stderr へ
- isError: true を返すと Claude がエラーとして認識
- MCP Inspector は公式のデバッグツール