WindowsのClaude CodeでSerenaが使いたいんじゃ!!
はじめに
僕は Mac ユーザーですが、
Windows で開発する機会が最近あり、
ちょうど Claude Code が使えるようになったとのことなので
これでガンガン開発したろ!と思って導入。
Mac では Serena を使ってガシガシ活用してました。
が、Windows で Serena を使うってときにちょっと一悶着あったので
備忘録としてメモしておきます。
あとからまた調べ直すの大変なんで…
環境
- Claude Code
- Windows 11
- VScode
バージョンは 2025-08-14 時点で最新あたり。
結論
bat と ps1 を作って bat を mcp で add する
# run-serena.ps1
$proj = (Get-Location).Path
uvx --from git+https://github.com/oraios/serena `
serena start-mcp-server `
--context ide-assistant `
--project "$proj"
@echo off
REM 常にこのフォルダをカレントにして実行
cd /d "%~dp0"
powershell -NoProfile -ExecutionPolicy Bypass -File ".\run-serena.ps1"
を作ったら
claude mcp remove serena # 旧定義があれば
claude mcp add serena .\run-serena.cmd
インストールできない問題
この記事をたどりましたがつまづきました。
まず、Windows だとこのインストールコマンドが聞きません。
uvx で使われている --from
が Powershell の引数とごっちゃになって邪魔をするみたいです。
claude mcp add serena -- uvx --from git+https://github.com/oraios/serena serena-mcp-server --context ide-assistant --project (Get-Location)
claude mcp add ... は、-- 以降の引数を正しくパススルーできないことがあります。
特に -NoProfile や --from などのオプションが CLI 側で「不明なオプション」として解釈されてしまう不具合があります。
Ps1 ファイル経由で実行
ので、考える方法としては「どうやって --from
問題を回避するか?」
ですが、ChatGPT に聞いて解決しました。
Powershell が --from
でぶっ壊れるのなら、
じゃあ Powershell をバッチにすればいいんじゃね?
という感じの考えです。
というわけでこれを作りました。
# run-serena.ps1
$proj = (Get-Location).Path
uvx --from git+https://github.com/oraios/serena `
serena start-mcp-server `
--context ide-assistant `
--project "$proj"
理論上はこれを claude mcp add
すれば OK なわけですが、
現実はそう甘くありませんでした。
- 実行ポリシー(ExecutionPolicy)の回避
.ps1 を直接実行すると、PowerShell の ExecutionPolicy 設定や「インターネットから取得されたファイル」(MOTW) が原因でブロックされる場合があります。
じゃあどう回避すりゃいいのかというと
.ps1 を直接実行すると、PowerShell の ExecutionPolicy 設定や「インターネットから取得されたファイル」(MOTW) が原因でブロックされる場合があります。
.cmd 側から powershell -ExecutionPolicy Bypass を明示すれば、これを上書きして安全に実行できます。
とのことだったので、cmd ファイルも作ります。
# run-serena.cmd
@echo off
REM 常にこのフォルダをカレントにして実行
cd /d "%~dp0"
powershell -NoProfile -ExecutionPolicy Bypass -File ".\run-serena.ps1"
この cmd の方を claude mcp add
すると、
Serena のウィンドウが立ち上がり、使用可能になります。
GPT によるまとめ
.ps1
を .cmd
でラップするのか
なぜ 1. Claude CLI の引数パース問題を回避
claude mcp add ...
は、--
以降の引数を正しくパススルーできないことがあります。
特に -NoProfile
や --from
などのオプションが CLI 側で「不明なオプション」として解釈されてしまう不具合があります。
.cmd
にまとめてしまえば、Claude CLI は「単なる実行ファイル」として認識するため、引数の誤解釈が発生しません。
2. 実行ポリシー(ExecutionPolicy)の回避
.ps1
を直接実行すると、PowerShell の ExecutionPolicy 設定や「インターネットから取得されたファイル」(MOTW) が原因でブロックされる場合があります。
.cmd
側から powershell -ExecutionPolicy Bypass
を明示すれば、これを上書きして安全に実行できます。
3. ネットワーク/同期ドライブでの権限問題対策
M:\...
のようなネットワークドライブや同期フォルダ上の .ps1
は、セキュリティ制限で直接起動できないことがあります。
.cmd
は通常の実行可能ファイルとして扱われるため、この制限を受けにくくなります。
4. 起動パスやカレントディレクトリの固定
Claude CLI から .ps1
を直接呼ぶ場合、カレントディレクトリが変わることがあり、Get-Location
が意図したパスを返さないことがあります。
.cmd
で cd /d "%~dp0"
とすれば、必ずスクリプトのある場所を起点に実行できます。
まとめると
- 引数誤解釈を防ぐ
- PowerShell 実行ポリシーを回避
- ネットワーク/同期ドライブでの制限を回避
- 実行ディレクトリを固定
という 4 つの効果があるので、記事では「Windows 環境での安定起動のためのラッパー手法」として紹介すると、背景が伝わりやすくなると思います。
Discussion