Serena

by oraios

Community Developer Tools 28k likes

Serena gives a coding agent IDE-grade semantic tools — symbol search, rename, safe delete — across 40-plus languages via language servers, for free.

Add to Claude Code

claude mcp add serena -- uvx --from git+https://github.com/oraios/serena serena start-mcp-server --context ide-assistant --project $(pwd)

Source: https://github.com/oraios/serena

About

Instead of grepping text and hoping for the best, Serena works at the symbol level: find_symbol and find_referencing_symbols locate a function or class and everywhere it's used, get_symbols_overview maps a file's structure before the agent reads it in full, and replace_symbol_body / insert_after_symbol edit precisely at the symbol boundary rather than patching raw text. Refactors like rename and safe delete propagate across the codebase the way an IDE's refactor tools would, because Serena is backed by real language servers, not pattern matching.

It covers 40-plus languages this way — Python, TypeScript/JavaScript, Go, Rust, Java, C/C++, C#, Ruby, PHP, Kotlin, Swift among them — and adds a memory system so an agent can persist project-specific notes across sessions instead of re-deriving context every time. There's also a JetBrains plugin variant for interactive debugging support on top of the MCP server.

Key features

  • find_symbol and find_referencing_symbols navigate code by symbol and usage, not raw text search
  • get_symbols_overview maps a file's structure before the agent decides what to read in full
  • replace_symbol_body and insert_after_symbol/insert_before_symbol edit precisely at the symbol boundary
  • rename and safe-delete refactors propagate correctly because they run through a real language server
  • Backed by language servers for 40+ languages, plus a JetBrains plugin for interactive debugging
  • Built-in memory system lets the agent retain project-specific context across sessions

Use cases

  • Refactoring or renaming symbols across a large codebase without breaking references elsewhere
  • Letting an agent orient itself in an unfamiliar repo via symbol overviews instead of reading every file
  • Making precise, symbol-scoped edits instead of large diffs that risk touching unrelated code
  • Giving a coding agent IDE-level navigation in editors that don't have that built in

Available tools

find_symbol

Locates a symbol (function, class, method) by name or path across the project.

get_symbols_overview

Returns the top-level symbol structure of a file before it's read in full.

find_referencing_symbols

Finds every place in the codebase that references a given symbol.

replace_symbol_body

Replaces the body of a function, method, or class in place.

insert_after_symbol

Inserts new code immediately after a specified symbol's definition.

Frequently asked questions

Which languages does it actually support?

40-plus via bundled language servers, covering Python, TypeScript/JavaScript, Go, Rust, Java, C/C++, C#, Ruby, PHP, Kotlin, and Swift among others; the JetBrains plugin variant extends that to any language the IDE supports.

Does it replace basic file-reading tools?

No — it adds symbol-level navigation and editing on top of the usual read/write/search tools, for cases where text-pattern matching isn't precise enough.