瑟琳娜cli
CLI包装机 Serena MCP服务器,允许您在任何上下文中使用Serena,包括无法访问MCP图拉的Claude Code子代理。
问题
Claude Code子代理(任务工具)不能使用MCP图拉。Serena仅对主代理可用。这限制了授权代码分析任务的能力。
决定
守护进程保持Serena MCP服务器运行,并通过UNIX套接字代理工具调用。bash包装 serena-cli 为所有代理提供一个CLI接口。
Agent (любой) → Bash("serena-cli find_symbol ...") → Unix socket → Daemon → Serena MCP → Dart LSP安装
1.复制脚本
cp serena-daemon.py ~/scripts/
cp serena-cli ~/scripts/
chmod +x ~/scripts/serena-cli ~/scripts/serena-daemon.py2.确保安装了Serena
uvx --from "git+https://github.com/oraios/serena" serena --help3.验证是否为Serena配置了项目
项目根必须有目录 .serena/ 带文件 project.yml:
languages:
- dart # или python, typescript, и т.д.
encoding: "utf-8"
project_name: "my-project"4.设置Claude Code
添加permission到 .claude/settings.local.json:
{
"permissions": {
"allow": [
"Bash(~/scripts/serena-cli:*)"
]
}
}(可选)从Serena MCP中删除 ~/.claude.json:
如果您想要一个统一的接口,而不会在上下文中重复DART LSP和Serena系统提示-删除部分 mcpServers.serena 从项目B ~/.claude.json.
5.将文档添加到Claude.md项目
复制文件内容 CLAUDE_MD_TEMPLATE.md 您的 CLAUDE.md这将为代理(包括子代理)提供有关可用图拉及其参数的完整信息。
使用
# Поиск символа
serena-cli --project /path/to/project find_symbol '{"name_path_pattern": "MyClass"}'
# Обзор символов файла
serena-cli --project /path/to/project get_symbols_overview '{"relative_path": "lib/src/foo.dart"}'
# Поиск паттерна
serena-cli --project /path/to/project search_for_pattern '{"substring_pattern": "TODO", "relative_path": "lib/"}'
# Поиск использований символа
serena-cli --project /path/to/project find_referencing_symbols '{"name_path": "MyClass", "relative_path": "lib/src/foo.dart"}'
# Поиск файлов
serena-cli --project /path/to/project find_file '{"file_mask": "*.dart", "relative_path": "lib/"}'
# Листинг директории
serena-cli --project /path/to/project list_dir '{"relative_path": "lib/src/", "recursive": false}'如果 --project 未指定,正在使用 $SERENA_PROJECT 或当前目录。
DAEMON管理
serena-cli --status # статус daemon
serena-cli --stop # остановить daemonDAEMON在第一次调用时自动启动。
它是如何工作的
serena-cli检查DAEMON(PID文件+UNIX套接字)是否已启动/tmp/)- 如果没有,则启动
serena-daemon.py在背景下等待准备 - (图为SERNA MCP Server)
uvx serena start-mcp-server)进行MCP初始化 - DAEMON听Unix套接字,接受JSON请求
{"tool": "...", "args": {...}} - 通过MCP JSON RPC代理Serena请求,返回结果
- Lock提供串行请求处理(DART LSP单线程)
可用图拉(只读)
图尔描述 |-----|----------| | find_symbol –通过nameu path模式搜索符号(类、方法、函数)→ | get_symbols_overview –按类型分组的所有文件字符概述› | search_for_pattern –在文件中搜索Regex模式› | find_referencing_symbols –所有字符在代码库中的使用。 | find_file 通过掩码搜索文件 | list_dir 目录列表
要求
- Python 3.10+
uvx(从uv)- 瑟琳娜(
uvx --from "git+https://github.com/oraios/serena" serena) - 语言服务器(Dart LSP for Dart等)
