Skip to content

原文(日本語訳)

MCPのエラーメッセージを改善しました。サーバー設定に url はあるが type がない場合、誤解を招く「command: expected string」ではなく、"type": "http" を指定するよう提案する、より分かりやすいエラーを表示するようになりました。

原文(英語)

Improved MCP error messages: clearer error when a server config has url but no type, suggesting "type": "http" instead of the misleading "command: expected string"

概要

Claude CodeのMCP(Model Context Protocol)サーバー設定では、リモートHTTPサーバーを使う場合に type: "http" を明示する必要があります。これまでは url フィールドはあるものの type フィールドを書き忘れた設定に対し、command: expected string という本質的な原因とは関係のないエラーが表示され、原因の特定が困難でした。v2.1.202では、この状況を検出して「type: "http" を指定してください」という具体的で分かりやすいエラーメッセージを表示するように改善されました。

基本的な使い方

リモートのHTTP MCPサーバーを設定する場合は、.mcp.json などの設定ファイルで type フィールドに "http" を明示します。

json
{
  "mcpServers": {
    "my-http-server": {
      "type": "http",
      "url": "https://mcp.example.com/mcp"
    }
  }
}

type を省略すると、Claude Codeは設定を正しく解釈できず、以前は無関係な command に関するエラーが出ていました。type: "http" を書くことで、url フィールドを使ったリモートサーバーとして正しく認識されます。

実践例

誤った設定例と正しい設定例の比較

type を書き忘れると、Claude Codeはこの設定を(command を必要とする)stdioサーバーとして解釈しようとして失敗していました。

json
// 誤り: typeがないため、stdioサーバーとして解釈されようとしてしまう
{
  "mcpServers": {
    "weather-api": {
      "url": "https://api.weather.com/mcp"
    }
  }
}

v2.1.202以降では、上記のような設定に対して「url はあるが type がありません。\"type\": \"http\" を指定してください」という趣旨の明確なエラーメッセージが表示されます。正しい設定は以下の通りです。

json
// 正しい: typeを明示する
{
  "mcpServers": {
    "weather-api": {
      "type": "http",
      "url": "https://api.weather.com/mcp"
    }
  }
}

認証ヘッダー付きHTTPサーバーの設定

type: "http" を指定した上で、認証ヘッダーを追加する場合も同様に url と組み合わせて記述します。CLIから追加する場合は次のように指定できます。

bash
claude mcp add --transport http secure-api https://api.example.com/mcp \
  --header "Authorization: Bearer your-token"

.mcp.json に直接記述する場合は次のようになります。

json
{
  "mcpServers": {
    "secure-api": {
      "type": "http",
      "url": "https://api.example.com/mcp",
      "headers": {
        "Authorization": "Bearer your-token"
      }
    }
  }
}

type を省略して headers だけを追加しても、原因不明の command エラーになっていたケースがこの改善で解消されます。

注意点

  • MCPサーバーの設定では、stdio(ローカルプロセス)、http(リモートHTTP、推奨)、sse(非推奨)、ws(WebSocket)などのtransport typeを type フィールドで明示する必要があります。
  • type フィールドは streamable-httphttp のエイリアスとして受け付けるため、他のMCPサーバーのドキュメントに記載された設定例をそのまま使っても動作します。
  • 今回の改善はエラーメッセージの分かりやすさに関するものであり、type フィールド自体を省略できるようになったわけではありません。url を使うリモートサーバーでは引き続き type: "http"(または ssews)を明示する必要があります。
  • claude mcp add-jsonclaude mcp add --transport http コマンドを使って追加する場合は、Claude Codeが自動的に正しい type を設定するため、この問題は発生しません。手書きやコピー&ペーストで .mcp.json を編集する場合に特に有用な改善です。

関連情報