Tools

Serena: an MCP server that gives coding agents IDE-like symbol tools

TL;DR

Serena is an MCP server with symbol-level retrieval and editing via LSP (40+ languages) or a JetBrains plugin. Worth it for large repos and refactors; mind the GPL licence and language-server limits.

Coding agents usually search code "grep then read the whole file": to edit a 20-line function the agent reads a 1,500-line file; to find who calls it, it greps the name and gets comments and same-named strings too. On large repos this wastes tokens and makes missed edits likely. Serena (repo oraios/serena, about 30K stars at the time of writing) solves this by giving the agent tools that understand code at the symbol level, much like an IDE does for developers: find definitions, find references, replace exactly a function body. Its README describes it as "The IDE for Your Coding Agent".

What is Serena and how does it work?

Serena is an MCP server. It isn't an agent and doesn't call an LLM; it only provides tools, and the model (Claude Code, Codex, Claude Desktop, IDEs…) decides when to use which. Underneath, Serena has two backends:

BackendCharacteristics
Language Server (LSP), defaultOpen source, supports 40+ languages (Python, Java, TypeScript, Go, Rust, C#, C/C++, PHP, Ruby, Kotlin, Swift…)
Serena JetBrains PluginPaid (with a trial), adds move/inline refactors and debugging (breakpoints, inspecting variables)

Main tool groups

GroupTypical toolsBenefit
Retrievalfind symbol, symbol overview, find referencing symbols, find declaration/implementations, diagnosticsRead exactly the function/class needed, not the whole file
Symbol editingreplace symbol body, insert before/after symbol, safe deletePrecise edits, fewer string-matching errors
Refactoringrename (both backends); move, inline (JetBrains only)Safe project-wide renames
Basicsearch pattern, read file, list dir, shell…Usually disabled in Claude Code/Codex since they duplicate built-in tools

A typical flow when the agent needs to change the signature of calculate_fee(): get the module's symbol overview → find symbol to read just that function body → find referencing symbols to list the call sites → replace symbol body for the function and each call site. No step needs to read an entire file.

Installation

Per the current README (requires uv):

uv tool install -p 3.13 serena-agent
serena init            # add -b JetBrains if using the plugin

Then connect your client with the launch command, or run Serena in HTTP mode and point the client at the URL. The README warns against installing via MCP/plugin marketplaces because the commands there are outdated. Take the Claude Code connection command from the repo's docs, not from old blog posts.

Configuration is YAML in layers: global, CLI parameters, per project (with local overrides), per client (context) and composable "modes". Serena also has a memory system to keep project knowledge across sessions; you can turn it off if you already use AGENTS.md/CLAUDE.md.

When is it worth it?

  • Worth it: large repos with many modules; strongly typed languages (Java, C#, TypeScript, Go); renames/signature changes across many files; agents that keep reading huge files and burning context.
  • Not needed: small repos of a few dozen files; standalone scripts; projects where grep + read already works well.

Limits and risks

  • Depends on language server quality: find implementations is only available for some languages; find declaration often doesn't work for code in external dependencies.
  • Powerful refactors are in the paid version: move/inline and debugging only come with the JetBrains plugin; Rider and CLion aren't supported yet.
  • Extra dependencies: some languages need their own language server installed; first-time indexing of a big repo can be slow.
  • Licence: SolidLSP is MIT, but the Serena application is GPL-3.0-or-later. Fine as an internal tool, but check with legal before embedding it in a distributed product.
  • More tools = more description tokens: every MCP server loads tool definitions into context. Disable tools that duplicate the harness's own.

How to apply it

  • Dev: Try it on a large repo with the same task, comparing tokens and files read with and without Serena. If you see no difference, don't keep it.
  • Tech Lead: Consider it for monorepos or long-lived Java/C# codebases where cross-module refactors are routine. Agree a shared project config so the team uses it the same way.
  • PM: The measurable benefits are fewer tokens per task and fewer "missed call site" bugs. Put both metrics in the trial evaluation.

Sources & references

  1. Serena — GitHub repository — Oraios AI