Serena MCPの導入・更新管理とトラブルシューティング完全ガイド

一度Serenaの設定を済ませば、Claude Code、Codex CLI、Gemini CLIがSerenaを使っていると思っていませんか?つまりこれに気が付いていないユーザーは一度セットアップしてしまえば、Serenaが使えると思ってCodexやClaudeを使用している可能性があります。 そして、十分時間が経ったときに「あれ、AIがSerena使ってなくね?」 と思うのです。今回はそれを回避する案を記事にしてみました。

一度セットアップした=ずっと使えているはず」と思い込み、いつの間にかSerenaが外れてるケースはかなり起きがちです。特に Codex/Claude 側のアップデートや設定変更・プロジェクト切替のタイミングで発生しやすいです。

目次

起きがちな“あるある”症状

  • 以前できていたコード横断検索・参照解決が急に弱い/遅い
  • 「Serenaの初期説明」(initial instructions)に沿った振る舞いをしない
  • SerenaのWebダッシュボード(既定 24282)にアクセスが無い/プロセスが無い
  • Codex/Claude が内蔵の簡易ツールだけで完結している(外部MCPを呼ばない)

Serena MCP(=serena start-mcp-server)は、起動のたびに自動アップデートは行いません。これは意図的な設計です。理由と運用上のベストプラクティスを整理します👇

🧠 なぜ自動アップデートしないのか

1. 「開発環境の安定性」を最優先

SerenaはClaude CodeやCodex CLIなどIDEやエージェントが直接依存するバックエンドです。
自動で最新コミットに切り替わると、構文やAPI仕様の微変更で
プロンプト連携が壊れるリスクがあるため、「固定版を明示的に使う」方式を採っています。

🔄 更新のベストプラクティス

✅ 方法1:uvxを使って明示的に更新

uvxは「最新版を明示的に再取得」できるので、これが最も安全&推奨です。

# 最新コミットから実行(更新も兼ねる)
uvx --from git+https://github.com/oraios/serena serena start-mcp-server

uvxは毎回キャッシュを確認し、差分があれば再インストールする仕組みです。
つまり、「実行時の更新確認」はしますが、自動アップデート(強制pull)は行いません。

✅ 方法2:ローカルCloneの場合

もしリポを直接cloneしているなら:

cd ~/serena
git pull
uv run serena start-mcp-server

GitHubの main ブランチを追従している場合はこれで更新完了です。

✅ 方法3:固定バージョン運用

安定稼働が目的ならバージョンを固定します:

uvx --from git+https://github.com/oraios/serena@v0.1.14 serena start-mcp-server

@v0.1.14 のようにタグ指定しておけば、更新による破壊的変更を防げます。

🧩 運用Tips

運用形態更新方法備考
ローカル実験uvx --from git+https://github.com/...最新を自動取得(軽い検証向け)
常時稼働サーバ固定タグ+手動git pullバージョン安定性優先
CI/自動構築uvx--lockedPipfile.lock的に再現可能な環境を保持

🛠 補足:アップデート確認コマンド(簡易)

uvx --from git+https://github.com/oraios/serena serena version

これで現在のSerenaバージョンが出力されます。
GitHubリポジトリの releases を見て手動で比較するのが公式流です。

apt upgrade ではuv も Serena も面倒見てくれないので、気づいたら古いままになりがちなんですよね(どちらも “スクリプト or uv 経由” で入れている=APT管理外)。

そこで、「通知だけ出す」チェック系を2つ+統合1つ置いておくのがラクです👇
(更新は自分のタイミングでやる方針のまま)

1) uv の最新版チェック(通知のみ): uv-check.sh

#!/usr/bin/env bash
# uv の最新版を GitHub から取得して、ローカルと比較(通知のみ)

set -e
REPO="astral-sh/uv"
TMP="/tmp/uv_latest.json"

have() { command -v "$1" >/dev/null 2>&1; }

if ! have uv; then
  echo "⚠️  uv が見つかりません。まずは公式インストーラで導入してください:"
  echo '    curl -LsSf https://astral.sh/uv/install.sh | sh'
  exit 0
fi

if ! have curl || ! have jq; then
  echo "❌ curl/jq が必要です: sudo apt update && sudo apt install -y curl jq"
  exit 1
fi

LOCAL="$(uv --version 2>/dev/null | awk '{print $2}')"
curl -sL "https://api.github.com/repos/${REPO}/releases/latest" -o "$TMP"
REMOTE="$(jq -r '.tag_name' "$TMP" | sed 's/^v//')"

echo "💻 uv local : ${LOCAL:-unknown}"
echo "🌐 uv latest: ${REMOTE:-unknown}"

if [[ -z "$REMOTE" || "$REMOTE" == "null" ]]; then
  echo "❌ 最新版照会に失敗(GitHub API or jq を確認)"
  exit 1
fi

if [[ "$LOCAL" != "$REMOTE" ]]; then
  echo "🟡 アップデートあり!"
  echo "   推奨: uv self update"
  echo "   もし失敗する場合は再インストール:"
  echo "   curl -LsSf https://astral.sh/uv/install.sh | sh"
else
  echo "✅ uv は最新です。"
fi

設置

sudo apt install -y jq
mkdir -p ~/bin
nano ~/bin/uv-check.sh   # ←上を貼付
chmod +x ~/bin/uv-check.sh
echo 'export PATH="$HOME/bin:$PATH"' >> ~/.bashrc && source ~/.bashrc

2) Serena の最新版チェック(通知のみ): serena-auto.sh

(前に出したものをそのまま使えばOK。要点だけ再掲)

  • GitHubの最新タグと uvx … serena version を比較
  • 差があれば「更新コマンド例だけ」を表示(自動更新はしない)
  • jq 必須

更新したいときだけ:
uvx --from git+https://github.com/oraios/serena@vX.Y.Z serena start-mcp-server

3) まとめて点検してくれる統合版: check-ai-stack.sh

#!/usr/bin/env bash
# uv / Serena / Codex / Claude をまとめて “通知だけ” 点検

set -e
echo "==== uv ===="
~/bin/uv-check.sh || true
echo

echo "==== Serena ===="
~/bin/serena-auto.sh || true
echo

echo "==== Codex CLI ===="
if command -v codex >/dev/null 2>&1; then
  codex --version || true
  npm outdated -g @openai/codex || true
else
  echo "⚠️ codex が未導入(スキップ)"
fi
echo

echo "==== Claude Code ===="
if command -v claude >/dev/null 2>&1; then
  claude --version || true
  npm outdated -g @anthropic-ai/claude-code || true
else
  echo "⚠️ claude が未導入(スキップ)"
fi

設置

nano ~/bin/check-ai-stack.sh  # ←上を貼付
chmod +x ~/bin/check-ai-stack.sh

使い方(手動)

check-ai-stack.sh

週1だけメール/ログに通知(任意)

crontab -e

例:

# 毎週月曜 09:00(JST)に実行してメール通知
0 9 * * 1 ~/bin/check-ai-stack.sh | mail -s "[AI stack] weekly check" you@example.com

※ メール不要なら >> ~/.local/share/ai-stack/check.log に追記でも。

SSHログイン時に“たまに”思い出させる(軽量ワンライナー)

毎回は鬱陶しいので、7日おきに一度だけ .bashrc で出す例:

# ~/.bashrc の末尾に追記(通知は7日に1回)
if command -v date >/dev/null; then
  STAMP="$HOME/.cache/ai-check.stamp"
  mkdir -p "$(dirname "$STAMP")"
  now=$(date +%s)
  if [ -f "$STAMP" ]; then last=$(cat "$STAMP"); else last=0; fi
  # 7日 = 604800秒
  if [ $((now - last)) -ge 604800 ]; then
    echo "[AI stack] 久しぶりにチェックします → check-ai-stack.sh"
    ~/bin/check-ai-stack.sh | sed 's/^/    /'
    echo "$now" > "$STAMP"
  fi
fi

なぜ apt に出てこないの?

  • uv:公式インストーラ(curl)で導入 or 自己更新(uv self update)。APTパッケージと別系統。
  • Serenauvx でGitHubリポから実行するアプリ層。APT管理対象ではない。
  • Codex/Claude:npm のグローバルnpm -g)で管理。これもAPT外。

Codex / Claude が Serena を使って“重い作業を肩代わりする”開発環境」に必要なのは、実質このセットです。

必須(これだけで回る“最小3点+α”)

  1. uv(Serena実行の土台)
    • 役割:Pythonランタイム+パッケージ管理+uvxでSerenaをその場実行
    • 入れ方:curl -LsSf https://astral.sh/uv/install.sh | sh
  2. Serena MCP(MCPサーバ)
    • 役割:巨大Repoの解析・検索・編集を肩代わり
    • 起動:uvx --from git+https://github.com/oraios/serena serena start-mcp-server
  3. MCPクライアント
    • どちらか(両方でもOK)
      • Codex CLInpm i -g @openai/codex
      • Claude Codenpm i -g @anthropic-ai/claude-code など)

✅ 結論:“uv+Serena+(Codex or Claude)”が中核
私の意図どおり、Serenaが重い横断解析などを担当し、Codex/ClaudeからMCP経由で呼び出す流れです。なのでuvは絡みます(Serenaの実行に必須)。

実用上“ほぼ必須”(Serenaの体感が段違いに)

ripgrep / fd-find / universal-ctags(高速検索&シンボル索引)

sudo apt update && sudo apt install -y ripgrep fd-find universal-ctags
echo 'alias fd=fdfind' >> ~/.bashrc && source ~/.bashrc
  • Git(当然):sudo apt install -y git
  • 言語サーバ(LSP):プロジェクト言語に合わせて
    • Python: pipx/uvx pyright など
    • TS/JS: npm i -g typescript-language-server typescript
    • Go: sudo apt install -y golang → go install golang.org/x/tools/gopls@latest
    • Rust: rustup → rust-analyzer
    • Java: jdtls など
      ※ LSPが無いと“定義ジャンプ/参照解決”の精度と速度が落ちます。

あると便利(規模・用途次第)

  • jq/curl(チェック系スクリプト用):sudo apt install -y jq curl
  • build-essential pkg-config(ネイティブ拡張が要る依存のビルド用)
  • Docker(安全に隔離したいとき/CI対策)
  • watchman(超大規模のファイル監視が多い場合)

最短セットアップの“完成コマンド”

# 0) ベース
sudo apt update && sudo apt install -y git ripgrep fd-find universal-ctags jq curl
echo 'alias fd=fdfind' >> ~/.bashrc && source ~/.bashrc

# 1) uv
curl -LsSf https://astral.sh/uv/install.sh | sh

# 2) Serena(都度実行・固定インストール不要)
uvx --from git+https://github.com/oraios/serena serena start-mcp-server \
  --context ide-assistant --project "$PWD" &

# 3) クライアント(どちらか/両方)
npm i -g @openai/codex
npm i -g @anthropic-ai/claude-code

運用のコツ(外れてた問題を防ぐ)

  • 固定起動順:Serena→(Codex/Claude)。Serena未起動ならIDEを起動しないラッパー(前回のdev-ide.sh)が効きます。
  • バージョン固定:上げるときだけ明示的に上げる(Serenaは @vX.Y.Z、npmはバージョン指定)。
  • 週1の“通知だけ”点検uv-check.shserena-auto.shcheck-ai-stack.sh をcron化。

Windows でのインストール手順(基本)

1) uv のインストール

Windows版の場合、公式ドキュメントによると以下の方法があります。 Astral Docs+2Astral Docs+2

PowerShell を管理者モードで開き:

powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

または、Windows パッケージマネージャー(例:WinGet)からもインストール可能:

winget install --id=astral-sh.uv -e

インストール後は、uv --version などで確認。PATHが通っていないと “uv: command not found” 的なエラーになるので、環境変数の確認が必要。

2) Serena MCP の起動設定

Windows でも、基本的には同じ “uv を使って Serena を start-mcp-server” で起動 → クライアント(Claude Desktop/Claude Codeなど)に MCP サーバとして登録、という流れになります。例えば:

  • uvx --from git+https://github.com/oraios/serena serena start-mcp-server --context ide-assistant --project <プロジェクトパス> など。Windowsのパスでは \ を \\ にエスケープする、または / を使うなど注意。
  • クライアントの設定ファイル(例えば Claude Desktop の %APPDATA%\Claude\claude_desktop_config.json)に MCP サーバとして Serena のコマンドを登録。Windows特有のパス・エスケープに注意。

⚠️ Windows特有の「ハマりどころ」&注意点

  • PATHの問題:uv や uvx コマンドが通っていない、ファイルが見つからない、というエラーが Windows で比較的多く報告されています。
  • 権限・実行ポリシー:PowerShellでスクリプトを実行する際、ExecutionPolicy の設定が制約になることがあります。インストーラが提示する通り ByPass を指定する必要あり。
  • プロジェクトパス・ディレクトリ区切り:Windows では \ を使いますが、設定ファイルでは \\ や / を使った方が無難。例えば JSON設定中の "your\\project\\folder\\path" のように。
  • 言語サーバ/Node.js/npmの依存:Windows上で TypeScript Language Server 等を使う際に npm コマンドが見つからず失敗するというissueもあります。
    → Node.js + npm がちゃんとインストール/PATHにあるか確認が必要。
  • 更新・チェックスクリプトの動作:Ubuntu向けに出した uv-check.shserena-auto.sh は Bash環境を想定しています。Windowsでは PowerShell スクリプト版に書き換える必要があります。

🔧 Windows用チェック/通知スクリプト案

Ubuntuで出したスクリプトをそのまま使うのは難しいため、Windows用に PowerShell スクリプトを用意するのがベストです。例えば:

  • uv-check.ps1
  • serena-auto.ps1

簡易例(uv-check.ps1):

# uv-check.ps1
$remoteJson = Invoke-WebRequest -Uri "https://api.github.com/repos/astral-sh/uv/releases/latest" | ConvertFrom-Json
$remote = $remoteJson.tag_name.TrimStart("v")
$local = (& uv --version).Split()[1]

Write-Host "uv local : $local"
Write-Host "uv latest: $remote"

if ($local -ne $remote) {
  Write-Host "⚠️ アップデートあり! uv self update してください"
} else {
  Write-Host "✅ uv は最新です。"
}

同様に serena-auto.ps1 を用意して、「GitHubのリリースタグ vs ローカルバージョン」を比較して通知するように。さらに、これらをタスクスケジューラで “週1” 実行するようにしておくと、Windowsでも「忘れないチェック」が可能になります。

uv self updateでエラーが発生

uv self update error: Self-update is only available for uv binaries installed via the standalone installation scripts. The current executable is at C:\Users\minok\AppData\Local\Microsoft\WinGet\Packages\astral-sh.uv_Microsoft.Winget.Source_8wekyb3d8bbwe\uv.exe but the standalone installer was used to install uv to C:\Users\minok\.local\bin. Are multiple copies of uv installed?

結論:uv が二重インストール(WinGet版+スタンドアロン版)になっていて、uv self update が「自分で入れた実体と違う場所を見てる」せいで失敗しています。

何が起きてる?

  • uv self update はスタンドアロン版で入れた実体だけ更新できます。
  • いま実行中の uv.exe は WinGet 配下
    C:\Users\minok\AppData\Local\Microsoft\WinGet\Packages\astral-sh.uv_...\uv.exe
  • でも、スタンドアロン版も同時に存在:
    C:\Users\minok\.local\bin\uv.exeuvx.exe もここ)

この「2つある」状態で PATH の優先順位によって、uv self update が WinGet 版を触ろうとして怒られています。

解決の方針(どちらか1つに統一)

✅ 方針A(おすすめ): スタンドアロン版に統一

理由:uv self update が使える/uvx も確実に入る。

  1. WinGet版をアンインストール
winget list astral-sh.uv
winget uninstall --id astral-sh.uv -e
  1. PATHの優先順位を確認%USERPROFILE%\.local\bin が先頭付近に来るように)
where uv
$Env:Path -split ';'

C:\Users\minok\.local\bin が WinGet配下より前にあるのが理想。
必要なら一時的に:

$bin = "$Env:USERPROFILE\.local\bin"
$Env:Path = "$bin;" + ($Env:Path -replace [regex]::Escape("$bin;"), '')

(永続は「システム環境変数」GUIで編集がおすすめ。setx は既存PATHを縮めることがあるので注意)

  1. 確認
where uv
uv --version
uvx --version
uv self update       # ← これで通るようになる

方針B:WinGet版に統一(自動更新は WinGet に任せる)

  1. スタンドアロン版を削除
  • C:\Users\minok\.local\bin\uv.exeuvx.exeuvw.exe を削除
  • PATH から C:\Users\minok\.local\bin を外す(他で使ってないなら)
  1. 更新は WinGet で
winget upgrade --id astral-sh.uv -e

注:uv self update は使えません。uvx が WinGet でも入るかはパッケージ版次第なので、where uvx で確認してください。無ければ WinGet の更新を待つか、方針Aへ。

速攻で状況確認するワンライナー

Write-Host "== which =="
where uv; where uvx
Write-Host "== actual =="
(Get-Command uv).Source
(Get-Command uvx -ErrorAction SilentlyContinue).Source

→ どっちの実体が呼ばれているか一目瞭然。

実運用のおすすめ

A案(スタンドアロン)+PATH優先にして、
uv self update / uvx … serena … を使えるようにするのが一番スムーズ。

Serena 関連スクリプトは、誤爆防止のため先頭で実体を固定してもOK:

$UVX = (Get-Command uvx).Source  # 例: C:\Users\minok\.local\bin\uvx.exe
& $UVX --from git+https://github.com/oraios/serena serena start-mcp-server ...

今回のケースの最短復旧手順(A案)

# 1) WinGet版を外す
winget uninstall --id astral-sh.uv -e

# 2) スタンドアロンを再インストール(済なら不要)
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

# 3) PATH 優先で .local\bin を先に
#  → GUIで環境変数編集 or 一時的に上書き(上記スニペット)

# 4) 動作確認
where uv; where uvx
uv --version
uv self update   # ← これがOKなら統一完了

これで、Windows でも uv self update が正常に動き、uvx 経由で Serena を安定運用できます。

しかし上記の方法でもうまくいかない場合があります。

PS C:\Users\minok> winget list astral-sh.uv 入力条件に一致するインストール済みのパッケージが見つかりませんでした。 PS C:\Users\minok> winget uninstall --id astral-sh.uv -e 入力条件に一致するインストール済みのパッケージが見つかりませんでした。

確かにこれは「WinGet 版が“存在する風”なのに、winget list で見えない」=孤児化したポータブル版の典型です。つまり WinGet が作った「リンク(shim)」やパッケージ残骸だけが残っていて、uv self update はそっちを拾ってしまう状態。

下の手順でWinGet残骸を手動掃除 → スタンドアロン版に統一しましょう。

手早い復旧(PowerShell)

  1. まず、どの uv が呼ばれてるか確認
where uv
Get-Command uv | Select-Object Source
where uvx
Get-Command uvx | Select-Object Source

出力が ...AppData\Local\Microsoft\WinGet\Packages\astral-sh.uv_...\uv.exe なら、WinGet 側が優先されています。 where uvで何も出ない場合はコマンドプロンプトで表示できます。

PowerShellでwhere uvコマンドを実行した結果 - 複数のuv.exeのパスが表示されている
  1. WinGet の「ポータブル用リンク」を削除
    (ここが残ってると優先されがち)
# WinGetのリンク置き場(ショートカット実体)
$links = "$env:LOCALAPPDATA\Microsoft\WinGet\Links"
Remove-Item "$links\uv.exe"  -ErrorAction SilentlyContinue
Remove-Item "$links\uvx.exe" -ErrorAction SilentlyContinue
Remove-Item "$links\uvw.exe" -ErrorAction SilentlyContinue

Links が空(or そもそも無い)なら、WinGet 側は 「Links 経由の shim ではなく、Packages 直下の実体」 を PATH に載せている可能性が高いです。
その場合の対処法は後で記述しておきます。

  1. WinGet のパッケージ残骸を削除(ある場合)
$pkg = Get-ChildItem "$env:LOCALAPPDATA\Microsoft\WinGet\Packages" -Directory `
       | Where-Object { $_.Name -like 'astral-sh.uv_*' }
if ($pkg) { Remove-Item $pkg.FullName -Recurse -Force }
  1. すでに入っているスタンドアロン版を優先させる
    C:\Users\minok\.local\bin が PATH の先頭付近に来るように)
$bin = "$env:USERPROFILE\.local\bin"
# 一時的に先頭に(セッション限定)
$env:Path = "$bin;" + ($env:Path -replace [regex]::Escape("$bin;"), '')

# 永続は「システムの環境変数」GUIで、ユーザーPATHの先頭へ移動させるのが安全です
  1. 動作確認
where uv
Get-Command uv | Select-Object Source
uv --version
uv self update   # ← これで通るようになればOK

うまくいかない場合の最終手段

.local\bin 側を再インストール(上書きOK)

powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

それでも where uv が WinGet 側を指すなら、Pathの順序がまだ逆転しています。
Links の uv.exe が復活していないかも再確認してください。

ポイント

  • WinGet のポータブルアプリは「Links」フォルダの shim が実体です。winget list に出ないことがあり、削除は手動で Links と Packages の両方を掃除するのが確実。
  • 以降は スタンドアロン版のみにしておくと、uv self update が使えて Serena 運用が安定します。
  • Serena 側はこれでそのまま利用OK:
uvx --from git+https://github.com/oraios/serena serena start-mcp-server

いま拾われているのは:

C:\Users\minok\AppData\Local\Microsoft\WinGet\Packages\astral-sh.uv_...\uv.exe

なので、どの uv.exe が優先されているかPATH の順序を一気に洗い出して、WinGet 側を外し、.local\bin を優先にします。

1) いま“どの uv が使われているか”を全表示

# どの順で見つかっているか(複数出ます)
where uv
where uvx

# 実際に PowerShell が解決している実体(-All で全部)
Get-Command uv  -All | Select-Object Source
Get-Command uvx -All | Select-Object Source
Get-Command uvコマンドの出力 - .local\bin\uv.exeが優先されている状態

.local\bin\uv.exe よりも WinGet\Packages…\uv.exe が上に出ていれば、そちらが優先されています。

2) PATH に WinGet の Packages パスが混ざっていないか確認

$Env:Path -split ';' | ForEach-Object {
  if ($_ -match 'WinGet\\Packages' -or $_ -match 'WindowsApps') { "→ $_" } else { $_ }
}
PATH環境変数の確認結果 - WinGetとスタンドアロン版のパスが表示されている
  • …\Microsoft\WinGet\Packages\astral-sh.uv_… が出る ⇒ これを外す対象
  • …\Microsoft\WindowsApps は Microsoft Store/エイリアス用。通常そのままでOK(uv は関係ないことが多い)

3) “WinGet 実体”の掃除(Linksが無い場合は Packages を直接消す)

# uv の WinGet 残骸フォルダがあれば削除
Get-ChildItem "$env:LOCALAPPDATA\Microsoft\WinGet\Packages" -Directory `
| Where-Object { $_.Name -like 'astral-sh.uv_*' } `
| ForEach-Object {
    Write-Host "Removing $($_.FullName)"
    Remove-Item $_.FullName -Recurse -Force
}

# 念のため Links ももう一度(存在しないなら無視)
Remove-Item "$env:LOCALAPPDATA\Microsoft\WinGet\Links\uv*.exe" -ErrorAction SilentlyContinue
WinGetパッケージの削除実行画面

: 上が失敗する場合は、エクスプローラで該当フォルダを開いて手動削除でもOKです(ロック中でなければ削除可)。

4) .local\bin を優先にしてテスト(セッション限定)

$bin = "$env:USERPROFILE\.local\bin"
$env:Path = "$bin;" + ($env:Path -replace [regex]::Escape("$bin;"), '')

# 確認
where uv
Get-Command uv | Select-Object Source
uv --version
uv self update   # ← ここが成功すれば、スタンドアロン優先に切替完了

PS C:\Users\minok> Get-Command uv | Select-Object Source

Source
——
C:\Users\minok\.local\bin\uv.exe

PS C:\Users\minok> uv –version
uv 0.9.5 (d5f39331a 2025-10-21)
PS C:\Users\minok> uv self update
info: Checking for updates…
success: You’re on the latest version of uv (v0.9.5)

uv self updateコマンドの成功画面 - 最新バージョンであることが表示されている

5) 永続化(ユーザー PATH の並び替え)

GUI(推奨): 設定 → システム → バージョン情報 → 「関連設定」→ システムの詳細設定 → 環境変数 → 「ユーザー環境変数」PATH を編集 → %USERPROFILE%\.local\bin を最上段に移動 → OKで保存 → 新しい PowerShell を開き直して確認。

Windows環境変数設定画面 - .local\binをPATHの最上位に配置

どうしてもコマンドでやる場合(リスク高めなので GUI 推奨):

$bin  = "$env:USERPROFILE\.local\bin"
$curr = [Environment]::GetEnvironmentVariable('Path', 'User')
if ($curr -notmatch [regex]::Escape($bin)) {
  [Environment]::SetEnvironmentVariable('Path', "$bin;$curr", 'User')
} else {
  # 先頭へ移動
  $parts = ($curr -split ';') | Where-Object { $_ -ne $bin -and $_ -ne '' }
  $new = "$bin;" + ($parts -join ';')
  [Environment]::SetEnvironmentVariable('Path', $new, 'User')
}

6) 仕上げチェック

where uv; where uvx
Get-Command uv,uvx | Select-Object Name,Source
uv --version
uv self update

これで WinGet 側の実体が消え、.local\bin の uv/uvx が確実に優先されます。
以後は:

  • 更新
    uv self update
  • Serena 起動
    uvx --from git+https://github.com/oraios/serena serena start-mcp-server --context ide-assistant --project "C:/path/to/your/project"
タイトルとURLをコピーしました