MCPサーバ - Serena
概要
Serenaは、Oraios AIが開発したオープンソース (MITライセンス) のコーディングエージェントツールキットである。
LLMをコードベース上で動作する完全機能のエージェントに変える強力なツールであり、Model Context Protocol (MCP) とLanguage Server Protocol (LSP) を統合して、IDE的なセマンティック解析・コード編集機能を提供する。
Serenaは、従来のテキスト検索ベースのアプローチとは異なり、シンボルレベルでコード要素を理解する。
以下に示すような機能を提供する。
- IDE的なセマンティック解析機能 (find_symbol、find_referencing_symbols、get_symbols_overview等)
- シンボル単位のコード編集機能 (replace_symbol_body、insert_after_symbol、insert_before_symbol等)
- プロジェクト固有のメモリ機能 (write_memory、read_memory、list_memories)
- シェルコマンド実行とWebダッシュボード (execute_shell_command、open_dashboard)
Serenaを使用することにより、LLMがコンテキストウィンドウのトークン使用量を約38〜80[%]削減しながら、高精度なコード解析・編集を行うことができる。
40以上のプログラミング言語に対応しており、Claude Code、Claude Desktop、VS Code、Cursor、JetBrains AI Assistant等の主要なMCPクライアントと統合できる。
SerenaはMITライセンスで公開されており、最新バージョンはv0.1.4である。
動作要件
システム要件
- Python 3.11〜3.12
- Python 3.13は現時点では非対応
- uv (Rust製の高速Pythonパッケージマネージャー)
- 対応OS
- Windows、MacOS、Linux、Docker
対応MCPクライアント
| クライアント | 説明 |
|---|---|
| Claude Desktop | Anthropic公式デスクトップアプリケーション |
| Claude Code | AnthropicのCLIツール |
| VS Code (GitHub Copilot) | MicrosoftのエディタとGitHub Copilot統合 |
| Cursor | AI機能統合型コードエディタ |
| Windsurf | Codeium製AIコードエディタ |
| OpenCode | Go言語製のターミナルベースAIコーディングアシスタント |
| JetBrains AI Assistant | JetBrains IDE向けAIアシスタント |
| その他 | Antigravity等のMCP対応クライアント |
uvのインストール
SerenaはPythonパッケージマネージャーのuvを必要とする。
以下に示すOSごとのインストール方法を参照すること。
Linux
curlを使用してインストールする。
curl -LsSf https://astral.sh/uv/install.sh | sh
MacOS
curlの使用
curl -LsSf https://astral.sh/uv/install.sh | sh
Homebrewの使用
brew install uv
Windows
PowerShellの使用
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
wingetの使用
winget install --id=astral-sh.uv -e
scoopの使用
scoop install main/uv
Serenaのインストール
uvxを使用する場合 (推奨)
uvx を使用することにより、リポジトリをクローンせずに最新版のSerenaを直接実行できる。
クイックな試験やCI/CDパイプラインに最適な方法である。
動作確認コマンドを以下に示す。
uvx --from git+https://github.com/oraios/serena serena start-mcp-server --help
リポジトリをクローンする場合
ローカルにリポジトリをクローンして使用する場合の手順を以下に示す。
git clone https://github.com/oraios/serena.git
cd serena
cp src/serena/resources/serena_config.template.yml serena_config.yml
Dockerを使用する場合
Dockerコンテナを使用してSerenaを起動する場合のコマンドを以下に示す。
docker run --rm -i --network host -v /path/to/projects:/workspaces/projects ghcr.io/oraios/serena:latest serena start-mcp-server --transport stdio
/path/to/projectsには、実際のプロジェクトディレクトリのパスを指定すること。
MCPクライアントの設定
Claude Desktop
Claude Desktopの設定ファイルを編集する。
設定ファイルの場所は、以下の通りである。
- MacOS
- ~/Library/Application Support/Claude/claude_desktop_config.json
- Windows
- %APPDATA%\Claude\claude_desktop_config.json
設定例を以下に示す。
{
"mcpServers": {
"serena": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/oraios/serena",
"serena",
"start-mcp-server"
]
}
}
}
設定ファイルを編集した後は、Claude Desktopを再起動する必要がある。
Claude Code
Claude Codeでは、以下のコマンドを実行してSerenaをMCPサーバとして追加する。
claude mcp add serena -- uvx --from git+https://github.com/oraios/serena serena start-mcp-server --context claude-code --project "$(pwd)"
または、プロジェクトルートに.mcp.jsonファイルを作成して設定する方法もある。
{
"mcpServers": {
"serena": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/oraios/serena",
"serena",
"start-mcp-server",
"--context",
"claude-code",
"--project",
"."
]
}
}
}
VS Code (GitHub Copilot)
VS Codeでは、.vscode/mcp.jsonファイルを作成して設定する。
{
"servers": {
"oraios/serena": {
"type": "stdio",
"command": "uvx",
"args": [
"--from",
"git+https://github.com/oraios/serena",
"serena",
"start-mcp-server",
"--context",
"ide",
"--project",
"${workspaceFolder}"
]
}
}
}
Cursor / Windsurf
CursorおよびWindsurfでは、--context ide 引数を指定することにより、IDE側のツールと重複する機能を無効化できる。
設定例を以下に示す。
{
"mcpServers": {
"serena": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/oraios/serena",
"serena",
"start-mcp-server",
"--context",
"ide",
"--project",
"/path/to/your/project"
]
}
}
}
OpenCode
OpenCodeは、Go言語で構築されたターミナルベースのAIコーディングアシスタントである。
複数のAIプロバイダー (OpenAI、Claude、Google Gemini等) をサポートしている。
設定ファイルの場所は、以下の通りである。
- グローバル設定
- ~/.config/opencode/opencode.json
- プロジェクト設定
- /<プロジェクトのパス>/opencode.json
設定例を以下に示す。
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"serena": {
"type": "local",
"command": [
"uvx",
"--from",
"git+https://github.com/oraios/serena",
"serena",
"start-mcp-server",
"--context",
"ide-assistant"
],
"environment": {
"PYTHONUNBUFFERED": "1"
}
}
}
}
OpenCodeでは、--context ide-assistant を指定することにより、IDE側のツールとの重複を避けることが推奨される。
設定ファイルを作成した後、OpenCodeを起動してSerena MCPサーバが正常に読み込まれたことを確認する。
プロジェクト設定
project.yml
Serenaはプロジェクトごとの設定ファイルを自動生成する。
- 場所
- /<プロジェクト>/.serena/project.yml
- 主な設定内容
- 使用プログラミング言語の指定
- 検索対象ディレクトリの設定
- 除外ディレクトリの設定
グローバル設定
SerenaのグローバルなデフォルトはYAML形式の設定ファイルで管理する。
設定ファイルの場所は、以下の通りである。
- Linux / MacOS
- ~/.serena/serena_config.yml
- Windows
- %USERPROFILE%\.serena\serena_config.yml
主な設定項目は以下の通りである。
- ツールの有効・無効設定
- 言語サーバ固有の設定
- タイムアウト・回答長などの実行パラメータ
- ロギング設定
言語サーバのパスをカスタマイズする場合の設定例を以下に示す。
ls_specific_settings:
<language>:
ls_path: "/custom/path"
コンテキスト
コンテキストは、Serena起動時に --context オプションで指定する。
セッション開始後はコンテキストを変更できないため、用途に応じて適切なコンテキストを選択すること。
下表に、利用可能なコンテキストを示す。
| コンテキスト | 説明 |
|---|---|
desktop-app |
デスクトップアプリケーション向けのデフォルトコンテキスト フルセットのSerenaツールを提供する。 |
claude-code |
Claude Code統合用コンテキスト Claude Code固有の機能と重複するツールを無効化する。 |
ide |
VS Code、Cursor等のIDEアシスタント向けコンテキスト |
agent |
自律エージェント用コンテキスト |
oaicompat-agent |
OpenAI互換ツール記述対応コンテキスト |
モード
モードは複数同時有効化が可能な動作調整ツールである。
起動時に--modeオプションで指定する。
下表に、ビルトインモードに示す。
| モード | 説明 |
|---|---|
planning |
計画・分析タスク向けのモード |
editing |
コード修正を最適化するモード |
interactive |
対話型モード(デフォルト) |
one-shot |
単一応答で完結するモード |
onboarding |
プロジェクトの初期化・分析向けモード |
no-memories |
メモリツールを無効化するモード |
複数のモードを同時に指定する例を以下に示す。
serena start-mcp-server --mode planning --mode no-onboarding
主なツール
コード検索・解析ツール
| ツール | 説明 |
|---|---|
| find_symbol | グローバル(またはローカル)シンボルを検索する。 |
| find_referencing_symbols | 特定シンボルの参照元を検索する。 |
| get_symbols_overview | ファイル内のトップレベルシンボルの概要を取得する。 |
| rename_symbol | 全参照箇所を一括でリネームする。 |
コード編集ツール
| ツール | 説明 |
|---|---|
| replace_symbol_body | シンボル定義を完全に置換する。 |
| insert_after_symbol | 特定シンボルの後に新しいコードを挿入する。 |
| insert_before_symbol | 特定シンボルの前に新しいコードを挿入する。 |
| replace_lines | 指定した行範囲を置換する。 |
| replace_content | ファイル内容を置換する。(正規表現対応) |
| delete_lines | ファイル内の指定した行範囲を削除する。 |
ファイル管理ツール
| ツール | 説明 |
|---|---|
| read_file | プロジェクトディレクトリ内のファイルを読み取る。 |
| create_text_file | ファイルを新規作成または上書きする。 |
| list_dir | ディレクトリの内容を一覧表示する。 |
プロジェクト分析ツール
| ツール | 説明 |
|---|---|
| activate_project | プロジェクトを有効化する。 |
| onboarding | プロジェクト構造と必須タスクを特定する。 |
| get_current_config | 現在のエージェント設定を表示する。 |
メモリ・その他のツール
| ツール | 説明 |
|---|---|
| write_memory / read_memory / list_memories | プロジェクト固有のメモリ機能 |
| execute_shell_command | シェルコマンドを実行する。 |
| open_dashboard | Webダッシュボードを起動する。 |
| switch_modes | セッション内でモードを変更する。 |
Serenaは上記を含む合計40個以上のツールを提供する。
使用方法
Claude Codeでの使用例
Claude Codeで作業するプロジェクトディレクトリに移動して、MCPサーバとしてSerenaを追加した上でClaude Codeを起動する。
# 使用例 : コードベースの概要を把握してください。
# 使用例 : UserAuthクラスのloginメソッドの実装を確認してください。
# 使用例 : fetchData関数を参照している箇所を全て列挙してください。
Claude Desktopでの使用例
Claude Desktop設定ファイルにSerenaを追加した後、Claude Desktopを再起動して、Serenaツールを利用できる状態にする。
# 使用例 : @serena このプロジェクトのディレクトリ構造を分析して概要を教えてください。
# 使用例 : @serena src/api/users.ts のUserServiceクラスにgetAllUsersメソッドを追加してください。
プロジェクトインデックス
Serenaのシンボル検索を活用するために、プロジェクトのインデックスを作成する。
- 手動でインデックスを作成する場合
serena project index
- 並列処理でインデックスを作成する場合
serena project index --parallel 4
- 差分インデックスを作成する場合
serena project index --incremental
対応プログラミング言語
Serenaは40以上のプログラミング言語に対応している。
以下に示す言語は、デフォルト設定で利用可能である。
| 言語 | 言語サーバ |
|---|---|
| Bash | デフォルト |
| Java | デフォルト |
| JavaScript | デフォルト |
| Python | デフォルト |
| Rust | デフォルト |
| TypeScript | デフォルト |
| YAML | デフォルト |
| Dart | デフォルト |
| Swift | デフォルト |
| Lua | デフォルト |
| Markdown | デフォルト |
| Zig | デフォルト |
| Clojure | デフォルト |
| Elm | デフォルト |
以下に示す言語は、追加の言語サーバインストールが必要である。
| 言語 | 言語サーバ | 備考 |
|---|---|---|
| C / C++ | clangd (デフォルト) / ccls | compile_commands.jsonが必要 |
| C# | Roslyn / OmniSharp | .NET 10以上が必須 |
| Go | gopls | 要インストール |
| Scala | Metals | 手動セットアップが必要 |
| Vue | - | Node.js v18以上が必要 |
| R | languageserver | Rパッケージが必要 |
| Elixir | ElixirLS | - |
| F# | FSharp言語サーバ | - |
| Fortran | fortls | - |
| Haskell | Haskell言語サーバ | - |
| Kotlin | Kotlin言語サーバ | - |
| Perl | Perl言語サーバ | - |
| PHP | Intelephense | INTELEPHENSE_LICENSE_KEY設定可 |
| Ruby | - | 言語サーバが別途必要 |
| Nix | Nix言語サーバ | - |
| Pascal | pasls | FPCコンパイラのパス指定可 |
| Erlang | erlang_ls | - |
トラブルシューティング
接続・起動関連
uvコマンドが見つからないエラーが発生する場合は、以下の項目を確認する。
- uvがインストールされているか確認
uv --versionコマンドでインストール状態を確認する。
- PATH設定が正しいか確認
- uvのインストールディレクトリがPATHに含まれているか確認する。
- シェルの設定ファイル (~/.profile、~/.zprofile等) を再読み込みする。
WindowsでSerenaを使用する時に相対パスエラーが発生する場合は、設定ファイル内でプロジェクトパスを絶対パスで指定すること。
Webダッシュボードを使用する場合は、設定ファイルで web_dashboard オプションを有効化する設定が必要である。
Claude統合関連
Serenaのツール呼び出しが動作しない場合は、以下の項目を確認する。
- FileSystem MCPとのツール名競合を確認
- Claude DesktopでFileSystem MCPサーバを同時に有効化している場合、ツール名が競合することがある。
- Serenaのツール名をユニークにするか、競合するMCPサーバを無効化する。
Claude CodeでSerenaへの接続が失敗する場合は、以下の項目を確認する。
- タイムアウト設定を確認
- デフォルトのタイムアウト値が短い場合は、設定で延長する。
- MCPサーバの起動ログを確認
claude mcp listコマンドで登録されているMCPサーバを確認する。
デバッグ方法
問題が解決しない場合は、以下に示すデバッグ手段を試みること。
- ログファイルの確認
- SerenaのMCPログ (mcp.log等) を確認する
- MCP Inspectorの使用
- MCP Inspectorツールを使用してMCPサーバの動作を詳細に確認する。
npx @modelcontextprotocol/inspector uvx --from git+https://github.com/oraios/serena serena start-mcp-serverで起動する。
関連リソース