---
name: feedback-windows-store-uwp-env-strip-2026-08-19
description: Claude Desktop v1.32885.1 (Windows Store UWP sandbox) は claude_desktop_config.json の env dict を子プロセスに完全 propagate しない — MCP server config は env 依存でなく launcher script 経由の bootstrap で書く discipline
metadata:
  type: feedback
---

# Windows Store UWP env strip 学習 (2026-08-19)

## Rule

**Claude Desktop (Windows Store 版) 経由の MCP server は env dict に依存しない launcher pattern で書く**。 具体的には (a) 直接 file 実行 (`python launcher.py`) + (b) launcher 内で sys.path / DB path を script 自身の filesystem location から bootstrap + (c) config は `env: {}` (空 or 最小)。

**Why**: Claude Desktop v1.32885.1 は `C:/Program Files/WindowsApps/Claude_1.32885.1.0_x64__pzs8sxrjxfjjc/` の Windows Store UWP app sandbox で動く。 UWP sandbox は spawned child process への env var propagation を制限する。 `claude_desktop_config.json` の `env` dict に書いた `PYTHONPATH` / カスタム env は 子 Python process に届かず、 `python -m module_name` は `ModuleNotFoundError` で exit 1 → Desktop 側は 「not connected」 と表示。 log file すら生成されないため diagnosis 困難。

**How to apply**:

- (a) MCP server は package install (`pip install -e`) するか、 launcher script で sys.path bootstrap。 `-m module.path + PYTHONPATH env` pattern は避ける
- (b) launcher pattern (rei-memory-mcp 実例):
  ```python
  #!/usr/bin/env python3
  import os, sys
  from pathlib import Path
  _HERE = Path(__file__).resolve().parent
  sys.path.insert(0, str(_HERE / "src"))
  os.environ.setdefault("MY_APP_DB", str(_HERE / "data" / "app.db"))
  from my_app.server import main
  if __name__ == "__main__":
      sys.exit(main())
  ```
- (c) config は benchtop-mcp pattern と統一:
  ```json
  "my-mcp": {
    "command": "C:\\Users\\user\\AppData\\Local\\Programs\\Python\\Python313\\python.exe",
    "args": ["-u", "C:\\Users\\user\\my-mcp\\run_server.py"],
    "env": {}
  }
  ```
- (d) Diagnostic 手順:
  1. clean-env spawn simulate: `subprocess.Popen([python, '-u', module.py], env={'PATH': ..., 'SYSTEMROOT': ...}, ...)` で PYTHONPATH 剥がして MCP initialize が届くか test
  2. `wmic process where "name='claude.exe'" get CommandLine` で Claude Desktop の実 install path 確認 (`WindowsApps/` は UWP、 `Program Files/` は 非 UWP)
  3. log file が生成されない = 起動前 failure = env 依存が疑わしい

**Verify with peer entries** (藤本さん指摘 「動いている隣のエントリと比べる」): benchtop-mcp / rei-aios-mcp entry を diff。 動いているものは `env: {}` + 直接 file path、 動いていないものは env 依存 or `-m module` pattern。

**Related learning**: mcp-lens A 柱起動時 (2026-08-15) の 「Windows Store dual path pitfall」 (Roaming + Package sandbox 両 config edit 必要) と 同じ UWP sandbox 原因群。

**Cross-reference**:
- [[project-rei-memory-mcp-phase1-arc-2026-08-19]] (本 rule の originating incident、 launcher fix commit `fca7d05`)
- mcp-lens A 柱起動 pause note (2026-08-15) — Windows Store dual path pitfall
- benchtop-mcp config (working reference)
- rei-verify + rei-automator-mcp launcher pattern (`sys.path.insert` bootstrap 慣行)
