🪷

Claude Code の Serena プラグインが desktop-app コンテキストで動いている問題とワークアラウンド

に公開

はじめに

Serena は、Language Server Protocol (LSP) を活用してコードベースを意味的に理解する MCP サーバーである。シンボル検索、参照追跡、リネームといった IDE レベルの操作を AI エージェントに提供する。

Claude Code では /plugins からワンクリックでインストールできるが、プラグイン版の起動引数に不備があり、本来の性能を発揮できていない。

この記事では、何が問題なのか、どう影響するのか、そしてワークアラウンドを解説する。

問題の概要

Serena には「コンテキスト」という概念があり、動作環境に応じてツールセットやプロンプトを最適化する仕組みがある。Claude Code 専用の claude-code コンテキストが用意されているにもかかわらず、プラグインの .mcp.json にはコンテキスト指定がないため、デフォルトの desktop-app で起動してしまう。

// プラグインの現在の設定(不足あり)
{
  "serena": {
    "command": "uvx",
    "args": ["--from", "git+https://github.com/oraios/serena", "serena", "start-mcp-server"]
  }
}

同様に、--project-from-cwd(カレントディレクトリからプロジェクトを自動検出するフラグ)も指定されていない。

desktop-app と claude-code の違い

Serena の Web ダッシュボード(http://localhost:24282/dashboard/)で Active context を確認すると、プラグイン版では desktop-app と表示される。

両コンテキストの違いは以下の通り。

ツールの重複

desktop-app コンテキストでは Serena の全ツールが有効になる。Claude Code 本体と機能が重複するツールも含まれるため、無駄にトークンを消費し、どちらのツールを使うかが曖昧になる。

Serena ツール(desktop-app で有効) Claude Code の同等ツール
read_file Read
create_text_file Write
execute_shell_command Bash
replace_content Edit
prepare_for_new_conversation (不要)

claude-code コンテキストではこれら 5 つが除外され、Serena はシンボル操作に集中、ファイル操作は Claude Code が担当と役割が明確になる。

プロジェクトモード

desktop-app claude-code
single_project false true
activate_project ツール 有効 無効

claude-code では単一プロジェクトを前提とし、不要なツール(activate_project など)を排除してツールセットを最小化する。

プロンプトの違い

desktop-app のプロンプトは「チャット UI からコードベースにアクセスする汎用的なデスクトップアプリ」を想定した内容になっている。

一方 claude-code では「ファイル操作や基本的な編集は内部ツールで処理済み。Serena のツールが使える場合はそちらを優先し、ソースファイル全体の読み込みは厳に避けよ」と、より効率的なトークン消費を促す指示になっている。

自動プロジェクト検出

--project-from-cwd がないと、毎回手動で activate_project を呼ぶか、Serena のオンボーディングフローを経由する必要がある。claude-code コンテキスト+ --project-from-cwd なら、カレントディレクトリの .serena/project.yml や .git から自動的にプロジェクトを検出・アクティベートしてくれる。

なぜ修正されていないのか

この問題は既に認知されている。

  1. oraios/serena #910 — プラグインに --context claude-code --project-from-cwd が足りないという Issue
  2. anthropics/claude-plugins-official PR #162 — Serena のメンテナ自身が修正 PR を提出
  3. PR は Anthropic 側の「外部 PR を受け付けない」ポリシーにより自動クローズ された
  4. anthropics/claude-plugins-official #340 — 修正を求める Issue が別ユーザーから出されている(2026年2月時点で open、コメントなし)
  5. oraios/serena discussions #918 — 「プラグインで claude-code コンテキストを指定する方法がない」という Q&A

Serena 側は修正を出したが、プラグインリポジトリのポリシーで反映されない状態が続いている。

ワークアラウンド

プラグイン版を無効化し、ユーザーレベルの MCP 設定で正しい引数付きの Serena を直接起動する。

「プラグインを無効にして大丈夫?」と思うかもしれないが、Serena プラグインの中身は .mcp.json(MCP サーバーの起動設定)と plugin.json(メタデータ)だけである。skills、commands、hooks などは含まれていない。つまり MCP サーバーをインストールするためだけのプラグインなので、同じ MCP サーバーを正しい引数で直接起動すれば、失われるものは何もない。

1. プラグインを無効化

~/.claude/settings.json の enabledPlugins で Serena プラグインを無効にする。

{
  "enabledPlugins": {
    "serena@claude-plugins-official": false
  }
}

/plugins の UI からでも無効化できる。

2. ユーザースコープで MCP サーバーを登録

claude mcp add に --scope user を付けて登録する。これにより ~/.claude.json のトップレベル mcpServers に書き込まれ、全プロジェクトで有効になる。

claude mcp add --scope user serena -- \
  uvx --from "git+https://github.com/oraios/serena" \
  serena start-mcp-server --context claude-code --project-from-cwd

登録後の ~/.claude.json には以下が追加される。

{
  "mcpServers": {
    "serena": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/oraios/serena",
        "serena",
        "start-mcp-server",
        "--context",
        "claude-code",
        "--project-from-cwd"
      ]
    }
  }
}

なお、MCP 設定のスコープは 3 種類ある。

スコープ 保存先 用途
--scope user ~/.claude.json トップレベル mcpServers 全プロジェクト共通(今回はこれ)
--scope local(デフォルト) ~/.claude.json の projects.*.mcpServers 特定プロジェクトのみ
--scope project プロジェクトルートの .mcp.json チーム共有

3. プロジェクトの設定

各プロジェクトのルートに .serena/project.yml が必要。まだない場合は以下のコマンドで生成できる。

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

4. 確認

Claude Code を再起動し、Serena のダッシュボード(http://localhost:24282/dashboard/)で Active context が claude-code になっていることを確認する。

おまけ:ダッシュボードの自動起動を止める

Serena は起動時に Web ダッシュボードをブラウザで自動的に開く。不要な場合は ~/.serena/serena_config.yml で以下を設定する。

web_dashboard_open_on_launch: false

この設定はダッシュボード自体からも変更できる。http://localhost:24282/dashboard/ にアクセスし、Configuration から web_dashboard_open_on_launch を false にすればよい。

ダッシュボード自体は有効なまま、手動でアクセスすれば引き続き利用できる。

まとめ

  • Claude Code の Serena プラグインは --context claude-code と --project-from-cwd が欠落している
  • その結果、ツールが重複し、トークン効率が悪く、毎回手動でプロジェクトをアクティベートする必要がある
  • Serena 開発者からの修正 PR は Anthropic 側のポリシーで却下されている
  • ワークアラウンドとして、プラグインを無効化し claude mcp add --scope user で直接設定するのが現時点での最善策

Discussion