観測(2026-08-21)
.mcp.json へ書き込む起動コマンドが cmd /c npx tsx <entry> になっている。npx はカレントディレクトリから tsx を解決するが、セッションの作業ディレクトリはユーザーのプロジェクトであり、そこに tsx は入っていない。
実測(作業ディレクトリ = C:\Users\smile\ClaudeCode):
$ npx --no-install tsx --version
npm error npx canceled due to missing packages and no YES option: ["tsx@4.23.12"]
tsx はグローバルにも入っていない。したがって npx はレジストリからの取得を試みる。サイドカーは CLI が非対話で spawn するプロセスであり、npx のインストール確認に答える経路が無いため、停止するか失敗する。どちらでもサイドカーは起動せず、部屋には誰も入らない。
tsx は liplus-chat 自身の node_modules には存在する(node_modules/tsx/dist/cli.mjs)。問題は在処ではなく、解決の起点がセッションの作業ディレクトリになっていること。
直し方
.mcp.json に書く起動コマンドを、解決を伴わない絶対パス指定にする。
- command =
node
- args = [
<liplus-chat>/node_modules/tsx/dist/cli.mjs, <sidecar entry>]
npx の解決も cmd /c によるシェル経由の PATHEXT 解決も不要になる。node は .exe であり直接 spawn できるため、Windows 分岐そのものが消える。
sidecar/test/round-trip.test.mjs は既にこの形でサイドカーを spawn しており、CI で通っている。実装側だけが別の経路を使っていた。
制約
- 解決の起点をセッションの作業ディレクトリに置かない。
- runner の場所は環境変数で上書きできるようにする(
LIPLUS_SIDECAR_ENTRY と同じ理由)。
- 生成されるコマンドの形をテストで固定する。
npx が再び現れたら落ちること。
対象ファイル
crates/mcp-config/src/lib.rs
src-tauri/src/session.rs
完了条件
.mcp.json の liplus-chat-room エントリが node と絶対パスだけで構成される。
- 生成コマンドの形がテストで固定されている。
- セッションの作業ディレクトリに
tsx が無くてもサイドカーが起動できる。
観測(2026-08-21)
.mcp.jsonへ書き込む起動コマンドがcmd /c npx tsx <entry>になっている。npxはカレントディレクトリからtsxを解決するが、セッションの作業ディレクトリはユーザーのプロジェクトであり、そこにtsxは入っていない。実測(作業ディレクトリ =
C:\Users\smile\ClaudeCode):tsxはグローバルにも入っていない。したがってnpxはレジストリからの取得を試みる。サイドカーは CLI が非対話で spawn するプロセスであり、npxのインストール確認に答える経路が無いため、停止するか失敗する。どちらでもサイドカーは起動せず、部屋には誰も入らない。tsxは liplus-chat 自身のnode_modulesには存在する(node_modules/tsx/dist/cli.mjs)。問題は在処ではなく、解決の起点がセッションの作業ディレクトリになっていること。直し方
.mcp.jsonに書く起動コマンドを、解決を伴わない絶対パス指定にする。node<liplus-chat>/node_modules/tsx/dist/cli.mjs,<sidecar entry>]npxの解決もcmd /cによるシェル経由の PATHEXT 解決も不要になる。nodeは.exeであり直接 spawn できるため、Windows 分岐そのものが消える。sidecar/test/round-trip.test.mjsは既にこの形でサイドカーを spawn しており、CI で通っている。実装側だけが別の経路を使っていた。制約
LIPLUS_SIDECAR_ENTRYと同じ理由)。npxが再び現れたら落ちること。対象ファイル
crates/mcp-config/src/lib.rssrc-tauri/src/session.rs完了条件
.mcp.jsonのliplus-chat-roomエントリがnodeと絶対パスだけで構成される。tsxが無くてもサイドカーが起動できる。