MCP Directory

Serena

LSP-powered coding agent toolkit: semantic symbol search, references and structural edits.

Verified
stdio (local)
No auth
Python

Add to your client

Copy the config for your MCP client and paste it into its config file.

Install / run
uvx --from git+https://github.com/oraios/serena serena start-mcp-server

Paste into ~/Library/Application Support/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "serena": {
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/oraios/serena",
        "serena",
        "start-mcp-server"
      ]
    }
  }
}

Requires `uv` (the Python package runner). Install it from https://docs.astral.sh/uv/ if `uvx` is not found.

Before you start

  • uv (the Python package/tool manager) installed — it bootstraps and runs Serena
  • Python 3.11+ (the project targets recent Python; 3.13 recommended)
  • Language servers for the languages you use are auto-downloaded on first use; some ecosystems (e.g. Java, C#) may need their toolchain installed
  • No API key or account required — Serena runs locally against your repo

About Serena

Serena is a free, open-source MCP toolkit that turns LLM coding agents into IDE-grade engineers by giving them semantic, symbol-level access to a codebase instead of plain text. It runs language servers (LSP) under the hood, so the agent can find a symbol's definition, list every reference to it, read a file's symbol outline, and perform structural edits (replace a function body, insert before/after a symbol, rename) without re-reading whole files.

This matters for large repos: rather than dumping files into context, the agent retrieves only the relevant symbols and edits them precisely, which cuts token usage and reduces broken edits. Serena supports 40+ languages via their respective language servers (Python, TypeScript/JavaScript, Java, Go, Rust, C/C++, C#, PHP, Ruby, and more).

Serena is model- and client-agnostic. It plugs into Claude Code, Claude Desktop, Codex, Cursor, VS Code, and any MCP-compatible client over stdio. It also ships a persistent project-memory system so an agent can record and recall facts about a codebase across sessions. There is no API key or account — it runs entirely locally against your code.

Tools & capabilities (11)

find_symbol

Locate a class/function/symbol by name path across the project

get_symbols_overview

Return the symbol outline (top-level definitions) of a file

find_referencing_symbols

Find all symbols that reference a given symbol (call sites, usages)

replace_symbol_body

Replace the full body of a function/class/method symbol

insert_after_symbol

Insert new code immediately after a given symbol

insert_before_symbol

Insert new code immediately before a given symbol (e.g. imports)

search_for_pattern

Regex/text search across the project for non-symbol matches

read_file / list_dir / find_file

Navigate the project tree and read file contents

replace_content

Targeted text/line replacement when symbolic editing doesn't apply

execute_shell_command

Run shell commands (tests, builds, linters) from the agent

write_memory / read_memory / list_memories

Persist and recall project knowledge across sessions

When to use it

  • Use it when an agent needs to refactor or rename a symbol safely across a large codebase without re-reading every file
  • Use it when you want precise, structural edits (replace a function body, add a method) instead of fragile whole-file rewrites
  • Use it when token budget matters — retrieve only relevant symbols rather than dumping files into context
  • Use it when you want to add IDE-like 'find references' / 'go to definition' powers to Claude Code, Cursor, or VS Code
  • Use it when working in a polyglot repo (40+ languages via LSP) and need consistent semantic navigation
  • Use it when an agent should remember facts about a project across sessions via persistent memories

Quick setup

  1. 1Install uv (e.g. via the official installer or your package manager)
  2. 2Register Serena with your MCP client, typically by running it via uvx/uv tool from the oraios/serena repo over stdio
  3. 3Point it at your project (run `serena` in the repo or pass the project path) so it can index and start the right language server
  4. 4Restart your MCP client (Claude Code/Desktop, Cursor, VS Code) so it picks up the new server
  5. 5Verify by asking the agent to outline a file or find references to a symbol; the language server downloads on first use

Security notes

Serena reads and edits files in the project you point it at and launches language servers locally, so only run it on trusted codebases. Installing from a git ref pulls executable code, so pin to a tag or commit you trust.

Serena FAQ

Does Serena require an API key or account?

No. Serena runs entirely locally against your code via uv/uvx and language servers. There is no authentication, account, or hosted service.

Which languages does it support?

40+ languages through their language servers, including Python, TypeScript/JavaScript, Java, Go, Rust, C/C++, C#, PHP, and Ruby. Language servers are downloaded automatically on first use.

Which MCP clients work with Serena?

Any stdio MCP client — including Claude Code, Claude Desktop, Codex, Cursor, and VS Code. There's also a JetBrains plugin path with additional refactoring tools.

How is it different from just letting the agent read files?

Serena uses LSP to operate at the symbol level: it can find references, navigate definitions, and edit specific symbols. This is more precise and uses far fewer tokens than reading whole files.

Is it free?

Yes, it's open source under the MIT license and free to run locally.

Alternatives to Serena

Microsoft's official browser-automation MCP using Playwright's accessibility tree (no vision model).

Featured
Verified
stdio (local)
No auth
TypeScript
12 tools
Updated 9 days agoRepo

Up-to-date, version-specific library documentation injected into your coding agent.

Verified
stdio (local)
API key
TypeScript
2 tools
Updated 13 days agoRepo

Connect MCP clients to a running JetBrains IDE (IntelliJ, PyCharm, WebStorm, Android Studio).

Verified
stdio (local)
No auth
TypeScript
10 tools
Updated 4 months agoRepo