Skip to content

原文(日本語に翻訳)

-p モード向けに MCP_CONNECTION_NONBLOCKING=true を追加し、MCP接続の待機を完全にスキップ。また --mcp-config サーバー接続を最も遅いサーバーへのブロッキングではなく5秒で上限を設定

原文(英語)

Added MCP_CONNECTION_NONBLOCKING=true for -p mode to skip the MCP connection wait entirely, and bounded --mcp-config server connections at 5s instead of blocking on the slowest server

概要

ヘッドレスモード(-p フラグ)での起動高速化のため、MCP_CONNECTION_NONBLOCKING=true 環境変数が追加されました。この設定を有効にするとMCPサーバーへの接続待機を完全にスキップし、即座に処理を開始できます。また、--mcp-config を使用した場合のサーバー接続タイムアウトが5秒に制限されるようになり、応答の遅いMCPサーバーがあっても他のサーバーへのアクセスがブロックされなくなりました。

基本的な使い方

bash
# MCP接続待機を完全スキップ(-p モード専用)
MCP_CONNECTION_NONBLOCKING=true claude -p "コードを分析してください"

# --mcp-config と組み合わせる場合(タイムアウトは自動で5秒に制限)
claude -p --mcp-config ./mcp-servers.json "タスクを実行してください"

実践例

CI/CDパイプラインでの高速実行

yaml
# .github/workflows/claude-analysis.yml
name: Claude Code Analysis
on: [push]

jobs:
  analyze:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Run Claude analysis
        env:
          MCP_CONNECTION_NONBLOCKING: "true"
          ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
        run: |
          # MCPの接続待機をスキップして高速実行
          claude -p "変更されたファイルを分析してレポートを生成してください"

複数MCPサーバー設定でのタイムアウト制御

json
// mcp-servers.json
{
  "mcpServers": {
    "fast-server": {
      "command": "fast-mcp-server",
      "args": []
    },
    "slow-server": {
      "command": "slow-mcp-server",
      "args": []
    },
    "another-server": {
      "command": "another-mcp-server",
      "args": []
    }
  }
}
bash
# v2.1.89以前: slow-serverの応答を無制限に待機していた
# v2.1.89以降: 各サーバーへの接続は最大5秒でタイムアウト
claude -p --mcp-config mcp-servers.json "タスクを実行"

スクリプトからの高速バッチ処理

bash
#!/bin/bash
# batch-process.sh

export MCP_CONNECTION_NONBLOCKING=true

FILES=($(git diff --name-only HEAD~1))

for file in "${FILES[@]}"; do
  echo "分析中: $file"
  claude -p "以下のファイルの変更点を要約してください: $file" \
    --output-format json >> analysis-results.jsonl
done

echo "バッチ処理完了: ${#FILES[@]}件のファイルを分析"

Pythonスクリプトでの自動化

python
import subprocess
import os

def run_claude_analysis(prompt: str, mcp_config: str = None) -> str:
    """MCP非ブロッキングモードでClaudeを実行"""
    env = os.environ.copy()
    env["MCP_CONNECTION_NONBLOCKING"] = "true"

    cmd = ["claude", "-p", prompt]
    if mcp_config:
        cmd.extend(["--mcp-config", mcp_config])

    result = subprocess.run(
        cmd,
        env=env,
        capture_output=True,
        text=True
    )
    return result.stdout

注意点

  • MCP_CONNECTION_NONBLOCKING=true-p(ヘッドレス)モード専用です。インタラクティブセッションでは効果がありません
  • 非ブロッキングモードでは、MCPサーバーが完全に起動する前にClaudeが処理を開始するため、MCP依存のツールが最初のリクエストで利用できない場合があります
  • --mcp-config の5秒タイムアウトは接続確立のみに適用されます。接続確立後の個々のリクエストには適用されません
  • 応答の遅いMCPサーバーでタイムアウトが頻発する場合は、そのサーバーのパフォーマンスを見直すことを推奨します

関連情報