find_symbolLABSCO SUMMARY
Pick the backend before you install: the free one does less.
Language servers are open-source and cover retrieval, renaming symbols, and symbolic editing. Move, inline, dead-code propagation, type hierarchy, dependency search and the interactive debugger only exist on the paid JetBrains plugin, and the README publishes that split as a table rather than burying it. The reason to bother either way is that a cross-file rename becomes one atomic call instead of a sequence of careful text edits.
What it is
A semantic code toolkit for coding agents, powered either by language servers speaking LSP (the free default) or by the paid Serena JetBrains plugin. Instead of line numbers and regex, its tools operate on symbols and the relationships between them, which is why it holds up in large codebases.
What you get
- Symbol-level retrieval on both backends: find symbol, file outline, find referencing symbols, find declaration, find implementations, query external projects, and diagnostics
- Symbolic editing that avoids rewriting whole files: replace a symbol's body, insert before or after a symbol, and safe delete
- Renaming of symbols on the language-server backend; the JetBrains backend adds renaming files and directories, move, inline, and propagating deletions to remove unused code
- Search in project dependencies and type hierarchy — JetBrains backend only
- Interactive debugging, exclusive to the JetBrains plugin: set breakpoints, inspect variables, evaluate expressions and control execution through a persistent REPL-style interface
- Basic utilities for completeness, usually disabled inside harnesses that already have them —
search_for_pattern,replace_content,list_dir,find_file,read_file,execute_shell_command - A memory system for knowledge that outlives a session, which can be turned off if you prefer your agent's own
Requirements
uv is the only hard prerequisite. Install with uv tool install -p 3.13 serena-agent, then run serena init to set up and verify — it configures the language-server backend by default, or -b JetBrains for the plugin. Connect it either by giving your client a launch command or by starting the server in HTTP mode and handing over the URL. The published package is serena-agent, run over stdio via uvx, with a --context matching your client. Some languages need extra dependencies installed for their language server. Do not install it from a plugin marketplace — the README says those carry outdated commands.
Setup effort
Follow the published steps — uv tool install -p 3.13 serena-agent
USE CASES
Changing a function that is called all over a large codebase
Find the symbol, list what references it, then rename — one operation with the compiler's understanding behind it rather than search-and-replace across files.
Editing one method without re-emitting the file
Replace that symbol's body directly, or insert a new symbol before or after it. Token cost tracks the symbol, not the file.
Understanding unfamiliar code before touching it
Read the file outline for structure, jump to declarations and implementations, and follow the reference graph — the way you would with an IDE open.
Restructuring a package
Move symbols, files and directories, inline what should not exist, and propagate deletions to clear the code left unused. This path needs the JetBrains backend.
16 tools
Listed in project docs. Your client may show a different list.
find_referencing_symbolsget_symbols_overviewreplace_symbol_bodyrename_symbolsearch_for_patternreplace_contentlist_dirfind_fileread_fileexecute_shell_commandactivate_projectread_memorywrite_memorylist_memoriesjet_brains_find_symbolBEFORE YOU INSTALL
What to know first
Tools you get
16 tools named in the project's documentation. Contexts and modes switch whole groups of tools off, and inside a harness like Claude Code the basic file, search and shell tools are disabled by default. Several refactoring operations are JetBrains-plugin-only.
INSTALLATION
Connect your client
Server setup
Install uv (https://docs.astral.sh/uv/getting-started/installation/) — Serena is managed by uv, and installing uv is the only required prerequisite
With uv installed and on your PATH, install Serena with this command
uv tool install -p 3.13 serena-agentUpon completion, the command serena should be available in your terminal. To test the installation and initialise Serena, run one of the following commands — for the default language intelligence backend (language servers)
serena initor, if you intend to use the JetBrains backend (which uses the JetBrains plugin)
serena init -b JetBrainsThen add Serena to your client — pick it under MCP Clients. Verify the connection (e.g. /mcp in Claude Code or Codex); if Serena is slow to start, raise MCP_TIMEOUT
Strongly recommended for Claude Code / VSCode / Copilot CLI: install the serena-hooks reminder hooks (remind / activate / cleanup / auto-approve) — an alpha feature that counteracts agent drift and dynamic tool loading
To update later:
uv tool upgrade serena-agentTo uninstall:
uv tool uninstall serena-agentMCP Clients
Claude Code
claude mcp add --scope user serena -- serena start-mcp-server --context claude-code --project-from-cwdClaude Code — single project
claude mcp add serena -- serena start-mcp-server --context claude-code --project "$(pwd)"Claude Desktop
{
"mcpServers": {
"serena": {
"command": "serena",
"args": [
"start-mcp-server",
"--context=desktop-app"
]
}
}
}GitHub Copilot — JetBrains
{
"servers": {
"serena": {
"type": "stdio",
"command": "serena",
"args": [
"start-mcp-server",
"--context=jb-copilot-plugin"
]
}
}
}VS Code
Run the MCP: Add Server command, select the Command (stdio) option, and enter the command below (workspace install; for the global install enter serena start-mcp-server --context=vscode).
serena start-mcp-server --context=vscode --project ${workspaceFolder}GitHub Copilot
{
"mcpServers": {
"serena": {
"type": "stdio",
"command": "serena",
"tools": [
"*"
],
"args": [
"start-mcp-server",
"--context=copilot-cli",
"--project-from-cwd"
]
}
}
}Codex
[mcp_servers.serena]
startup_timeout_sec = 15
command = "serena"
args = ["start-mcp-server", "--project-from-cwd", "--context=codex"]Grok CLI
grok mcp add --scope user serena -- serena start-mcp-server --context=grok --project-from-cwdJetBrains AI Assistant
{
"mcpServers": {
"serena": {
"command": "serena",
"args": [
"start-mcp-server",
"--context=jb-ai-assistant",
"--project-from-cwd"
]
}
}
}Antigravity
{
"mcpServers": {
"serena": {
"command": "serena",
"args": [
"start-mcp-server",
"--context=antigravity"
]
}
}
}CodeBuddy
serena setup codebuddyAny MCP client
serena start-mcp-server --context ide