Serena MCP usage guide for semantic code operations, symbol manipulation, project memory, and session persistence. Use when invoking any mcp__serena__* tools, performing symbol operations (rename, find references, extract), navigating large codebases, or managing project memory/sessions.
/plugin marketplace add ZhuMon/claude-code-hubs/plugin install serena@zhumon-hubsThis skill inherits all available tools. When active, it can use any tool Claude has access to.
references/tools.mdSemantic code understanding with project memory and session persistence.
ALWAYS activate project before any Serena operation:
mcp__serena__activate_project(project: "<path_or_name>")
mcp__serena__check_onboarding_performed()
| Use Case | Serena | Alternative |
|---|---|---|
| Symbol rename with references | ✅ | ❌ Morphllm |
| Find all references | ✅ | ❌ Grep |
| Semantic code navigation | ✅ | ❌ Native |
| Project memory/session | ✅ | ❌ None |
| Pattern-based bulk edits | ❌ | ✅ Morphllm |
| Simple text replacement | ❌ | ✅ Edit tool |
activate_project → REQUIRED FIRST - activate target projectget_current_config → check active project and available toolscheck_onboarding_performed → verify project is readyonboarding → run if onboarding not yet performedfind_symbol → locate symbols by name path patternfind_referencing_symbols → find all references to a symbolget_symbols_overview → high-level view of file symbolsrename_symbol → rename across entire codebasereplace_symbol_body → replace symbol definitioninsert_before_symbol / insert_after_symbol → add code around symbolssearch_for_pattern → regex search across codebaselist_dir → list directory contentsfind_file → find files by maskwrite_memory → persist information for future sessionsread_memory → retrieve stored informationlist_memories → show available memoriesedit_memory / delete_memory → modify or remove memoriesthink_about_collected_information → after search operationsthink_about_task_adherence → before code modificationsthink_about_whether_you_are_done → at task completionSee references/tools.md for detailed parameter documentation.
1. activate_project(project: "path/to/project")
2. check_onboarding_performed()
3. list_memories() → check existing context
4. read_memory("relevant_memory") → if applicable
1. get_symbols_overview(relative_path: "file.py", depth: 1)
2. find_symbol(name_path_pattern: "ClassName", include_body: false)
3. find_symbol(name_path_pattern: "ClassName/method", include_body: true)
4. think_about_collected_information()
1. find_symbol(name_path_pattern: "target", include_body: true)
2. think_about_task_adherence()
3. replace_symbol_body(name_path: "target", relative_path: "file.py", body: "new code")
1. write_memory("task_context", "important findings...")
2. [end session]
3. [new session]
4. activate_project(...)
5. list_memories()
6. read_memory("task_context")
| Pattern | Matches |
|---|---|
method | Any symbol named "method" |
Class/method | method inside Class |
/Class/method | Exact path from file root |
Foo/get with substring_matching: true | Foo/getValue, Foo/getData |
activate_project before operationsfind_symbol with include_body: true before modificationsthink_about_* tools at appropriate points