📘

Playwright MCPのbootでハマった。Cannot find module './parsers/any.js'を解決した記録

に公開

TL;DR

  1. npx @playwright/mcp@latest を叩いたら Cannot find module './parsers/any.js' で即死。
  2. 原因は依存パッケージ zod-to-json-schema の壊れたバージョン。
  3. キャッシュ削除 & 最新版インストールで解決。
    この記事はハマり〜復旧までの手順を時系列でまとめる備忘録です。

背景

  • Cursor の MCP 機能で Playwright を使い、ブラウザ操作用ツールを呼び出したかった。
  • mcp.json に以下を追記し、Cursor から reload したところクラッシュ。
mcp.json
"playwright": {
  "command": "npx",
  "args": ["@playwright/mcp@latest"]
}

発生したエラー

$ npx @playwright/mcp@latest
Error: Cannot find module './parsers/any.js'
  at ...

Node v18.20.2 上で再現。Stack trace には zod-to-json-schema/dist/cjs/selectParser.js が登場。

1. 原因追跡

1-1. Stack trace から依存関係を遡る

@playwright/mcp → zod-to-json-schema → ./parsers/any.js (missing!)

1-2. npm registry を覗く

npm info zod-to-json-schema versions | tail -n 5
# ... 3.24.0, 3.24.1, 3.24.2, 3.24.3, 3.24.4

3.24.0〜3.24.2 までは CJS ビルドに any.js が同梱されていない ことを確認。

1-3. Issue 調査

  • GitHub Issue: colinhacks/zod-to-json-schema#151
  • 同様の報告が Astro, Vite プラグイン界隈でも散見

結論: 壊れたバージョンをインストールしていた

2. 解決までのステップ

手順 コマンド 補足
① npm キャッシュ削除 rm -rf ~/.npm/_npx/* npx の一時ディレクトリをクリーンに
② 最新版で再インストール npx @playwright/mcp@latest 依存解決で 3.24.4 が入る
③ MCP 再起動 Cursor 設定画面で Reload “Connected” と表示されるのを確認

成功するとログにこう出る👇

Connected to stdio server, fetching offerings
Found 25 tools

3. もしまだ動かない場合のチェックリスト

  1. npm ls zod-to-json-schema でバージョン確認。3.24.4 以上か?
  2. Proxy や FW が npm tgz を途中で切っていないか?
  3. Playwright のブラウザバイナリが未インストール → npx playwright install chromium

4. 固定バージョンで運用する場合

mcp.json
"playwright": {
  "command": "npx",
  "args": [
    "--package=zod-to-json-schema@3.24.4",
    "@playwright/mcp@latest"
  ]
}

あるいは npm 8+ なら overrides

package.json
{
  "overrides": {
    "zod-to-json-schema": "^3.24.4"
  }
}

5. 学び & ベストプラクティス

  • ``** は依存を毎回解決する** → キャッシュ汚染の影響を受けやすい。
  • 壊れたリリースが流れてきたら キャッシュ削除 + バージョン固定 が鉄板。
  • MCP サーバは内部で別 Node を fork する場合がある。Node 本体のバージョンが新しくても油断しない。

参考リンク


以上。誰かのハマりが解消されれば幸いです💦

Discussion