Windows: stdio MCP handshake fails with Laravel Boost (php artisan boost:mcp) in Codex CLI 0.122.0

Open 💬 2 comments Opened Apr 22, 2026 by hypeneural

Upstream Issue Draft

Suggested title

Windows: stdio MCP handshake fails with Laravel Boost (php artisan boost:mcp) in Codex CLI 0.122.0

Suggested labels

  • bug
  • windows
  • mcp

How to open after GitHub auth

The npm package points to:

  • repository: https://github.com/openai/codex
  • issues: https://github.com/openai/codex/issues

After authenticating gh, open the issue with:

gh issue create --repo openai/codex --title "Windows: stdio MCP handshake fails with Laravel Boost (php artisan boost:mcp) in Codex CLI 0.122.0" --body-file docs/active/laravel-boost-codex/UPSTREAM-ISSUE.md

Summary

On Windows, Codex detects the Laravel Boost MCP server configuration and scopes it correctly to the Laravel app, but the MCP client fails during the initial handshake.

The same Boost server responds correctly outside Codex when spoken to over stdio with newline-delimited JSON-RPC, which suggests the failure is in the Codex client path on this Windows environment rather than in the Boost server itself.

Environment

  • OS: Windows
  • Shell: PowerShell
  • Codex CLI:
  • 0.122.0-alpha.13 via VS Code extension openai.chatgpt
  • 0.122.0 via npm i -g @openai/codex@latest
  • Laravel app:
  • Laravel 13.3.0
  • PHP 8.3
  • laravel/boost v2.4.4
  • MCP config:
[mcp_servers.laravel-boost]
command = "php"
args = ["artisan", "boost:mcp"]
cwd = "."
required = false
startup_timeout_sec = 20

Reproduction

  1. Open Codex in the Laravel app directory:
codex --cd apps/api
  1. Let startup finish, then run:
/mcp
  1. Reproduce the same condition in non-interactive mode:
codex exec -C apps/api -s read-only -c mcp_servers.laravel-boost.required=true --color never "Use the laravel-boost MCP server if available and list one tool name it exposes. Do not change files."

Expected behavior

  • Codex starts the laravel-boost MCP server successfully.
  • /mcp lists laravel-boost as active.
  • A Boost tool such as application-info or search-docs can be called successfully inside Codex.

Actual behavior

  • Interactive TUI startup shows:
MCP client for `laravel-boost` failed to start: MCP startup failed: handshaking with MCP server failed: connection closed: initialize response
MCP startup incomplete (failed: laravel-boost)
  • /mcp lists only:
  • codex_apps
  • openaiDeveloperDocs
  • codex exec with required = true fails with:
required MCP servers failed to initialize: laravel-boost: handshaking with MCP server failed: connection closed: initialize response

Counterproof: Boost server itself is healthy

Running the server directly outside Codex works:

  • initialize returns successfully
  • tools/list returns tools
  • confirmed tools include:
  • application-info
  • browser-logs
  • database-connections
  • database-query
  • database-schema
  • get-absolute-url
  • last-error
  • read-log-entries
  • direct calls to application-info and search-docs succeed

Additional experiments already tried

These did not change the result:

  • startup_timeout_sec = 60
  • absolute php.exe path instead of php
  • switching Codex from the VS Code extension binary to global npm @openai/codex@0.122.0
  • codex exec --enable unified_exec

Why this looks client-side

  • Codex scopes the MCP config correctly:
  • codex mcp list in repo root does not show laravel-boost
  • codex mcp list in apps/api does show laravel-boost
  • The Boost server responds correctly over stdio outside Codex
  • The same failure reproduces in both:
  • interactive TUI
  • codex exec
  • The same failure reproduces on both:
  • 0.122.0-alpha.13
  • 0.122.0

Local operational decision

For now the MCP remains configured with:

  • required = false

We are treating installation/publication as complete, but not promoting the MCP to required startup until a Codex version newer than 0.122.0 succeeds on Windows.

View original on GitHub ↗

This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗