Serena × ChatGPT Gemini 連携:対応してない.ps1を読み解かせる裏ワザ公開!

目次

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)

  1. 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 を作成・更新してくだ
        さい。」
    • 状態確認: 「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 ls

screenを使う場合(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方式で試して、必要に応じてtmuxsystemdに移行することをお勧めします。

✍️ 個人的おすすめ

あなたが…おすすめ
とりあえず試したいnohup + &
開発で使い続けたいtmux
本番・常駐したいsystemd

(別解) ローカルにダウンロードして実行する場合

ソースコードを手元で管理したい場合は、以下の手順で実行します。

  1. リポジトリをクローンgit clone https://github.com/oraios/serena.git cd serena
  2. 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版 UVバックグラウンド起動ガイド

🪟 Windows版

UVコマンドをバックグラウンドで起動する完全ガイド
Windows重要注意事項

tmuxはWindows単体では動作しません!
LinuxやmacOSのようなUnix系OSでのみ利用可能です。
WindowsでLinux系ツールを使うには WSL または Git Bash が必要です。

🚀 PowerShell + Start-Process

Windows標準のPowerShellを使用した最もシンプルな方法

Start-Process powershell -ArgumentList “-Command”, “uvx –from git+https://github.com/oraios/serena serena start-mcp-server” -WindowStyle Hidden

メリット

  • Windows標準機能
  • 追加ツール不要
  • 即座に実行可能

デメリット

  • ログ確認が困難
  • プロセス管理が複雑
🛠️ WSL + tmux (推奨)

Windows Subsystem for Linux内でLinuxツールを活用

# WSLに入る wsl# tmuxセッション作成 tmux new -s serena# UVコマンド実行 uvx –from git+https://github.com/oraios/serena serena start-mcp-server# デタッチ: Ctrl + b → d

メリット

  • Linux環境そのまま
  • 安定性抜群
  • 高機能

デメリット

  • WSLセットアップ必要
  • 学習コスト
⚙️ タスクスケジューラ

Windows標準のタスクスケジューラーを使用した自動起動

1. Win + R → taskschd.msc 2. 「基本タスクの作成」 3. トリガー: システム起動時 4. 操作: プログラムの開始 5. プログラム: uvx 6. 引数: –from git+https://… serena start-mcp-server

メリット

  • Windows標準
  • 自動起動対応
  • GUI設定

デメリット

  • 設定が複雑
  • デバッグ困難
🌐 Git Bash + nohup風

Git Bashを使用してLinux風のコマンドを実行

# Git Bashで実行 uvx –from git+https://github.com/oraios/serena serena start-mcp-server &# プロセス確認 ps aux | grep serena

メリット

  • 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 をインストールします。

Installation | 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.ymllanguage_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_instructions

Serenaでは、プロジェクトを明示的に「有効化」する必要があります。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(非公式アプリ)を使う

GitHub - lencx/ChatGPT: 🔮 ChatGPT Desktop Application (Mac, Windows and Linux)
🔮 ChatGPT Desktop Application (Mac, Windows and Linux) - lencx/ChatGPT

これが現状一番簡単な方法です。

手順概要:

  1. ChatGPT Desktopをインストール
  2. config.json を開く
  3. SerenaをMCPサーバーとして設定
  4. 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での使い方例(対話内で)

  1. Serenaを起動しておく(またはChatGPTが起動時に自動実行する)
  2. 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版で使いたい?

無理ではありませんが、以下のような間接的な手法が必要です:

  1. Serenaが生成した情報をファイル出力
  2. それをChatGPTにアップロード or コピペ
  3. 自作のプロンプトで「ファイル参照したふり」をする

でも正直、それでは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を動かしても、何も変わらない」のです。

🧪 やってみたいなら

以下のようなセットアップがベストです:

  1. uv と Serena をインストール
  2. ChatGPT Desktop を導入(公式GitHub)
  3. config.json に Serena の起動コマンドを設定
  4. ChatGPT Desktop を起動
  5. serena://... 形式で質問!

✨ 例 🗣 ChatGPT Desktop にて:

serena://project/app/main.py の fetch_data() にバグがあるようだけど見て

🤖 ChatGPT:

`fetch_data()` 内で HTTP ステータスコードのチェックが不足しています。例外が握りつぶされている可能性があります。

📦 まとめ:Serenaを入れても、つながる「窓口」が必要

要素役割
Serenaあなたのプロジェクトを解析・保持するローカルAIサーバ
ChatGPT DesktopChatGPTと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 + CopilotVSCode連携で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 構成 or gemini 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"

動作確認の手順(最短)

  1. 新しい PowerShell を開き uvx -V が通るか確認
  2. Gemini をプロジェクトルートで起動 → /mcp reload/mcp list
    • serena - Connected (… tools cached) になればOK
  3. 「このディレクトリを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"

その上で再インデックス:

✨ 実際に行われた流れ

  1. AIに質問(「全ファイルの目的を知りたい」)
  2. Serenaが .ps1, .bat, .yml を認識してファイル内容をまとめる
  3. AIがそれを受け取り、まとめ・分析・説明を返答

つまり、今のやりとりは:

🔧 Serena(バックエンド) + AI(フロントエンド)が連携した理想的な使い方になっています!

🔁 さらに使いこなすには

やりたいこと質問例(AIに)
処理フローを可視化CompactWSLVHD.ps1 の処理をステップバイステップで図解してください」
不具合原因を調べたい「この .ps1 にバグはありますか? WSLの仕様上問題あるコードはありますか?」
クロスプラットフォーム対応「このコードをMacやLinux環境でも動くようにできますか?」
リファクタリングしたいCompactWSLVHD.ps1 をより読みやすく再設計してください」

🔧 補足:Serenaが何をしてくれるのか

機能説明
Indexing構文ベースの記号(関数・クラス)を抽出する(今回は .ps1 対象外)
Cache管理一度読んだファイルの情報を再利用する

🧠 Serenaは「静的解析+文脈保持」型

つまり:

🔸 パーサーを持っている言語(Pythonなど)は「意味付きで理解」
🔸 非対応ファイル(.ps1 など)は「ただのテキストとして扱う」

そのため .ps1.bat のコードをきちんと解析して意味理解することはできませんが、AIにそのファイルの中身を渡すためのルートとして使うことは可能です。

✍️ まとめ:今できる最適手

  1. 以下の設定ファイルを /home/mamu/gemini/.serena/project.yml に保存:
project_name: gemini
language: python # 仮指定(意味はない)
include:
- "**/*.ps1"
- "**/*.bat"
  1. インデックス再実行:
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;DRuvx --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‑18SSE モード (--transport sse) 追加HTTP 経由でサーバー常駐が可能に
2025‑07‑10Python 3.12 実験的サポートLSP 互換性に注意
2025‑07‑05Docker イメージ 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-server

4.2 ローカルクローン + uv

# 1. リポジトリ取得
git clone https://github.com/oraios/serena.git
cd serena

# 2. サーバー起動
uv run serena start-mcp-server

4.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

  1. 拡張機能 “Cline” をインストール
  2. 設定で MCP Server Command を上記と同様に指定
  3. コマンドパレット → Cline: Connect

7. 既知の制限 & 回避策(2025‑08‑02 現在)

言語ステータスメモ
Python✅ 安定PyPI ライブラリのシンボリック解析も対応
JavaScript/TypeScript⚠️ 不安定LSP 側のポインタ解決に課題。リファクタは限定的
Go / Rust🚧 実験中goplsrust-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 で最新に追随し、ブレークを避けるため変更履歴を確認してください。

タイトルとURLをコピーしました