在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": {}
}
}
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