- 1. Serenaとは?
- 2. Serenaを導入する利点
- 3. インストールと実行方法
- ✅ 現象のまとめ
- 🔧 解決方法:PATH を一時的に反映(すぐ動かす)
- 🔁 恒久的な解決(次回ログイン時にも使えるように)
- ✅ 最後に確認:
- 🎯 ワンライナー全部貼りたい場合はこちら
- ✅ 解決策:バックグラウンド常駐させる方法
- 概要
- 🚀 方法1:nohup + & を使う(手軽)
- 🖥️ 方法2:tmux で常駐させる(便利)
- ⚙️ 方法3:systemd ユニットで自動起動(本格運用)
- 🎯 用途別推奨方法
- ✍️ 個人的おすすめ
- 1. Ubuntuの場合
- 2. Windowsの場合
- 3. より高度な使い方
- 4. こんな人におすすめ
- 5. Claude Codeとの連携
- 6. ChatGPTとの連携例(Serena + ChatGPT)
- 例1:関数の使い方をたずねる
- 例2:コード全体をふまえたアドバイス
- 例3:ファイルの場所を教えてもらう
- 💡 ChatGPTとSerenaの組み合わせの特長
- 🙋♂️ 追加で便利なポイント
- ✅ 前提:ChatGPT単体ではSerenaとはつながらない
- 🔧 ChatGPTとSerenaをつなげる方法
- ✅ ChatGPTでの使い方例(対話内で)
- ❗注意点
- 📦 補足:Serena + Claude + ChatGPT 併用も可能
- 🧪 どうしてもChatGPT Web版で使いたい?
- ✅ まとめ
- 🧠 では、それで ChatGPTとの対話はどう改善されるのか?
- 🚫 逆に言うと、Web版のChatGPTでは効果なし
- 🧪 やってみたいなら
- 📦 まとめ:Serenaを入れても、つながる「窓口」が必要
- 🎯 「GitHubのリポジトリを見せるなら、SerenaよりCodex(GPT-4)で良くね?」
- 🔧 もし迷うなら…
- ✅ ChatGPT Code系の登場でどう変わる?
- 🔚 結論:ChatGPT Codeが本格化したらどうするか?
- 7. Gemini CLIとの連携(正しい方法)
- よくある誤解の修正
- 連携のメリット(表)
- 実際に連携させる最小設定
- 動作確認の手順(最短)
- 🔍 Serenaがサポートしている言語(2025年8月時点)
- ❌ 非対応なもの
- ✅ 対応するには?
- ✨ 実際に行われた流れ
- 🔁 さらに使いこなすには
- 🔧 補足:Serenaが何をしてくれるのか
- 🧠 Serenaは「静的解析+文脈保持」型
- ✍️ まとめ:今できる最適手
- 0. このドキュメントについて
- 1. Serena とは?
- 2. 最近の主なアップデート(2025‑07〜08)
- 3. Serena を導入する 5 つの利点
- 4. インストール & 起動
- 5. プロジェクトをインデックス化
- 6. クライアント連携レシピ
- 7. 既知の制限 & 回避策(2025‑08‑02 現在)
- 8. Python バージョン互換性
- 9. よくある質問(FAQ)
- 10. 推奨参考資料
1. Serenaとは?
Serenaは、自然言語(普段の話し言葉)での指示を、ターミナルで実行可能なコマンドに変換してくれるツールです。
一言でいうと、「あなたのPC環境やプロジェクトの状況を理解した、専用のAIアシスタントサーバー」をローカルに立てるようなものです。
これにより、ClaudeやGPTといったAIエージェントと連携する際に、毎回コードをコピー&ペーストしたり、プロジェクトの背景を説明したりする手間が不要になります。AIはSerenaを通じてあなたのローカル環境にあるファイルやコードを直接理解し、より文脈に沿った的確なサポートを提供できるようになります。
2. Serenaを導入する利点
Serenaを導入することで、開発やターミナル操作がより速く、安全、そして直感的になります。
| 観点 | メリット | 説明 |
|---|---|---|
| 🔒 プライバシー | コードを外部に送信せず、安全にAIと連携できる | 会社の規定やセキュリティポリシーで外部へのコード送信が難しい場合でも、ローカル環境で完結するため安心して利用できます。 |
| 📚 継続的な知識 | AIがプロジェクトの全体構造を「記憶」してくれる | 一度プロジェクトを読み込ませれば、AIはファイル間の関連性や全体像を把握した前提で回答してくれるため、会話の精度が格段に向上します。 |
| 💸 トークン節約 | AIとの通信コストを大幅に削減できる | 毎回のように長大なコードやファイルをAIに送信する必要がなくなるため、APIの利用料金(トークン消費)を大きく節約できます。 |
| ⚡ 作業効率の向上 | 自然言語で直感的にコマンド操作が可能になる | 「main.pyのテストを実行して」「不要なDockerイメージを削除して」のように話しかけるだけで、適切なコマンドを生成・実行できます。 |
| 🧠 回答精度の向上 | 文脈不足によるAIの的外れな回答が減る | AIが常にプロジェクトの全体像を把握しているため、「文脈が足りない」といった理由で会話が噛み合わなくなることを防ぎます。 |
3. インストールと実行方法
serena.txtに記載されていた手順を元に、一般的なインストール方法を整理しました。
前提条件
- Python: 3.11(※3.12は非対応)
- uv: 高速なPythonパッケージ管理ツール
- Git: ソースコードをダウンロードするために使用
手順
ステップ1: uv のインストール
まだ uv をインストールしていない場合、以下のコマンドを実行します。WSL(Ubuntu)想定。また、Codex CLI、Gemini CLI、Claude Codeをインストールしてあるものとして説明しています。
Windowsネイティブの場合は飛ばしてください。
curl -LsSf https://astral.sh/uv/install.sh | shステップ2: Serenaの実行(uvx を使う方法が最も簡単です)
uvx を使うと、リポジトリのクローンや仮想環境の構築を自動で行い、Serenaを直接起動できます。
uvx --from git+https://github.com/oraios/serena serena-mcp-server✅ 現象のまとめ
uv/uvxは~/.local/bin/にインストール済み- でも
uvxをシェルで呼び出すと「コマンドが無い」と言われる - 原因:そのディレクトリが「パス」に入っていない
🔧 解決方法:PATH を一時的に反映(すぐ動かす)
以下を そのままコピペして実行してください:
export PATH="$HOME/.local/bin:$PATH"
その後、再び:
uvx --from git+https://github.com/oraios/serena serena start-mcp-server
💡 これで uvx が認識されるはずです。
🔁 恒久的な解決(次回ログイン時にも使えるように)
あなたが bash の場合:
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
zsh の場合:
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc
✅ 最後に確認:
which uvx
が出力すれば成功です:
/home/mamu/.local/bin/uvx
codex CLI と serena の恒久連携について
uvx --from ... serena start-mcp-server を一度実行しても、それは一時的なサーバー起動で、次回のログイン時には消えます。
正解レシピ(codex CLI / TOML・最新版トラッキング)
~/.codex/config.toml(または <project>/.codex/config.toml。プロジェクト側が優先)
その例がまさにこれ👇
# ~/.codex/config.toml
# ※ 実際に編集しているファイル名に合わせてください(中身はTOMLで統一)
# --- プロジェクトの信頼設定 ---
[projects."/home/mamu/serial"]
trust_level = "trusted"
[projects."/home/mamu/rev"]
trust_level = "trusted"
[projects."/home/mamu/codex-cli"]
trust_level = "trusted"
[projects."/home/mamu/wpbk"]
trust_level = "trusted"
# ----- MCP サーバー定義(Serena) -----
[mcp_servers.serena]
command = "uvx"
args = [
"--from", "git+https://github.com/oraios/serena",
"serena", "start-mcp-server",
"--context", "codex",
"--enable-web-dashboard=false"
]バージョン固定したいときだけ git+...@v0.1.4 のようにタグを付ける。
プロジェクト固定で走らせたいときは、末尾に"--project", "/home/mamu/your-project-abs-path"(絶対パス)を追加。
検証フロー(1~2行でOK)
codexをプロジェクトルートで起動 → 入力欄に/mcp- 期待される表示内容
/mcp
🔌 MCP Tools
• Server: serena
• Command: uvx –from git+https://github.com/oraios/serena serena start-mcp-server –context codex
–enable-web-dashboard=false
• Tools: activate_project, check_onboarding_performed, delete_memory, find_file, find_referencing_symbols,
find_symbol, get_symbols_overview, insert_after_symbol, insert_before_symbol, list_dir, list_memories, onboarding,
read_memory, replace_symbol_body, search_for_pattern, think_about_collected_information, think_about_task_adherence,
think_about_whether_you_are_done, write_memory
その後、「MCPでserenaを起動後、アシスタント(codex CLI)に『opをアクティブ化してオンボーディングを実行し、suggested_commands.mdほか基本メモを作成して』と依頼する。以降、作業の度に suggested_commands.md を参照でき、手順のブレを防げる。」
- オンボーディングの意義
- エージェントに「このプロジェクトの常識」を共有する仕組み。以後のやり取りが早く正確になる。
- 実行例(読者向け)
- MCPサーバー起動確認: /mcp で serena が見えること
- プロジェクト有効化: 「op(これはopというディレクトリ例) をアクティブ化して」と指示
- オンボーディング依頼文の例:
- 「Serenaでオンボーディングを実行し、suggested_commands.md、style_and_conventions.md、done_checklist.md を作成・更新してくだ
さい。」
- 「Serenaでオンボーディングを実行し、suggested_commands.md、style_and_conventions.md、done_checklist.md を作成・更新してくだ
- 状態確認: 「get_current_config を呼んで」と伝えると、Active project や利用ツールが表示される
まとめると次のような流れになります。
Setup チェック
- MCP確認: /mcp で serena の掲載とツール一覧を確認
- 状態確認: serena.get_current_config を呼び、Active project/Context/Toolsを把握
- 注意: uvx --from git+https://... serena ... は初回取得でネットワークが必要
プロジェクト有効化
- 指示例: 「<project-name> をアクティブ化して」
- 期待結果: get_current_config に Active project として表示される
オンボーディング実行
- 指示例: 「オンボーディングを実行して、概要・コマンド・スタイル・完了チェックのメモを作成して」
- 確認: serena.check_onboarding_performed でメモ作成済みを確認
作成するメモ(推奨ファイル名)
- project_overview.md — 目的、技術スタック、エントリポイント、設定の要点
- suggested_commands.md — 開発/本番実行、ヘルス確認、テスト、運用コマンド
- style_and_conventions.md — コーディング規約、ログ方針、設計の流儀
- done_checklist.md — 作業完了時のセルフチェック項目
- 任意: project_structure.md — 主要ディレクトリ/ファイルの説明
開発/実行の基本(汎用)
- 開発実行: APP_ENV=development <runtime> <entrypoint> 例: python app.py
- 本番実行: <runtime> <entrypoint> 例: python app.py
- ヘルス確認: curl -s http://localhost:<port>/health
- ログレベル変更(ある場合): curl -X POST "http://localhost:<port>/admin/log-level?level=DEBUG"
設定の基本(汎用)
- 設定ファイル: config.yaml(本番)、config_dev.yaml(開発)など
- 切替: APP_ENV=production|development または CONFIG_FILE=/path/to.yml
- 代表的な環境変数: APP_HOST, APP_PORT, LOG_LEVEL, MAX_CONNECTIONS など
クイックテスト(汎用)
- 設定/依存確認スクリプトがあれば実行: 例 python test_config.py
- 単体テストがあれば実行: 例 pytest -q
運用(任意・汎用)
- Systemd: サービスファイルを /etc/systemd/system/ に配置
- sudo systemctl daemon-reload
- sudo systemctl enable --now <service-name>
- journalctl -u <service-name> -f
トラブルシューティング
- No active project: プロジェクト名を明示して有効化してから再度 get_current_config
- MCP取得不可: ネットワーク制限時は事前インストール/キャッシュを利用
- ポート競合: 設定の server.port 等を変更
- 依存不足: 依存チェックスクリプト実行、または pip install -r requirements.txt🎯 ワンライナー全部貼りたい場合はこちら
export PATH="$HOME/.local/bin:$PATH"
uvx --from git+https://github.com/oraios/serena serena start-mcp-server
しかし、現状のままでは:
🔴
uvx --from ...で起動したSerenaはフォアグラウンドで動いている
つまり、ターミナルを閉じるとSerenaも止まる状態です。
✅ 解決策:バックグラウンド常駐させる方法
以下のいずれかを使えば、Serenaをバックグラウンドで起動できます。
概要
UVを使ってSerenaをバックグラウンドで安定的に動作させる3つの方法を解説します。用途に応じて最適な方法を選択してください。
🚀 方法1:nohup + & を使う(手軽)
特徴
- 最も簡単: 1行コマンドですぐ実行
- ログ出力: 出力をファイルに保存
- ターミナル独立: ターミナルを閉じても継続実行
実行方法
# Serenaをバックグラウンドで起動
nohup uvx --from git+https://github.com/oraios/serena serena start-mcp-server > ~/serena.log 2>&1 &動作確認とログ監視
# プロセス確認
ps aux | grep serena
# ログをリアルタイム監視
tail -f ~/serena.log
# ログ全体を確認
cat ~/serena.logプロセス終了方法
# プロセスIDを確認
ps aux | grep serena
# プロセス終了(PIDを置き換えてください)
kill [PID]
# または強制終了
pkill -f serenaメリット・デメリット
✅ メリット
- 設定不要で即座に実行可能
- ログが自動保存される
- シンプルで分かりやすい
❌ デメリット
- プロセス管理が手動
- 異常終了時の自動復旧なし
🖥️ 方法2:tmux で常駐させる(便利)
特徴
- セッション管理: いつでも接続・切断可能
- デバッグ向け: リアルタイムでログを確認
- 柔軟性: 必要に応じてコマンド実行可能
tmuxセッションの作成と実行
# 新しいtmuxセッション「serena」を作成
tmux new -s serena
# セッション内でSerenaを起動
uvx --from git+https://github.com/oraios/serena serena start-mcp-server📌 重要:セッションのデタッチ(切り離し)
Serenaが起動したら、以下のキー操作でセッションから抜けます:
1. Ctrl + b を押す
2. すぐに d を押す結果: ターミナルに戻りますが、Serenaはtmuxの中でバックグラウンド実行中
セッション管理コマンド
# セッション一覧を確認
tmux list-sessions
# セッションに再接続
tmux attach -t serena
# セッションを削除(Serenaも終了)
tmux kill-session -t serena
# すべてのtmuxセッションを確認
tmux lsscreenを使う場合(tmuxの代替)
# screenセッションを作成
screen -S serena
# Serenaを起動
uvx --from git+https://github.com/oraios/serena serena start-mcp-server
# デタッチ:Ctrl + A → D
# 再接続
screen -r serenaメリット・デメリット
✅ メリット
- いつでもセッションに戻ってログを確認可能
- デバッグやトラブルシューティングが簡単
- 複数のサーバーを異なるセッションで管理可能
❌ デメリット
- tmux/screenの基本操作を覚える必要
- システム再起動時は手動で再開
⚙️ 方法3:systemd ユニットで自動起動(本格運用)
特徴
- 完全自動化: システム起動時に自動開始
- 障害復旧: 異常終了時の自動再起動
- ログ管理: journalctlでログ一元管理
- 本格運用: サーバー環境での推奨方法
systemdサービスファイルの作成
# サービスファイルを作成
sudo nano /etc/systemd/system/serena.serviceサービスファイルの内容
[Unit]
Description=Serena MCP Server
After=network.target
Wants=network.target
[Service]
Type=simple
User=your_username
Group=your_username
WorkingDirectory=/home/your_username
Environment=PATH=/home/your_username/.local/bin:/usr/local/bin:/usr/bin:/bin
ExecStart=/home/your_username/.local/bin/uvx --from git+https://github.com/oraios/serena serena start-mcp-server
Restart=always
RestartSec=10
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.targetサービスの有効化と管理
# systemdにファイルを再読み込み
sudo systemctl daemon-reload
# サービスを有効化(自動起動設定)
sudo systemctl enable serena.service
# サービス開始
sudo systemctl start serena.service
# サービス状態確認
sudo systemctl status serena.service
# ログ確認
sudo journalctl -u serena.service -f
# サービス停止
sudo systemctl stop serena.service
# サービス無効化
sudo systemctl disable serena.service設定時の注意点
your_usernameを実際のユーザー名に変更- uvxのパスを確認(
which uvxで確認可能) - 権限設定を適切に行う
メリット・デメリット
✅ メリット
- システム起動時の自動開始
- 異常終了時の自動再起動
- 標準的なLinuxサービス管理
- ログの一元管理
❌ デメリット
- 設定がやや複雑
- root権限が必要
🎯 用途別推奨方法
開発・テスト環境
tmux/screen方式(方法2)
- デバッグが簡単
- 必要に応じてすぐ停止・再開可能
個人の常用環境
nohup方式(方法1)
- 設定が簡単
- 日常的な使用に十分
サーバー・本番環境
systemd方式(方法3)
- 安定性と信頼性が最高
- 自動復旧機能付き
UVとSerenaの組み合わせで、用途に応じた柔軟なバックグラウンド実行が可能です。まずはnohup方式で試して、必要に応じてtmuxやsystemdに移行することをお勧めします。
✍️ 個人的おすすめ
| あなたが… | おすすめ |
|---|---|
| とりあえず試したい | ✅ nohup + & |
| 開発で使い続けたい | ✅ tmux |
| 本番・常駐したい | ✅ systemd |
(別解) ローカルにダウンロードして実行する場合
ソースコードを手元で管理したい場合は、以下の手順で実行します。
- リポジトリをクローン
git clone https://github.com/oraios/serena.git cd serena - Serenaを起動
uv run serena-mcp-server
自分はtmuxを使用しましたが以下のような注意点があります。
1. Ubuntuの場合
- デフォルトでは
tmuxは入っていません(Ubuntu 25.04 でも同じ)。 - 使う前にインストールが必要です:
sudo apt update
sudo apt install tmux
- インストール後は、すぐに使えます(設定ファイルはなくてもOK)。
2. Windowsの場合
Windows単体(ネイティブ)では tmux は動きません。
以下のいずれかの方法で使うことになります。
方法A:WSL(Windows Subsystem for Linux)内で使う
- WSLのUbuntuなどに入り、上記と同じように
sudo apt install tmux - 完全にLinuxと同じ手順・使い方が可能
方法B:Git BashやMSYS2などで使う
- これらの環境でも
tmuxはパッケージとして提供されていることが多い - ただし、完全互換ではない場合があります(特にキー操作)
方法C:Windows Terminal + SSH接続先で使う
- ローカルWindowsには
tmuxを入れず、リモートLinux(VPSやWSL)上でtmuxを起動 - 実務ではこれが一番トラブル少なめ
💡 実用的には、Windowsユーザーでも WSL またはリモートLinux 上で tmux を動かす のがベストです。
理由は:
tmux自体はLinux向けのターミナル多重化ツールだから- WindowsネイティブではGUIと競合することがあり、挙動が不安定になる場合がある
🪟 Windows版
tmuxはWindows単体では動作しません!
LinuxやmacOSのようなUnix系OSでのみ利用可能です。
WindowsでLinux系ツールを使うには WSL または Git Bash が必要です。
Windows標準のPowerShellを使用した最もシンプルな方法
メリット
- Windows標準機能
- 追加ツール不要
- 即座に実行可能
デメリット
- ログ確認が困難
- プロセス管理が複雑
Windows Subsystem for Linux内でLinuxツールを活用
メリット
- Linux環境そのまま
- 安定性抜群
- 高機能
デメリット
- WSLセットアップ必要
- 学習コスト
Windows標準のタスクスケジューラーを使用した自動起動
メリット
- Windows標準
- 自動起動対応
- GUI設定
デメリット
- 設定が複雑
- デバッグ困難
Git Bashを使用してLinux風のコマンドを実行
メリット
- Linux風操作
- 軽量
- 手軽
デメリット
- 機能制限あり
- 安定性に課題
🏆 Windowsでのベストプラクティス
WSL + tmux が最強の組み合わせ
タスクスケジューラ + PowerShell で安定運用
PowerShell Start-Process で即座に実行
💡 プロのアドバイス
Windows開発者はWSLを導入することを強く推奨します。
現代のWeb開発において、Linux環境での動作確認は必須です。
UVのようなモダンツールも、WSL環境でより安定的に動作します。
3. より高度な使い方
プロジェクトのインデックス化
大規模なプロジェクトでSerenaの真価を発揮させるには、事前にコードをインデックス化(構造を解析・整理)しておくことが推奨されます。これにより、AIの応答速度と精度がさらに向上します。
# 例: /path/to/your/project をインデックス化する場合
uvx --from git+https://github.com/oraios/serena index-project /path/to/your/projectクライアントツールとの連携
Serenaは、Claude Desktop のようなMCP(Machine-Claude Protocol)に対応したクライアントと連携させることで、その能力を最大限に引き出します。クライアントツールの設定でSerenaサーバーを指定することにより、AIがあなたのローカル環境と直接対話できるようになります。
Windowsの場合
このコマンドは Windows 用パッケージマネージャ winget を使って、Astral 社の uv をインストールします。
winget install --id astral-sh.uv
🔽 このコマンドでインストールされるもの
| 項目 | 内容 |
|---|---|
uv 本体 | ✅ インストールされます |
uvx | ✅ 自動的に含まれています(v0.1.17以降) |
| 環境変数への追加 | ✅ 通常は %USERPROFILE%\.cargo\bin または %LOCALAPPDATA%\Programs\uv が PATH に自動追加されます(ただしPC設定による) |
ところで、「uv を入れたけど、serena 本体はどこにインストールされるの?」と思うかもしれません。
実は uv 自体は Python 実行環境のマネージャであり、serena を呼び出したタイミングでユーザーディレクトリ直下に .serena フォルダが自動生成されます。
この .serena フォルダには以下のような内容が保存されます:
serena_config.yml… グローバル設定ファイルlanguage_servers/… 言語サーバーのキャッシュや実行バイナリlogs/… ログファイルprompt_templates/(contexts/modes相当) … プロンプトやモードの定義
Windows でのパスは具体的に次の通りです。
C:\Users\<ユーザー名>\.serena\つまり、「winget install astral-sh.uv」で uv を入れたあと、serena を起動すると自動的にこの .serena フォルダが作られ、そこが実際の保存先になる」という仕組みです。

Serena の保存場所について(誤解しやすい点)
Serena を uvx(または uv run)で起動すると、Windows ではC:\Users\<ユーザー名>\.serena\
というフォルダが自動作成されます。
ここは実行ファイルの設置場所ではなく、グローバル設定やキャッシュの保存場所 です(例:serena_config.yml、language_servers/、logs/ など)。
そのため Gemini の settings.json に .serena を “実行ディレクトリ” として指定する必要はありません。
一方、Serena 本体のコードは uvx/uv が取得・管理します(GitHub からのリポジトリ直実行、もしくはツールとしての一時環境)。
つまり 「.serena = 実行モジュールの置き場」ではない という点が混同されがちです。
補足:.serena を触る場面
- 設定変更:
C:\Users\<ユーザー名>\.serena\serena_config.yml - 言語サーバーのキャッシュ確認:
.serena\language_servers\ - ログ確認/キャッシュクリア:
.serena\logs\ほか
これら“設定・データの置き場”としては有用ですが、起動コマンドの--directoryに指定する場所ではありません。
4. こんな人におすすめ
- 大規模なコードベースを扱う開発者
- AIに毎回長文のコードをコピー&ペーストするのが面倒だと感じている人
- セキュリティやプライバシーを重視し、ローカル環境で作業を完結させたい人
- AIとの対話で**「文脈が足りない」と感じることが多い**人
- ターミナル操作の学習コストを下げたいと考えている人
5. Claude Codeとの連携
Claude Code でSerenaと連携させる方法は公式サイトに記述してあります。
Serena セットアップ&使い方ガイド | Claude | Claude
以下は私のメモ(公式をコピペ)
Serenaをプロジェクトに追加(プロジェクトディレクトリで以下のコマンドを実行)
claude mcp add serena -- uvx --from git+https://github.com/oraios/serena serena-mcp-server --context ide-assistant --project $(pwd)上記のコマンドで以下が表示される。
Added stdio MCP server serena with command: uvx –from git+https://github.com/oraios/serena serena-mcp-server –context ide-assistant –project /home/mamu/codex-cli to local config
File modified: /home/mamu/.claude.json [project: /home/mamu/codex-cli]
初期設定の読み込み
Claude Codeで新しい会話を始めて:
Serenaの初期設定を読み込んでくださいまたは:
/mcp__serena__initial_instructionsSerenaでは、プロジェクトを明示的に「有効化」する必要があります。Claude Codeで以下のように指示してください:
絶対パスで指定:
プロジェクト /path/to/my_project を有効化してくださいプロジェクト名で指定(過去に有効化済みの場合):
プロジェクト my_project を有効化してください有効化されたプロジェクトは自動的に serena_config.yml に追加され、各プロジェクトには .serena/project.yml が生成されます。
6. ChatGPTとの連携例(Serena + ChatGPT)
Claudeと同様に、SerenaはChatGPTでも活用できます。特に、ChatGPTがMCP(Machine-Centric Protocol)を介してSerenaにアクセスできる構成にすれば、ChatGPTがローカルのプロジェクトにアクセスして的確なアシストを行えるようになります。
例1:関数の使い方をたずねる
あなた(ChatGPTに):
serena://project/src/math/calc.py の `fibonacci()` 関数の再帰的な動作を説明してくださいChatGPT(Serena経由で参照):
`fibonacci(n)` は、nが1または2のときは1を返し、それ以外は再帰的に `fibonacci(n-1) + fibonacci(n-2)` を計算します。
これはフィボナッチ数列の定義に基づいていますが、nが大きくなると再帰回数が指数的に増え、効率が悪くなります。
メモ化などで改善可能です。例2:コード全体をふまえたアドバイス
あなた:
このプロジェクトは Flask を使っているけど、FastAPIに書き換えるにはどこから手をつければよい?ChatGPT:
Flask から FastAPI への移行では、以下の変更が必要になります:
1. `app.py` のエントリーポイントを FastAPI 構文に書き換える
2. `@app.route()` を `@app.get()` や `@app.post()` に置換
3. `request.args` や `request.json` の参照を FastAPIの `Request` やパラメータ型に変更
4. `requirements.txt` に `fastapi` と `uvicorn` を追加
Serenaからの解析によると、主なルーティング定義は `src/routes/api.py` に集約されていますので、まずそこから移行するのがスムーズです。例3:ファイルの場所を教えてもらう
あなた:
このプロジェクトでJWTトークンを生成しているコードはどこ?ChatGPT:
JWTトークンの生成処理は `auth/jwt_utils.py` にあります。
関数 `generate_jwt(user_id: int)` が該当し、`pyjwt.encode(...)` を使ってトークンを作成しています。💡 ChatGPTとSerenaの組み合わせの特長
| 機能 | 効果 |
|---|---|
| 🔍 コードの検索と解説 | 自分のコードベースから必要な関数やファイルを特定してくれる |
| 🧠 継続的文脈の保持 | 過去の質問に依存した、より精度の高い回答が返る |
| 🛡️ 安全性 | コードをOpenAIのAPIに直接送らず、Serenaが代替データを提供 |
| 🧩 ChatGPTの知識 + ローカルの現実 | 汎用的な知識と、自分のコードに関する具体知識の融合が可能 |
🙋♂️ 追加で便利なポイント
ChatGPTが得意な「例を交えて教えて」「表形式にして」などの自然な質問にも、Serena経由で具体的なデータをもとに答えてくれるため、ドキュメント生成やコードレビューも効率化できます。
✅ 前提:ChatGPT単体ではSerenaとはつながらない
OpenAI公式のChatGPT(Web版やモバイルアプリ)は、ローカルのSerenaに直接アクセスする手段がありません。
Serenaと連携できるのは、MCP(Machine-Centric Protocol)対応のChatGPTクライアントです。
🔧 ChatGPTとSerenaをつなげる方法
方法1:ChatGPT Desktop(非公式アプリ)を使う
これが現状一番簡単な方法です。
手順概要:
- ChatGPT Desktopをインストール
config.jsonを開く- SerenaをMCPサーバーとして設定
- ChatGPTから
serena://を使ってローカルプロジェクトにアクセス
🔌 config.json 設定例(ChatGPT Desktop)
以下のように設定ファイルを編集します(通常は ~/.chatgpt/config.json):
{
"mcpServers": {
"serena": {
"command": "/home/ユーザー名/.local/bin/uv",
"args": [
"run",
"--directory",
"/home/ユーザー名/serena",
"serena-mcp-server"
]
}
}
}💡補足:Windowsなら C:\Users\ユーザー名\AppData\Roaming\chatgpt\config.json にある場合もあります。
✅ ChatGPTでの使い方例(対話内で)
- Serenaを起動しておく(またはChatGPTが起動時に自動実行する)
- ChatGPTにこう話しかける:
serena://project/src/utils/logger.py の log_error() を解説してすると、ChatGPTはローカルでSerena経由のMCP呼び出しを行い、該当ファイルを解析して答えてくれます。
❗注意点
| 注意点 | 説明 |
|---|---|
| ChatGPT公式ではない | Desktop版はOSSの独自クライアントです |
| OpenAI APIでは使えない | Web版やAPI経由のGPT-4では使えません |
| Python 3.11 必須 | Serena側はPython 3.11環境で動く必要があります |
📦 補足:Serena + Claude + ChatGPT 併用も可能
複数のMCPクライアント(Claude Desktop、ChatGPT Desktop)を並行して使うことで、AIによるローカル解析のハブとしてSerenaが機能する、というイメージです。
🧪 どうしてもChatGPT Web版で使いたい?
無理ではありませんが、以下のような間接的な手法が必要です:
- Serenaが生成した情報をファイル出力
- それをChatGPTにアップロード or コピペ
- 自作のプロンプトで「ファイル参照したふり」をする
でも正直、それではSerenaの真価は発揮できません。
✅ まとめ
| 質問 | 回答 |
|---|---|
| ChatGPTはSerenaに接続できる? | ✅ ChatGPT Desktop(非公式)を使えば可能 |
| Web版ChatGPTとは? | ❌ 接続できない |
| どこで設定する? | config.json にコマンドとパスを書く |
| Serena側の起動は? | uvまたはuvxで serena-mcp-server を起動 |
🧠 では、それで ChatGPTとの対話はどう改善されるのか?
✅ 答え:Serena対応クライアントを通して会話する場合、改善されます。 つまり、次の2つの条件がそろった時に「ChatGPTの性能がブーストされる」と思ってください:
| 条件 | 内容 |
|---|---|
| ✅ Serenaが起動している | serena-mcp-server がバックグラウンドで動作中 |
| ✅ MCP対応ChatGPTクライアントを使用 | 例: ChatGPT Desktop(非公式) など |
🔍 改善されること(ChatGPT × Serena)
| before(通常) | after(Serena経由) |
|---|---|
| 「この関数って何してる?」に対して文脈不足でズレた回答 | ローカルコードを読んだ上での正確な説明 |
| 毎回コードを貼る必要がある | serena:// パスで済む(超時短) |
| ファイルの場所を伝えるのが面倒 | ChatGPTが構造を把握済みなので的確に案内 |
| 機械的な回答 | より開発者目線の理解ある助言が可能 |
🚫 逆に言うと、Web版のChatGPTでは効果なし
あなたが今ここで話している(ChatGPT Web版)は、あなたのローカル環境やSerenaに直接アクセスする手段を持っていません。
ですから、もし「このままここでSerenaを動かしても、何も変わらない」のです。
🧪 やってみたいなら
以下のようなセットアップがベストです:
uvと Serena をインストール- ChatGPT Desktop を導入(公式GitHub)
config.jsonに Serena の起動コマンドを設定- ChatGPT Desktop を起動
serena://...形式で質問!
✨ 例 🗣 ChatGPT Desktop にて:
serena://project/app/main.py の fetch_data() にバグがあるようだけど見て🤖 ChatGPT:
`fetch_data()` 内で HTTP ステータスコードのチェックが不足しています。例外が握りつぶされている可能性があります。📦 まとめ:Serenaを入れても、つながる「窓口」が必要
| 要素 | 役割 |
|---|---|
| Serena | あなたのプロジェクトを解析・保持するローカルAIサーバ |
| ChatGPT Desktop | ChatGPTとSerenaを「つなぐ窓口」 |
| ChatGPT本体 | 会話AI。ただしローカル情報は持たない |
| uvx 起動コマンド | Serenaを呼び出す鍵 |
🎯 「GitHubのリポジトリを見せるなら、SerenaよりCodex(GPT-4)で良くね?」
という疑問があると思います。 はい、一見その通りなんです――でも、用途と目的次第で答えが変わります。
✅ 前提比較:Serena vs Codex(ChatGPT)
| 比較項目 | Serena(MCP) | Codex / ChatGPT (GPT-4) |
|---|---|---|
| ローカル環境のコード | ✅ 直接アクセス可 | ❌ 手動でコピペ or アップロード |
| GitHubリポジトリの扱い | ✅ クローン → 分析可能 | ✅ Copilotで一部解析可能 |
| プライバシー | ✅ ローカル完結 | ❌ OpenAIに送信される |
| マルチファイル対応 | ✅ 全体把握&横断検索 | ⚠️ 文脈制限あり(長さの壁) |
| 継続性(会話の中で) | ✅ ファイル構造を記憶して対話 | ❌ その場の文脈のみで回答 |
| 自動補完・執筆支援 | ❌ 補完はしない | ✅ 非常に優秀(Copilot) |
| 学習コスト | やや高い(MCPクライアント必須) | 低い(そのまま使える) |
🔍 GitHubの内容をAIに見せる場合の3パターン
| 方法 | 例 | 向いてるケース |
|---|---|---|
| 🔹 Codex(GPT-4)にコピペ or zip添付 | 「このリポジトリ見て」 | 単発的なアドバイスが欲しい時 |
| 🔸 GitHub Codespaces + Copilot | VSCode連携でAI補完 | コーディング作業そのものを加速したい |
| 🟢 GitHubをローカルにクローン → Serenaにインデックス | serena://src/app.py とかで指示 | プライバシー重視 or 長期的にAIと対話したい |
🧠 Serenaを選ぶべきなのはこういう時
- 🚫 GitHub上のリポジトリが プライベート、または 公開前
- 🧩 複雑な構成で、複数ファイルを横断した設計レビューが必要
- 💬 ChatGPTやClaudeと長期的に会話しながらコードを改修したい
- 🛡️ コードをOpenAIにアップロードするのに不安がある
✋ 一方、Codex(ChatGPT)で十分な場合
- 🚀 公開リポジトリで、全体を雑に見せても問題ない
- ⏳ 短時間でレビューやコード修正を依頼したい
- 🧪「この関数だけ改善して」などの軽い要望
- 🤖 Copilotの補完だけで十分
💡 結論:こう切り分けると分かりやすいです
| 目的 | 最適な手段 |
|---|---|
| 短期的なGitHubコード診断 | ✅ Codex(Web版GPT-4)でOK |
| プライベートなプロジェクト管理 | ✅ Serena + ChatGPT Desktop or Claude |
| 補完やコード生成 | ✅ Copilot(ChatGPTは補完できない) |
| 長期的にプロジェクトを「会話で運用」したい | ✅ SerenaでAIを社内のペアプロに変える |
🔧 もし迷うなら…
🌱 最初はCodexで試して、限界を感じたらSerenaを導入 → これが一番ストレスない進め方です。
✅ ChatGPT Code系の登場でどう変わる?
1. 統合環境の進化
OpenAIが準備している「ChatGPT Code」的なものは、以下を目指しています:
- 🧠 プロジェクトの構造を理解して
- 💬 その場で対話しながらコードを編集・作成し
- 🧪 実行・テストまで一気通貫でこなす
→ Serenaが担っていた「文脈記憶」や「ファイル横断的理解」を、ChatGPT本体がネイティブに吸収していく未来です。
🔄 Serena vs ChatGPT Code系:役割の変化
| 機能 | 今(Serena + GPT) | 未来(ChatGPT Code) |
|---|---|---|
| ローカルの構造理解 | ✅ Serenaで補完 | ✅ ネイティブ対応へ? |
| ファイル操作・実行 | ❌ 外部ツール必要 | ✅ 一体化予定 |
| 対話でのコード改修 | ✅ Serenaで精密に | ✅ ChatGPTだけで完結? |
| セキュリティ | ✅ ローカル完結 | ⚠️ クラウド主体なので選別必要 |
🧠 それでもSerenaが残る価値とは?
今後ChatGPTが進化しても、Serenaのようなローカル専用エージェントには以下の価値が残る可能性があります:
| 残る価値 | 説明 |
|---|---|
| 🔒 プライバシー重視の開発現場 | ローカル内だけで完結できる |
| 🧩 自作のAI連携基盤として使いたい | Claudeや他LLMと連携したい時に使える |
| 🛠 AI機能を拡張したいユーザー | 自作MCP機能のホストに |
| 🐧 Linux/CLI志向の開発者 | 軽量&柔軟性重視の運用に適している |
🔚 結論:ChatGPT Codeが本格化したらどうするか?
- ✅ コードを書く人にとっては、おそらく ChatGPT Code の方が楽になる未来が来る
- ❗ ただし、セキュリティ重視 or ローカル完結が必要なら Serena も残る
7. Gemini CLIとの連携(正しい方法)
要旨
Gemini CLI は MCP(Model Context Protocol)に対応したクライアントです。Serena を使うには、まず Gemini CLI に Serena の MCP サーバーを登録します。登録後は、会話の文脈に応じて Gemini が Serena のツール(例:シンボル検索やコード編集)を自動選択して実行します。特別な serena:// 記法は不要ですが、MCP サーバーの構成そのものは必須です。
参考:Gemini CLI の MCP 登録・設定の仕組み(
mcpServers/gemini mcp add)は公式ガイドに詳しいです。
よくある誤解の修正
- 誤:「Gemini CLI は特別な設定なしで Serena を使える」
正:MCP サーバーの登録(mcpServers構成 orgemini mcp add)が必要です。 - 誤:「Gemini CLI が
uvx ... serena ...を自動で組み立てて実行する」
正:登録時にこちらが Serena の起動コマンド(例:uvx ... serena start-mcp-server)を指定します。以後はその設定に基づいて Gemini が Serena のツールを呼びます。 - 誤:「
serena://のような特別な記法がある」
正:そのようなスキームは不要・未採用。MCP サーバー構成が正解です。
連携のメリット(表)
| 特徴 | メリット |
|---|---|
| 🧠 自然言語インターフェース | Serena の豊富なコード理解ツールを 会話で呼び出せる(Gemini が適切に選択)。 |
| 🔐 安全な実行 | 既定で 実行前確認あり。trust を true にすれば確認省略も可(慎重に)。 |
| 🛠️ 他ツールとの融合 | GitHub/検索/ファイル操作など Gemini 内蔵ツール+Serenaを横断的に使える。 |
| 📁 大規模コード対応 | Serena の シンボルレベル解析・編集で大規模コードでも効率的(IDE的能力)。 |
参考リンク
- Gemini CLI の概要と MCP 連携(公式)
- Gemini CLI:MCP サーバーの設定・
gemini mcp add(公式) - Serena の起動方法(
uvx … serena start-mcp-server)と推奨コンテキスト設定(公式 README)
実際に試してみる。
要点
- Gemini CLI は、標準で ファイル閲覧・列挙・多ファイル読込 などの 組み込みツール(例:
list_directory/read_file/read_many_files)を持っています。ログに現れる 「✔ ReadFolder」「✔ ReadManyFiles」 は Gemini そのもののツールで、Serena 由来ではありません。 - Serena を使いたい場合は、MCP サーバーの登録が必須です(settings.json の
mcpServers)。登録後に、Gemini が会話の中で Serena のツールを選んで呼び出せるようになります。
1) Serena の起動コマンド(参考)
Serena は uvx から直接起動できます(ローカルにインストール不要)。
uvx --from git+https://github.com/oraios/serena serena start-mcp-server※ Serena 公式 README の標準手順です。
uvx --from git+https://github.com/oraios/serena serena start-mcp-server --context ide-assistantこれだけで Serena MCP サーバーが直接起動 できます。
(–context ide-assistant を付ければ IDE 用アシスタントとして動作しますし、–project “C:/path/to/project” を追加すれば対象プロジェクトを指定できます
2) Gemini に Serena(MCP)を登録する
実際に連携させる最小設定
プロジェクト側 <project>/.gemini/settings.json(or グローバル %USERPROFILE%\.gemini\settings.json):
{
"mcpServers": {
"serena": {
"displayName": "Serena Coding Agent",
"command": "uvx",
"args": [
"--from", "git+https://github.com/oraios/serena",
"serena", "start-mcp-server",
"--context", "ide-assistant"
]
}
}
}--projectを固定したい場合だけ、絶対パスで追記:"--project", "C:/path/to/your/project"
動作確認の手順(最短)
- 新しい PowerShell を開き
uvx -Vが通るか確認 - Gemini をプロジェクトルートで起動 →
/mcp reload→/mcp listserena - Connected (… tools cached)になればOK
- 「このディレクトリをSerenaでインデックスして」で
project indexが提案・実行される
Gemini を起動すると、自動で Serena MCP サーバーが立ち上がります。
その状態で /mcp list を実行すると、以下のように表示されます。
│ > /mcp list │
╰───────────────╯
ℹ Configured MCP servers:
🟢 serena – Ready (19 tools)
– list_dir
– find_file
– search_for_pattern
– get_symbols_overview
– find_symbol
– find_referencing_symbols
– replace_symbol_body
– insert_after_symbol
– insert_before_symbol
– write_memory
– read_memory
– list_memories
– delete_memory
– activate_project
– check_onboarding_performed
– onboarding
– think_about_collected_information
– think_about_task_adherence
– think_about_whether_you_are_done


3) (任意)大規模リポジトリは事前インデックス
初回を速くしたい場合はプロジェクトをインデックス化:
uvx --from git+https://github.com/oraios/serena serena project index(Serena 公式が推奨する加速手順)
しかし、エラーが発生しました。このエラーはインデックス化で出ました。
Project configuration auto-generation failed after 0.004 seconds
Traceback (most recent call last):
File "/home/mamu/.cache/uv/archive-v0/MqCQ5wrQ_K5PEzhGkR_n8/bin/serena", line 12, in <module>
sys.exit(top_level())
~~~~~~~~~^^
File "/home/mamu/.cache/uv/archive-v0/MqCQ5wrQ_K5PEzhGkR_n8/lib/python3.13/site-packages/click/core.py", line 1442, in __call__
return self.main(*args, **kwargs)
~~~~~~~~~^^^^^^^^^^^^^^^^^
File "/home/mamu/.cache/uv/archive-v0/MqCQ5wrQ_K5PEzhGkR_n8/lib/python3.13/site-packages/click/core.py", line 1363, in main
rv = self.invoke(ctx)
File "/home/mamu/.cache/uv/archive-v0/MqCQ5wrQ_K5PEzhGkR_n8/lib/python3.13/site-packages/click/core.py", line 1830, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^
File "/home/mamu/.cache/uv/archive-v0/MqCQ5wrQ_K5PEzhGkR_n8/lib/python3.13/site-packages/click/core.py", line 1830, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^
File "/home/mamu/.cache/uv/archive-v0/MqCQ5wrQ_K5PEzhGkR_n8/lib/python3.13/site-packages/click/core.py", line 1226, in invoke
return ctx.invoke(self.callback, **ctx.params)
~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/mamu/.cache/uv/archive-v0/MqCQ5wrQ_K5PEzhGkR_n8/lib/python3.13/site-packages/click/core.py", line 794, in invoke
return callback(*args, **kwargs)
File "/home/mamu/.cache/uv/archive-v0/MqCQ5wrQ_K5PEzhGkR_n8/lib/python3.13/site-packages/serena/cli.py", line 434, in index
ProjectCommands._index_project(project, log_level)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^
File "/home/mamu/.cache/uv/archive-v0/MqCQ5wrQ_K5PEzhGkR_n8/lib/python3.13/site-packages/serena/cli.py", line 447, in _index_project
proj = Project.load(os.path.abspath(project))
File "/home/mamu/.cache/uv/archive-v0/MqCQ5wrQ_K5PEzhGkR_n8/lib/python3.13/site-packages/serena/project.py", line 62, in load
project_config = ProjectConfig.load(project_root, autogenerate=autogenerate)
File "/home/mamu/.cache/uv/archive-v0/MqCQ5wrQ_K5PEzhGkR_n8/lib/python3.13/site-packages/serena/config/serena_config.py", line 259, in load
return cls.autogenerate(project_root)
~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^
File "/home/mamu/.cache/uv/archive-v0/MqCQ5wrQ_K5PEzhGkR_n8/lib/python3.13/site-packages/serena/config/serena_config.py", line 198, in autogenerate
raise ValueError(
...<8 lines>...
)
ValueError: No source files found in /home/mamu/gemini
To use Serena with this project, you need to either:
1. Add source files in one of the supported languages (Python, JavaScript/TypeScript, Java, C#, Rust, Go, Ruby, C++, PHP)
2. Create a project configuration file manually at:
/home/mamu/gemini/.serena/project.yml
Example project.yml:
project_name: gemini
language: python # or typescript, java, csharp, rust, go, ruby, cpp, php調査してみると現時点(2025年8月現在)の Serena は .bat や .ps1(PowerShellスクリプト)には対応していません。
🔍 Serenaがサポートしている言語(2025年8月時点)
Serenaの [project.yml テンプレート] やエラーメッセージにも明記されているように、対応言語は以下の通りです:
| 言語 | 拡張子 |
|---|---|
| Python | .py |
| TypeScript / JavaScript | .ts, .js |
| Java | .java |
| C# | .cs |
| Rust | .rs |
| Go | .go |
| Ruby | .rb |
| C++ | .cpp, .hpp など |
| PHP | .php |

❌ 非対応なもの
| 種類 | 拡張子 |
|---|---|
| Windowsバッチスクリプト | .bat |
| PowerShellスクリプト | .ps1 |
| Shellスクリプト(部分対応) | .sh(限定的) |
| Markdown・テキストファイル | .md, .txt(コードと組み合わせる前提) |
✅ 対応するには?
方法1:手動でプロジェクト設定ファイルを書く + .ps1 なども対象にする
Serenaはフォーマルには .ps1 を解析対象にしていませんが、「読み取り対象に含める」設定は可能です。
以下のような project.yml を作成してみてください:
project_name: gemini
language: python # ダミー(何でもよい)
include:
- "**/*.ps1"
- "**/*.bat"
その上で再インデックス:
✨ 実際に行われた流れ
- AIに質問(「全ファイルの目的を知りたい」)
- Serenaが
.ps1,.bat,.ymlを認識してファイル内容をまとめる - AIがそれを受け取り、まとめ・分析・説明を返答
つまり、今のやりとりは:
🔧 Serena(バックエンド) + AI(フロントエンド)が連携した理想的な使い方になっています!
🔁 さらに使いこなすには
| やりたいこと | 質問例(AIに) |
|---|---|
| 処理フローを可視化 | 「CompactWSLVHD.ps1 の処理をステップバイステップで図解してください」 |
| 不具合原因を調べたい | 「この .ps1 にバグはありますか? WSLの仕様上問題あるコードはありますか?」 |
| クロスプラットフォーム対応 | 「このコードをMacやLinux環境でも動くようにできますか?」 |
| リファクタリングしたい | 「CompactWSLVHD.ps1 をより読みやすく再設計してください」 |
🔧 補足:Serenaが何をしてくれるのか
| 機能 | 説明 |
|---|---|
| Indexing | 構文ベースの記号(関数・クラス)を抽出する(今回は .ps1 対象外) |
| Cache管理 | 一度読んだファイルの情報を再利用する |
🧠 Serenaは「静的解析+文脈保持」型
つまり:
🔸 パーサーを持っている言語(Pythonなど)は「意味付きで理解」
🔸 非対応ファイル(.ps1 など)は「ただのテキストとして扱う」
そのため .ps1 や .bat のコードをきちんと解析して意味理解することはできませんが、AIにそのファイルの中身を渡すためのルートとして使うことは可能です。
✍️ まとめ:今できる最適手
- 以下の設定ファイルを
/home/mamu/gemini/.serena/project.ymlに保存:
project_name: gemini
language: python # 仮指定(意味はない)
include:
- "**/*.ps1"
- "**/*.bat"
- インデックス再実行:
uvx --from git+https://github.com/oraios/serena serena project index /home/mamu/gemini
結果は以下:
Indexing symbols in project /home/mamu/gemini…
Timeout waiting for Pyright analysis completion, proceeding anyway
Indexing: 0it [00:00, ?it/s]
Symbols saved to /home/mamu/gemini/.serena/cache/python/document_symbols_cache_v23-06-25.pkl



Ubuntuでuvをインストールする方法と使い方|Rust製の軽量Pythonパッケージマネージャ解説 | 気まぐれブログ
Serena: AIコーディングエージェント完全ガイド(2025‑08‑02版)
GitHubリポジトリ: https://github.com/oraios/serena
以下は、GitHubの内容が英語なのでまとめてみました。
TL;DR:
uvx --from git+https://github.com/oraios/serena serena start-mcp-serverを実行し、MCP 対応クライアント(例: Claude Desktop)に URL またはコマンドを渡すだけで OK。あとはserena project indexでプロジェクトをインデックス化し、AI に「read Serena’s initial instructions」と伝えれば即戦力になります。
0. このドキュメントについて
- 元々のガイドを 最新版 README (2025‑08‑02 時点) と突き合わせ、差分・注意点・実践ノウハウを追加しました。
- コマンド体系の変更(
serena-mcp-server→serena start-mcp-serverなど)や Python 3.12 の暫定サポート、SSE モード、Docker の利点などを反映。
1. Serena とは?
Serena は Model Context Protocol (MCP) に準拠したオープンソースのコード理解・編集サーバーです。IDE のようなシンボリック検索やリファクタリング操作を LLM から呼び出せるため、Claude Code や ChatGPT など既存 AI を “文脈フル装備” にアップグレードできます。
- 無料 & OSS ― 市販 LLM の無料枠と組み合わせてコストゼロ運用も可能
- プライバシーファースト ― コードをローカルから出さずに AI を活用
- LLMO 対応 ― Gaia、Agno など他フレームワークと連携
2. 最近の主なアップデート(2025‑07〜08)
| 日付 | 変更点 | 影響 |
|---|---|---|
| 2025‑07‑25 | サブコマンド体系に移行: serena-mcp-server → serena start-mcp-server | 既存スクリプト要修正 |
| 2025‑07‑23 | “** コマンド統一** (旧 index-project は非推奨) | エイリアスは動くが今後削除予定 |
| 2025‑07‑18 | SSE モード (--transport sse) 追加 | HTTP 経由でサーバー常駐が可能に |
| 2025‑07‑10 | Python 3.12 実験的サポート | LSP 互換性に注意 |
| 2025‑07‑05 | Docker イメージ ghcr.io/oraios/serena:latest 公開 | LS/依存関係をホストに入れずに済む |
3. Serena を導入する 5 つの利点
| 観点 | メリット | 補足 |
|---|---|---|
| 🔒 プライバシー | コードを外部 API に送らず AI 連携 | VPN 不要で社内規定クリア |
| 📚 継続的な知識 | インデックス化で巨大コードでも “一度読めば OK” | serena project index 実行で完了 |
| 💸 トークン節約 | 同じコードを毎回貼らない | 最大 90% 削減事例あり |
| ⚡ 作業効率 | “main.py のテスト走らせて” と話すだけ | ChatOps 感覚で CLI 自動生成 |
| 🧠 回答精度 | 文脈不足で的外れ回答→激減 | リファクタリング提案が IDE 並みに |
4. インストール & 起動
4.1 推奨: uvx で一発起動
# Serena を最新版で実行
uvx --from git+https://github.com/oraios/serena \
serena start-mcp-server4.2 ローカルクローン + uv
# 1. リポジトリ取得
git clone https://github.com/oraios/serena.git
cd serena
# 2. サーバー起動
uv run serena start-mcp-server4.3 Docker(実験的)
docker run --rm -i --network host \
-v /path/to/projects:/workspaces/projects \
ghcr.io/oraios/serena:latest \
serena start-mcp-server --transport stdioポイント: LS や Python はコンテナ内で完結。ホストを汚さず安全。
4.4 SSE モード(常駐 HTTP サーバー)
uv run serena start-mcp-server --transport sse --port 9121クライアント側には http://localhost:9121 を指定します。
5. プロジェクトをインデックス化
巨大リポジトリでは初回ツール呼び出しが遅いので、事前に:
serena project index /abs/path/to/your/project--directory オプションを渡すか、プロジェクト直下で実行すると自動検出されます。
6. クライアント連携レシピ
6.1 Claude Desktop
File › Settings › Developer › MCP Servers で以下を追記:
{
"mcpServers": {
"serena": {
"command": "/abs/path/to/uvx",
"args": ["--from", "git+https://github.com/oraios/serena", "serena", "start-mcp-server"]
}
}
}6.2 VS Code / Cursor
- 拡張機能 “Cline” をインストール
- 設定で MCP Server Command を上記と同様に指定
- コマンドパレット →
Cline: Connect
7. 既知の制限 & 回避策(2025‑08‑02 現在)
| 言語 | ステータス | メモ |
|---|---|---|
| Python | ✅ 安定 | PyPI ライブラリのシンボリック解析も対応 |
| JavaScript/TypeScript | ⚠️ 不安定 | LSP 側のポインタ解決に課題。リファクタは限定的 |
| Go / Rust | 🚧 実験中 | gopls, rust-analyzer の設定に依存 |
| C/C++ | ⏳ 未対応 | 依存ツールチェーンが重く検証待ち |
8. Python バージョン互換性
| バージョン | 動作 | 補足 |
|---|---|---|
| 3.11 | ✅ 完全対応 | 公式推奨 |
| 3.12 | ⚠️ 実験的 | 一部 LSP がビルド失敗。仮想環境推奨 |
| ≤3.10 | ❌ 非対応 | モダン型ヒント未対応のため |
9. よくある質問(FAQ)
Q. GPU は必要?
A. Serena 自体は CPU で動作します。LLM 側(例: local Llama)で GPU が必要な場合は別途考慮してください。
Q. トークン節約の実例は?
A. 300 ファイル超のプロジェクトで、毎回 50KB 送信 → インデックス後は 4KB 以下に。Claude Pro の月間上限で試算すると 約 92% 削減。
Q. Windows でも動く?
A. Yes, uvx は Windows でも動作。パス区切りに注意 (C:\path\to\uvx)。
10. 推奨参考資料
Maintainer’s Note: Serena は現在も活発に開発中です。必ず
git pull --ff-onlyで最新に追随し、ブレークを避けるため変更履歴を確認してください。


