🔧

SerenaをMacのVSCodeで起動したDev Containerで使いたい

に公開

概要

開発環境の可搬性を確保するためにDev Containerを使っています。
Dev ContainerでSerena MCPサーバを使いたくなったのですが、起動するまでにいくつか詰まったので引っかかった部分を共有します。

前提

  • コンテナのベースOS:Amazon Linux 2023
  • CPUアーキテクチャ:aarch64
  • Serenaで使用する言語サーバ:Terraform
  • serena-agentのバージョン:0.1.4

mcp.jsonの最終版

{
  "inputs": [],
  "servers": {
    "serena": {
      "type": "stdio",
      "command": "/workspace/.serena-venv/bin/serena",
      "args": [
        "start-mcp-server",
        "--context",
        "ide-assistant",
        "--project",
        "/workspace"
      ]
    }
  }
}

Serenaのインストール・設定

Serenaのインストール

uvx で起動したかったのですが、起動時に以下のエラーが発生しました。

ERROR 2025-08-24 07:44:29,626 [SerenaAgentExecutor_0] serena.agent:__exit__:342 - Language server initialization failed after 0.149 seconds
ERROR 2025-08-24 07:44:29,626 [SerenaAgentExecutor_0] serena.agent:__exit__:342 - Task-1[init_language_server] failed after 0.150 seconds

上記エラーの解消にはファイルの修正が必要になったため、Serenaをローカルにインストールします。

uv venv --python 3.12 /workspace/.serena-venv
source /workspace/.serena-venv/bin/activate
uv pip install git+https://github.com/oraios/serena tree_sitter tree_sitter_languages jedi pygments
uv pip install git+https://github.com/oraios/serena tree_sitter tree_sitter_languages jedi pygments
Using Python 3.13.3 environment at: .serena-venv
  × No solution found when resolving dependencies:
  ╰─▶ Because all versions of tree-sitter-languages have no wheels with a matching Python ABI tag (e.g., `cp313`)
      and you require tree-sitter-languages, we can conclude that your requirements are unsatisfiable.

      hint: You require CPython 3.13 (`cp313`), but we only found wheels for `tree-sitter-languages` (v1.10.2)
      with the following Python ABI tags: `cp37m`, `cp38`, `cp39`, `cp310`, `cp311`, `cp312`

terraform_ls.pyの修正

インストールしたSerena MCPサーバを起動すると以下のエラーが発生しました。

ERROR 2025-08-24 09:55:05,755 [SerenaAgentExecutor_0] serena.agent:__exit__:342 - Language server initialization failed after 0.242 seconds
ERROR 2025-08-24 09:55:05,756 [SerenaAgentExecutor_0] serena.agent:__exit__:342 - Task-1[init_language_server] failed after 0.244 seconds

上記のエラーはTerraform用の言語サーバの初期化失敗によるものでした。
/workspace/.serena-venv/lib/python3.12/site-packages/solidlsp/language_servers/terraform_ls.py を確認すると、以下の通りTerraformのARM64用の言語サーバはmacOS用しか定義されていませんでした。

grep -e 'description="terraform-ls' /workspace/.serena-venv/lib/python3.12/site-packages/solidlsp/language_servers/terraform_ls.py
                    description="terraform-ls for macOS (ARM64)",
                    description="terraform-ls for macOS (x64)",
                    description="terraform-ls for Linux (x64)",
                    description="terraform-ls for Windows (x64)",

今回はARM64 Linuxを使うので、 terraform_ls.py を修正しました。

terraform_ls.py
86a87,94
>                     description="terraform-ls for Linux (ARM64)",
>                     url="https://releases.hashicorp.com/terraform-ls/0.36.5/terraform-ls_0.36.5_linux_arm64.zip",
>                     platform_id="linux-arm64",
>                     archive_type="zip",
>                     binary_name="terraform-ls",
>                 ),
>                 RuntimeDependency(
>                     id="TerraformLS",
grep -e 'description="Clangd' /workspace/.serena-venv/lib/python3.12/site-packages/solidlsp/language_servers/clangd_language_server.py 
                    description="Clangd for Linux (x64)",
                    description="Clangd for Windows (x64)",
                    description="Clangd for macOS (x64)",
                    description="Clangd for macOS (Arm64)",

その他の引っかかった部分

Serena MCPサーバが起動しない

GitHubの記載を参考に uvx でSerenaを起動しようとすると以下のエラーが発生しました。

2025-08-23 15:50:00.683 [info] サーバー serena を起動しています
2025-08-23 15:50:00.683 [info] 接続状態: 開始しています
2025-08-23 15:50:00.685 [info] Starting server from LocalProcess extension host
2025-08-23 15:50:00.687 [info] 接続状態: 開始しています
2025-08-23 15:50:00.688 [info] 接続状態: エラー spawn uvx ENOENT

このエラーは、Serenaの定義をローカルの ~/Library/Application Support/Code/User/mcp.json に記載していたために発生していました。
ローカル環境には uvx コマンドが入っていないために、起動できませんでした。
Dev ContainerでSerenaを起動したいので、 以下の2点を実施しました。

  1. ~/Library/Application Support/Code/User/mcp.json からSerenaの記載を削除
  2. /workspace/.vscode/mcp.json にSerenaの定義を記載

また、このあと上述の通りソースの修正が必要になったため、 uvx での起動は断念しています。

参考

https://github.com/oraios/serena
https://github.com/oraios/serena/issues/486

Discussion