Serena
Vytvořeno: 15.8.2026 | Aktualizováno: 15.08.2026 13:09
Serena je open-source nástroj, který dává coding agentům schopnosti IDE přes Model Context Protocol (MCP). Agent díky němu může v projektu vyhledávat a upravovat funkce, třídy a jejich reference podle významu kódu, ne jen podle textu nebo čísel řádků.
K čemu slouží
Serena není AI model ani samostatný autonomní agent. Je to vrstva mezi agentem, například OpenCode, Claude Code nebo Codexem, a nástroji pro analýzu zdrojového kódu.
Největší přínos má při práci nad většími nebo neznámými projekty:
- najde definici funkce, třídy nebo metody a všechna její použití;
- zobrazí přehled symbolů v souboru, aniž by agent musel načíst celý soubor;
- přejmenuje symbol napříč projektem přes refaktoring language serveru;
- nahradí celé tělo konkrétního symbolu nebo vloží obsah před či za něj;
- vrátí diagnostiku z language serveru;
- uchovává volitelnou projektovou paměť pro další agentní session.
Příklad: při přejmenování metody calculateTotal na calculateInvoiceTotal by agent neměl slepě nahradit řetězec v souborech. Serena může najít symbol a požádat language server o refaktoring, který pracuje s jeho skutečnými referencemi.
Serena nenahrazuje testy, lint, code review ani Git. Sémantické nástroje snižují riziko chybné editace, ale správnost výsledku stále musí ověřit testy a kontrola změn.
CLI a MCP server
Serena má dvě role.
- CLI
serenaobsluhuje instalaci, konfiguraci, správu projektu, indexaci a spuštění serveru. - MCP server je rozhraní, přes které Serenu volá agent. Agent nepoužívá příkazy typu
serena find-symbol; po připojení dostane MCP nástroje jakofind_symbolneborename_symbol.
Po instalaci přes uv jsou pro člověka užitečné například tyto příkazy:
# Instalace a inicializace s výchozím LSP backendem uv tool install -p 3.13 serena-agent serena init # Vytvoření projektu a předindexace symbolů serena project create --index # Dodatečná indexace a kontrola projektu serena project index serena project health-check # Spuštění MCP serveru serena start-mcp-server
Podle dokumentace spuštění se v běžném režimu stdio server nespouští ručně: MCP klient jej spustí jako vlastní podproces a komunikuje s ním přes standardní vstup a výstup.
Provozní režimy
Stdio je vhodné pro jednoho agenta nad jedním projektem. Každá agentní session spustí vlastní instanci Sereny.
Streamable HTTP se hodí, když se k jedné instanci mají připojovat různí klienti nad týmž projektem. Server pak spouští správce prostředí a klienti se připojí na MCP URL. Serena je stavová a v jedné instanci má aktivní právě jeden projekt; nesdílí se proto mezi agenty, kteří pracují nad různými repozitáři.
Jak funguje LSP backend
Language Server Protocol (LSP) je standardní rozhraní mezi editorem a analyzátorem konkrétního programovacího jazyka. Language server zná syntaxi, importy, typy, definice a reference v projektu.
Agent → MCP → Serena → LSP language server → analýza projektu
← ← ← ← výsledky
Serena převede MCP volání na dotazy do vhodného language serveru a odpověď vystaví agentovi ve sjednocené podobě. Nejde o hledání nad embeddingy ani o vektorovou databázi nad zdrojovým kódem. Sémantické porozumění dodává konkrétní language server.
Například Pyright analyzuje Python, Intelephense PHP, TypeScript Language Server TypeScript a JavaScript, gopls Go a rust-analyzer Rust. Serena podporuje desítky jazyků; u některých server sama stáhne a u jiných vyžaduje lokální závislost nebo další konfiguraci.
Nástroje pro agenta
Nástroje Sereny zahrnují zejména:
find_symbol,find_declaration,find_implementationsafind_referencing_symbolspro navigaci v kódu;get_symbols_overviewpro strukturu souboru;get_diagnostics_for_filepro chyby a varování;rename_symbol,replace_symbol_body,insert_before_symbol,insert_after_symbolasafe_delete_symbolpro symbolické editace;- nástroje pro projektovou paměť a onboarding.
Podpora jednotlivých operací závisí na schopnostech language serveru. LSP backend například umí rename symbolů, ale obecný přesun symbolu, souboru nebo adresáře není dostupný pro všechny jazyky.
Indexace a projektová paměť
Serena rozlišuje analýzu kódu od projektové paměti.
Indexace kódu
Language server při otevření projektu analyzuje workspace a vytváří si vlastní informace o symbolech a vztazích. Serena může u větších projektů předem načíst symbolická data příkazem serena project index. Tato předindexace zrychlí první dotazy; podle workflow dokumentace se spouští jednou a Serena ji pak průběžně aktualizuje při změnách souborů.
U JetBrains backendu indexaci obstarává IDE, takže samostatná indexace Sereny nedává smysl.
Paměť a onboarding
Při prvním použití projektu může Serena provést onboarding: projde důležité soubory, build a testovací nastavení a vytvoří lidsky čitelné Markdown poznámky v '' .serena/memories/'' v kořeni projektu. Typicky jde o architekturu, příkazy pro build a testy nebo projektové konvence.
Paměť Sereny není RAG ani databáze. Agent nejdříve dostane seznam názvů pamětí a relevantní soubor si přečte cíleně. Paměti lze upravovat ručně, verzovat s projektem a kombinovat s AGENTS.md.
Onboarding může spotřebovat hodně kontextu. Po prvním spuštění je vhodné vytvořené poznámky zkontrolovat a pro další práci začít novou agentní session. Pokud projekt vlastní paměť nepotřebuje, lze ji i onboarding vypnout režimy no-memories nebo no-onboarding.
Alternativní JetBrains backend
Vedle výchozího LSP backendu nabízí Serena placený plugin pro JetBrains IDE. MCP server zůstává stejný; plugin je jen alternativní zdroj jazykové inteligence z otevřeného IDE.
JetBrains varianta navíc umí například indexovat externí knihovny, přesouvat symboly, soubory a adresáře, inlinovat symboly, zobrazit type hierarchy a interaktivně debugovat přes breakpointy a REPL. Vyžaduje otevřený stejný projekt v IDE a není nutná, pokud LSP backend poskytuje dostatečnou podporu pro daný jazyk.
Doporučené nastavení pro coding agenta
Výchozí LSP backend není chybný. Nevhodné však může být výchozí nastavení serveru určené pro klienta, který nemá vlastní nástroje pro soubory a shell. OpenCode už takové nástroje má, proto není dobré vystavit dvě sady podobných nástrojů bez jasného pravidla použití.
Pro terminálového coding agenta je vhodný kontext ide, který je určený pro asistenty s vlastními základními nástroji. Server lze spustit například takto:
serena start-mcp-server \ --context ide \ --project-from-cwd \ --open-web-dashboard false
–context ideomezuje duplicity se souborovými a shellovými nástroji agenta.–project-from-cwdvybere projekt podle aktuálního adresáře; Serena hledá nejbližší '' .serena/project.yml'' nebo.git.- Dashboard je vhodný při ladění, ale v headless agentním provozu jej není nutné otevírat.
Dokumentace MCP klientů upozorňuje, že agenti někdy preferují vlastní grep a čtení souborů, i když mají Sereně dostupné sémantické nástroje. Pro práci v projektu proto dává smysl mít v AGENTS.md explicitní pravidlo: pro navigaci v kódu, hledání referencí, rename a změny napříč soubory má agent nejprve použít symbolické nástroje Sereny. Textové vyhledávání zůstává vhodné pro konfigurace, dokumentaci, nezdrojové soubory a případy, kde LSP daný jazyk nebo konstrukci nepokrývá.
Bezpečnost a omezení
Serena může upravovat soubory a spouštět příkazy. Důvěryhodný MCP klient, důvěryhodný repozitář a důvěryhodná lokální konfigurace jsou součástí jejího bezpečnostního modelu.
- Udržuj projekt v Gitu a ověřuj
git diff, testy a lint. - Aktivní nástroje omez na nezbytné minimum.
- Nedůvěryhodné repozitáře otevírej v sandboxu, například v Dockeru. Označení projektu jako nedůvěryhodného není sandbox a samo o sobě nebrání agentovi měnit soubory nebo spouštět příkazy.
- HTTP režim ponech na
localhost, pokud není k dispozici bezpečná síťová vrstva s autentizací a omezeným přístupem. - LSP backend může na vyžádání instalovat language servery. Serena pro řadu z nich používá připnuté verze, kontrolu hashů, omezení zdrojových hostitelů a vlastní instalační adresáře, ale správce stále musí důvěřovat použitým registry a závislostem.
Podrobnosti popisuje bezpečnostní dokumentace Sereny.
Kdy ji použít
Serena se vyplatí pro rozsáhlejší aplikace, monorepa, refaktoring veřejných API, práci v neznámém kódu a dlouhodobé agentní workflow. Pro malý skript, čistě dokumentační repozitář nebo jednorázovou textovou změnu přinese málo oproti běžnému hledání a editaci souborů.