Serena

Gives a coding assistant IDE-like tools: find symbols and references, edit and refactor code by symbol.

By Oraios AI Python Local · stdio Developer tools

101 popularity score ★ 31k ↓ 148k/mo

What it does

Serena is a coding toolkit served over MCP that gives an assistant capabilities similar to an IDE. Instead of reading whole files and editing by line numbers, the assistant works with symbols: find a symbol, get a file's outline, find references, declarations and implementations, read diagnostics, replace a function's body, insert code before or after a symbol, rename and safely delete symbols. It also keeps project memories in markdown for long-running work and can query other projects.

Two backends power it. By default it uses language servers (LSP) and supports over 40 languages, including Python, TypeScript, Java, C#, Go, Rust and C/C++. Alternatively the paid Serena JetBrains plugin uses a JetBrains IDE's own analysis, adding moves, inlining, type hierarchy, inspections and an interactive debugger. Basic file, search and shell tools are included but are usually switched off when the client already has them.

The docs say to install it with uv (uv tool install -p 3.13 serena-agent), run serena init, then configure the client to launch serena start-mcp-server (with a context such as claude-code and a project); it can also run in HTTP mode. The docs warn against installing it from MCP or plugin marketplaces because their commands are outdated. Behaviour is configured in YAML per project, client context and mode.

Tools 42

find_symbol
Performs a global (or local) search for symbols using the language server backend.
get_symbols_overview
Gets an overview of the top-level symbols defined in a given file.
find_referencing_symbols
Finds symbols that reference the given symbol.
find_declaration
Finds the declaration/definition of a symbol.
find_implementations
Finds the implementations of a symbol.
get_diagnostics_for_file
Gets diagnostics for a file, grouped by symbol.
get_diagnostics_for_symbol
Gets diagnostics for a symbol and, optionally, for symbols that reference it.
replace_symbol_body
Replaces the full definition of a symbol using the language server backend.
insert_after_symbol
Inserts content after the end of the definition of a given symbol.
insert_before_symbol
Inserts content before the beginning of the definition of a given symbol.
rename_symbol
Renames a symbol throughout the codebase using language server refactoring capabilities.
safe_delete_symbol
Safely deletes a symbol.
restart_language_server
Restarts the language server(s).
jet_brains_find_symbol
Searches for symbols using the JetBrains backend.
jet_brains_find_referencing_symbols
Finds symbols that reference the given symbol using the JetBrains backend.
jet_brains_type_hierarchy
Retrieves the type hierarchy of a symbol using the JetBrains backend.
jet_brains_rename
Renames a symbol, file or directory throughout the codebase using the JetBrains backend.
jet_brains_move
Moves a symbol, file or directory, updating all references, using the JetBrains backend.
jet_brains_inline_symbol
Inlines a symbol, replacing all call sites with its body, using the JetBrains backend.
jet_brains_safe_delete
Safely deletes a symbol after checking for remaining usages, using the JetBrains backend.
jet_brains_run_inspections
Runs JetBrains IDE inspections on a file and returns the results.
jet_brains_debug
Debugging via a persistent debug REPL connected to the JetBrains IDE.
search_for_pattern
Searches for a pattern in files.
replace_content
Replaces content in a file (optionally using regular expressions).
replace_in_files
Replaces occurrences of a pattern across multiple files, with dry-run preview.
read_file
Reads a file within the project directory.
create_text_file
Creates or overwrites a file in the project directory.
list_dir
Lists files and directories in the given directory.
find_file
Finds files in the given relative paths.
execute_shell_command
Executes a shell command.
activate_project
Activates a project based on the project name or path.
get_current_config
Prints the current configuration, including projects, tools, contexts and modes.
open_dashboard
Opens the Serena web dashboard in the default web browser.
list_memories
Lists available memories.
read_memory
Reads the content of a memory file.
write_memory
Writes information about the project to a memory in markdown for future tasks.
edit_memory
Replaces content matching a regular expression in a memory.
delete_memory
Deletes a memory file.
query_project
Queries an external project by running a read-only tool.
onboarding
Performs onboarding (identifying the project structure and essential tasks).
initial_instructions
Provides instructions on using Serena for clients that do not read them.
serena_repl
Executes Python code that accesses Serena's functionality programmatically.

Similar servers