
Serena
github.com/oraios/serena- Category
- Developer Tools
- Rank
- No. 712Tools index
- Pricing
- Open Source
- Type
- TOOL
- Use case
- Coding
- Interfaces
- MCP
- Builder
- oraios
- GitHub
- 29.8k stars
- Latest release
- v1.7.0
- Date
About
A coding-agent toolkit served over MCP: gives any agent IDE-grade symbol-level code navigation and editing via language servers, instead of grep-and-overwrite. Works with Claude Code, Codex, and most MCP clients.
What it does
Serena supplies an AI coding assistant with structured knowledge of a project. It asks a language server or JetBrains IDE about symbols, references, declarations, implementations and diagnostics, then exposes retrieval, editing, refactoring, debugging and memory capabilities through an MCP server. The language model remains responsible for planning and orchestrating the work.
Why it's ranked here
Serena addresses a real weakness in coding agents: changes that depend on program structure rather than matching text. Its free language-server backend covers broad everyday navigation and symbol editing, while the paid JetBrains backend adds deeper dependency queries, moves, inlining and interactive debugging. That split makes the core useful, but reserves several compelling operations for paying JetBrains users.
What's good
Agents can inspect outlines and references without loading whole files, then replace or insert code around known symbols. Symbol renaming and safe deletion reduce reliance on broad text replacement. Configuration can vary globally, by project, by client context and through composable modes. The server also supports local process transport and HTTP operation, fitting both client-launched and separately hosted setups.
Tradeoffs
The default language-server backend cannot move symbols, files or directories, inline code, propagate deletions, inspect type hierarchies or search dependencies. Declaration lookup generally misses external dependencies, and implementation lookup varies by language server. Interactive debugging requires the paid JetBrains plugin, which does not support Rider or CLion. Setup also depends on compatible language tooling and an external model to direct the work.
How to use it well
Use Serena for large or unfamiliar repositories where reference discovery, cross-file renaming and symbol-scoped edits justify semantic setup. Keep the default backend for broad language coverage, or choose JetBrains when dependency navigation, structural moves and debugging matter. Pair it with an MCP-capable coding client. It is not a standalone programmer, and surrounding agent tools may remain better for tiny text edits, shell work and non-code tasks.
Technical notes+
pyproject.toml defines a Hatchling-built Python package requiring Python 3.11 through 3.14, produces wheels containing src/serena, src/interprompt and src/solidlsp, and registers serena, serena-agent and serena-hooks console scripts. src/serena/cli.py implements Click commands for initialization, client registration and MCP startup; server transports include stdio, SSE and streamable HTTP, with configurable host and port. src/serena/tools/__init__.py aggregates file, symbol, memory, command, configuration, workflow, JetBrains and project-query tool modules. README.md documents the default LSP backend, the paid JetBrains alternative and layered YAML configuration.
Observed
- License
- MIT
- Primary language
- Python 3.11 through 3.14
- Packaging
- Hatchling wheel package named serena-agent
- Install surface
- Provides serena, serena-agent and serena-hooks console commands
- Interfaces
- CLI and MCP server with stdio, SSE and streamable HTTP transports
- Semantic backends
- Language servers by default, with an optional paid JetBrains plugin
- Language coverage
- The language-server backend supports more than 40 programming languages
Read from README.md, pyproject.toml, src/serena/cli.py, src/serena/__init__.py, src/solidlsp/__init__.py, src/interprompt/__init__.py, src/serena/tools/__init__.py.
Tech Stack
Comments (0)
No comments yet
Editorially curated, with community endorsements as a secondary signal. Corrections welcome.