| name | serena |
| description | 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. |
Serena MCP Server
Semantic code understanding with project memory and session persistence.
Required First Step
ALWAYS activate project before any Serena operation:
mcp__serena__activate_project(project: "<path_or_name>")
mcp__serena__check_onboarding_performed()
When to Use Serena
| 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 |
Core Tools
Project Lifecycle
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 performed
Symbol Operations
find_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 symbols
Search & Navigation
search_for_pattern→ regex search across codebaselist_dir→ list directory contentsfind_file→ find files by mask
Memory Management
write_memory→ persist information for future sessionsread_memory→ retrieve stored informationlist_memories→ show available memoriesedit_memory/delete_memory→ modify or remove memories
Reflection (Call These!)
think_about_collected_information→ after search operationsthink_about_task_adherence→ before code modificationsthink_about_whether_you_are_done→ at task completion
Tool Details
See references/tools.md for detailed parameter documentation.
Workflow Patterns
Session Start
1. activate_project(project: "path/to/project")
2. check_onboarding_performed()
3. list_memories() → check existing context
4. read_memory("relevant_memory") → if applicable
Symbol Investigation
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()
Symbol Modification
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")
Cross-Session Persistence
1. write_memory("task_context", "important findings...")
2. [end session]
3. [new session]
4. activate_project(...)
5. list_memories()
6. read_memory("task_context")
Name Path Patterns
| 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 |
Best Practices
- Activate first - Always
activate_projectbefore operations - Read before edit - Use
find_symbolwithinclude_body: truebefore modifications - Use reflection tools - Call
think_about_*tools at appropriate points - Prefer symbolic over text - Use symbol tools over grep/edit when possible
- Persist important context - Use memory for cross-session continuity