Quartet / Quintet

.mcp.json で書き間違えても気づけないところ

.mcp.json は短いファイルなので、間違いは少ないはずです。

実際にいちばん高くつくのは、間違いが「別の正しい設定」として読まれるときです。

1. url だけ書くと、stdio サーバとして読まれる

type を書き忘れた場合、既定として http になるわけではありません。 type の無いエントリは stdio サーバとして読まれます。

stdio サーバには command が必要なので、そのサーバは設定エラーとして飛ばされます。

{
  "mcpServers": {
    "example": { "url": "https://mcp.example.com/mcp" }
  }
}
MCP server "example" has a "url" but no "type"; add "type": "http" (or "sse" / "ws") to this entry

この文言が出るのは v2.1.202 以降です。それより前は command: expected string, received undefined と出ていました。 url を書いたのに command の話をされるので、原因に辿り着きにくい形でした。

--output-format stream-json で走らせている場合は、 system/init イベントの mcp_server_errors にも出ます。スクリプトから検知できます。

2. timeout: 500 は 500ミリ秒になりません

timeout はミリ秒です。そして1000 未満の値は無視されます。

無視されたあとは MCP_TOOL_TIMEOUT に落ち、それも設定されていなければ その既定である約28時間になります。

"timeout": 500      // → 500ms ではない。約28時間
"timeout": 600000   // → 10分

短くしたつもりが、事実上の無制限になります。 v2.1.162 より前は 1000 未満は1秒に丸められていたので、挙動が変わっています。

関連して知っておくとよいこと。

3. トランスポート別の必須項目

type 必須
(無し) commandtype を省くと stdio 扱い
stdio command
http url
streamable-http urlhttp の別名。MCP 仕様側の呼び方
sse url
ws url

streamable-http が別名として受け付けられるので、 サーバのドキュメントからそのまま貼っても動きます。

wsurl / headers / headersHelper / timeout / alwaysLoadhttp と同じように受け付けますが、claude mcp add --transportws を受け付けません。 JSON で書く必要があります。

4. sse は非推奨

SSE トランスポートは非推奨です。 ただし SSE しか出していないサービスもあるので、 選べない場合はあります。選べるなら http にしてください。

5. untrusted なフォルダでは、承認の設定が無視される

.mcp.json のサーバは承認が要ります。 そしてその承認をリポジトリ側から与えることはできません。

enableAllProjectMcpServersenabledMcpjsonServers を プロジェクトの .claude/settings.json にコミットしても、 untrusted なフォルダでは無視されます。 サーバは ⏸ Pending approval のまま、 接続もヘルスチェックもされません。

クローンしてきたリポジトリは、自分のサーバを自分で承認できません。

untrusted なフォルダでも効く承認元は3つです。

6. alwaysLoad は起動を待たせる

alwaysLoad: true にすると、そのサーバのツールは ENABLE_TOOL_SEARCH の設定に関係なく、セッション開始時に全部読み込まれます。

引き換えに、起動がそのサーバのツール一覧を待ちます (最初のプロンプトを組む時点で揃っている必要があるため)。 待ち時間は接続タイムアウトの5秒が上限です。

毎ターン必要な少数のツールにだけ使ってください。

検査する

上のうち、書いた時点で分かるものは機械で見つけられます。

npx @quintetkit/ccheck
error .mcp.json:3
      Server "example" has a `url` but no `type`. Add `"type": "http"` (or "sse" / "ws").
      why: https://code.claude.com/docs/en/mcp

warn  .mcp.json:9
      Server "slow": `timeout: 500` is in milliseconds; values below 1000 are ignored.
      why: https://code.claude.com/docs/en/mcp

指摘には必ず出典が付きます。 根拠を示せないものはルールにしていません。

「正しく書けているのに何も起きない」場所を、hook・設定キー・権限ルール・ サブエージェントまで含めて1枚にまとめたものはこちらです。

https://quintetkit.github.io/reference/claude-code-silent-config.html

出典

https://code.claude.com/docs/en/mcp

2026-09-04 に取得したスナップショットを元にしています。

この運用そのものを配っています

4 人格版 Quartet は MIT で無料公開しています。UI 設計人格・レビュー基準・ Issue 単位の並列実行スクリプト・実践ガイド 10 章を足した Quintet は有料版です。

無料版を見る 製品ページ