Skip to content

原文(日本語に翻訳)

サーバーが複数要素のエラーコンテンツを返す場合に、MCPツールエラーが最初のコンテンツブロックのみに切り詰められていた問題を修正しました。

原文(英語)

Fixed MCP tool errors truncating to only the first content block when the server returns multi-element error content

概要

MCP(Model Context Protocol)サーバーがエラー時に複数のコンテンツブロックを含むレスポンスを返した場合、Claude Codeは最初のブロックしか表示・処理していませんでした。これにより、詳細なエラーメッセージや補足情報が失われ、デバッグが困難になっていました。v2.1.89でMCPのエラーレスポンス処理が修正され、すべてのコンテンツブロックが正しく表示されるようになりました。

基本的な使い方

MCPサーバーのエラーは、ツール呼び出し時に発生する場合があります:

bash
# MCPツールの使用例
claude "データベースに接続してください"
# MCPサーバーがエラーを返した場合

# 修正前: エラーの最初のブロックのみ表示
# Error: Connection failed

# 修正後: すべてのエラーブロックが表示
# Error: Connection failed
# Details: Host 'db.example.com' not reachable
# Suggestion: Check firewall settings or VPN connection

実践例

MCPサーバーの複数エラーブロック例

json
// MCPサーバーが返す複数コンテンツブロックのエラーレスポンス例
{
  "isError": true,
  "content": [
    {
      "type": "text",
      "text": "Error: Authentication failed"
    },
    {
      "type": "text",
      "text": "Details: Invalid API key or expired token"
    },
    {
      "type": "text",
      "text": "Action: Please regenerate your API key at https://console.example.com"
    }
  ]
}
// 修正前: 最初のブロックのみ表示されていた
// 修正後: すべてのブロックが表示される

MCPサーバーの設定とデバッグ

json
// .claude/settings.json でのMCP設定例
{
  "mcpServers": {
    "my-server": {
      "command": "node",
      "args": ["./mcp-server.js"],
      "env": {
        "API_KEY": "${MY_API_KEY}"
      }
    }
  }
}
bash
# MCPサーバーのデバッグモード
claude --mcp-debug "ツールを呼び出してください"

# 修正後: エラー詳細がすべて表示されるため、デバッグが容易になった

注意点

  • この修正はMCPサーバーが複数のコンテンツブロックでエラーを返す場合にのみ影響します
  • 単一のコンテンツブロックのエラーは以前から正しく動作していました
  • カスタムMCPサーバーを開発している場合は、詳細なエラー情報を複数ブロックで提供することが推奨されます
  • エラーコンテンツの型(text、image等)によって表示方法が異なります

関連情報