在claude code安装serena mcp

178 阅读2分钟

在claude code中安装serena

1 安装serena mcp

先安装uv:

powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

安装后重启会话使命令生效

从本地运行:

cd d:
mkdir -p mcp_tools
cd mcp_tools
mkdir -p serena_mcp
cd serena_mcp
git clone https://github.com/oraios/serena
# 进入项目内部
cd D:\workspace\bim\qqsl-bim-model-assembly
claude mcp add serena -- "uv run --directory D:\mcp_tools\serena_mcp\serena serena-mcp-server.exe --context ide-assistant --project $(pwd)"
# 为项目建立索引
uvx --from git+https://github.com/oraios/serena serena project index

执行 claude 命令之后你会发现 WTF? claude mcp 报错:
[ERROR] MCP server "serena" Connection failed: MCP error -32000: Connection closed

现在我们可以去系统盘我们当前用户的目录下找到 .claude.json 文件,打开看下 mcpServers 下配置的内容。需要调整为如下这样才可以正常启动:

      "mcpServers": {
        "serena": {
          "type": "stdio",
          "command": "uv",
          "args": [
            "run",
            "--directory",
            "D:\\mcp_tools\\serena_mcp\\serena",
            "serena-mcp-server.exe",
            "--context",
            "ide-assistant",
            "--project",
            "D:\\workspace\\bim\\qqsl-bim-model-assembly"
          ],
          "env": {}
        }
      }

image.png

2 连接serena mcp

在claude code中用/mcp命令连接serena mcp连上了它会自动跳转http://127.0.0.1:24282/dashboard/index.html ,这是仪表盘,有一些特别的功能。 我运行时发现一个问题,claude code里serena mcp连接正常,浏览器也显示了serena仪表盘,但是claude里执行serena报错:

ERROR 2026-01-09 22:51:51,848 [StartLS:erlang] sensai.util.logging:__exit__:342 - Language server startup (language=erlang) failed after 0.089 seconds
ERROR 2026-01-09 22:51:51,848 [StartLS:erlang] serena.ls_manager:start_language_server:101 - Error starting language server for language erlang: Erlang LS not found. Install from: https://github.com/erlang-ls/erlang_ls
ERROR 2026-01-09 22:51:51,852 [StartLS:powershell] serena.ls_manager:start_language_server:101 - Error starting language server for language powershell: PowerShell Core (pwsh) is not installed or not in PATH. Please install PowerShell 7+ from https://github.com/PowerShell/PowerShell

经过分析发现是在项目下的.serena目录下project.yml里:

languages:
- csharp,erlang,PowerShell
# erlang,PowerShell是多余的,改为:
languages:
- csharp

发现第二个问题:

INFO 2026-01-10 10:07:04,620 [Task-5:FindFileTool] serena.tools.tools_base:_log_tool_application:205 - find_file: file_mask='GlobalParameterElement.cs', relative_path='.' ERROR 2026-01-10 10:07:07,461 [Task-5:FindFileTool] serena.tools.tools_base:task:274 - Error executing tool: path is on mount '\\\\.\\nul', start on mount 'D:' Traceback (most recent call last): File "D:\mcp_tools\serena_mcp\serena\src\serena\tools\tools_base.py", line 249, in task result = apply_fn(**kwargs) ^^^^^^^^^^^^^^^^^^ File "D:\mcp_tools\serena_mcp\serena\src\serena\tools\file_tools.py", line 149, in apply _dirs, files = scan_directory( ^^^^^^^^^^^^^^^ File "D:\mcp_tools\serena_mcp\serena\src\serena\util\file_system.py", line 55, in scan_directory result_path = os.path.relpath(entry_path, rel_base) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "<frozen ntpath>", line 777, in relpath ValueError: path is on mount '\\\\.\\nul', start on mount 'D:

这个错误是 Windows 路径 / 挂载点(mount)异常 导致的,和你的代码逻辑本身关系不大,主要出在 扫描目录时遇到了 \.\nul 这样的特殊设备路径

cd D:\mcp_tools\serena_mcp\serena\src\serena\util
# 编辑file_system.py,找到:result_path = os.path.relpath(entry_path, rel_base),改为:
                    entry_path = entry.path
                    # 过滤 Windows 设备路径
                    if entry_path.startswith(r"\\.\\"):
                        continue

                    if rel_base:
                        try: # 解决path is on mount '\\\\.\\nul', start on mount 'D:'
                            result_path = os.path.relpath(entry_path, rel_base)
                        except ValueError:
                            continue  # 跳过 \\.\nul 等设备路径
                    else:
                        result_path = entry_path