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.
Enables semantic code operations like symbol renaming, finding references, and navigating large codebases with project memory and session persistence. Use when you need to rename symbols across files, find all references to a function/class, or maintain context between coding 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