🤖

Windows11でCodexからSerenaを使う

に公開

経緯

Windows11の開発環境でCodexを利用し始めたが、
Serenaがタイムアウトエラーで起動できずに悩んでいた。
同じ環境でClaude Codeは問題なくSerenaを起動できている。

原因

Windows環境でCodex CLIがMCPサーバーを起動する際、環境変数SystemRootとwindirが子プロセスに渡されないため、WinError 10106(WSAEPROVIDERFAILEDINIT)エラーが発生して起動に失敗します。

具体的には

  • PythonのasyncioがWindowsでWinsockを初期化する際、これらの環境変数を参照してシステムディレクトリを解決する必要がある。
  • Codex CLIは最小限の環境変数セットで子プロセスを起動するため、これらの重要な変数が欠落している。
  • Claude Codeは完全なシェル環境を継承するため、この問題が発生しない

対策

~/.codex/config.tomlに環境変数を明示的に追加します。

config.toml
[mcp_servers.serena]
command = "uvx"
args = [
    "--from",
    "git+https://github.com/oraios/serena",
    "serena",
    "start-mcp-server",
    "--context",
    "codex"
]
env = { SystemRoot = "C:\\Windows", windir = "C:\\Windows" }

Serena初回起動時に出るかもしれない問題

起動に失敗した場合は、Codex CLIを再起動してみてください。2回目の起動では、キャッシュやプリコンパイルされたファイルが利用されるため、Serenaの起動が速くなることがあります。

Discussion