Skip to main content
Glama
SERENA_GUIDE.mdโ€ข13.9 kB
# Serena MCP - Complete Installation & Usage Guide **Date:** 2025-10-09 **Status:** Production-ready FOSS project **GitHub:** https://github.com/oraios/serena **Stars:** 9.8k+ (very active!) --- ## ๐ŸŽฏ What is Serena? **Serena** is a FREE, open-source MCP server that makes AI assistants (Claude, Cursor, etc.) WAY smarter at coding by giving them **semantic code understanding** - not just text reading. ### The Problem Serena Solves **Without Serena:** - AI reads your ENTIRE codebase every time (wastes tokens ๐Ÿ’ธ) - AI only sees text, not code structure (like class relationships, function calls) - Large projects hit token limits fast - AI can't find specific functions/classes efficiently **With Serena:** - AI reads ONLY what it needs (70% token savings! ๐ŸŽ‰) - AI understands code semantically (via Language Server Protocol) - AI can search by meaning: "find all authentication functions" - Creates project "memories" in `.serena/memories/` for context - Works like a real IDE with symbol navigation, references, etc. ### How It Works 1. **First run (Onboarding):** - Serena scans your project - Creates index of all code symbols (classes, functions, etc.) - Generates "memory" files in `.serena/memories/` with project understanding - Starts language servers (Python, TypeScript, Java, etc.) 2. **During conversation:** - AI asks Serena specific questions like "find_symbol", "get_references" - Serena uses language servers to get exact answers - Only relevant code is sent to AI (not the whole project) - AI has semantic understanding (not just text search) 3. **Automatic optimization:** - Serena caches results - Updates indexes when files change - Manages memory files automatically --- ## ๐Ÿ“‹ Supported Languages **Fully Supported (Auto-configured):** - Python (pylsp) - JavaScript/TypeScript (typescript-language-server) - Rust (rust-analyzer) - Go (gopls) - Java, C#, C++, and 8+ more **Works Best For:** - Large projects (10,000+ lines) - Multi-file codebases with complex relationships - Projects with good structure (not single-file scripts) --- ## ๐Ÿ”ง Installation Guide ### Prerequisites **Required:** - Python 3.10+ (you have 3.13 โœ…) - `uv` package manager (Python's new fast package tool) **Install uv (Windows PowerShell):** ```powershell # Run this command powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex" # Verify installation uv --version ``` **Or via winget:** ```powershell winget install astral-sh.uv ``` --- ## ๐Ÿš€ Quick Setup (Recommended Method) ### Method 1: Direct Run (No Clone Needed) โญ EASIEST This uses `uvx` to run Serena directly from GitHub: **For Claude Desktop:** 1. Open Claude Desktop config: ``` C:\Users\sandr\AppData\Roaming\Claude\claude_desktop_config.json ``` 2. Add Serena entry: ```json { "mcpServers": { "serena": { "command": "uvx", "args": [ "--from", "git+https://github.com/oraios/serena", "serena", "start-mcp-server", "--context", "ide-assistant" ], "env": { "PYTHONUNBUFFERED": "1" } } } } ``` 3. Restart Claude Desktop **completely** (quit from system tray!) 4. Verify: Look for hammer icon ๐Ÿ”จ next to your message box **For Cursor:** 1. Open/create Cursor MCP config: ``` C:\Users\sandr\.cursor\mcp.json ``` 2. Add Serena entry: ```json { "mcpServers": { "serena": { "command": "uvx", "args": [ "--from", "git+https://github.com/oraios/serena", "serena", "start-mcp-server", "--context", "ide-assistant" ] } } } ``` 3. Restart Cursor --- ### Method 2: Clone & Run (More Control) **For Sandra's setup:** ```powershell # Navigate to repos Set-Location "d:\dev\repos" # Clone Serena git clone https://github.com/oraios/serena Set-Location "d:\dev\repos\serena" # Test it works uv run serena start-mcp-server --help ``` **Claude Desktop config:** ```json { "mcpServers": { "serena": { "command": "uv", "args": [ "run", "--directory", "d:\\dev\\repos\\serena", "serena", "start-mcp-server", "--context", "ide-assistant" ], "env": { "PYTHONUNBUFFERED": "1" } } } } ``` --- ## ๐ŸŽฎ Using Serena ### First Time in a Project When you start working on a project, Serena needs to "onboard": **In Claude/Cursor, say:** ``` "Run onboarding for this project" ``` Or just start coding naturally: ``` "Analyze the authentication flow in this project" ``` Serena will: 1. Scan your project structure 2. Create `.serena/memories/` folder 3. Generate memory files (project structure, key components, etc.) 4. Index all code symbols 5. Start language servers **This takes 30 seconds to 2 minutes** depending on project size. ### After Onboarding Serena is ready! It has deep understanding of your code. **What You Can Ask:** **Code Navigation:** ``` "Find all functions that handle user authentication" "Show me where UserService is defined" "Find all references to the authenticate() method" "List all classes in the auth module" ``` **Code Analysis:** ``` "Explain the relationship between UserController and UserService" "What does the payment processing flow look like?" "Find potential security issues in the login code" "Analyze code complexity in the database layer" ``` **Code Editing:** ``` "Add logging to all API endpoints" "Refactor the UserService to use dependency injection" "Fix all TODO comments in the project" "Add error handling to database queries" ``` **Project Understanding:** ``` "What does this project do?" "Where is the main entry point?" "How is authentication implemented?" "Show me the API structure" ``` ### Serena's Tools (What It Can Do) Serena provides these tools to the AI: - `get_symbol_definition` - Get code for a specific symbol - `get_symbol_references` - Find all uses of a symbol - `search_symbols` - Search for symbols by name/pattern - `find_patterns` - Search code by regex pattern - `list_memories` - Show available memory files - `read_memory` - Read a memory file - `read_file` - Read any project file - `replace_lines` - Edit code by line ranges - `replace_symbol_body` - Replace entire function/class - `list_dir` - Browse project structure - `onboarding` - Initialize project understanding - `prepare_for_new_conversation` - Continue with context **You don't call these directly!** The AI decides when to use them. --- ## ๐Ÿ“Š The Dashboard (Very Cool!) Serena runs a **local web dashboard** for monitoring: **Access:** http://localhost:24282/dashboard/index.html **Shows:** - All tool calls Serena makes - Language server status - Project memory files - Token usage estimates - Real-time logs **Auto-opens** when you start Serena (unless disabled) --- ## โš™๏ธ Configuration ### Project Config (.serena/serena_config.yml) After first run, edit `.serena/serena_config.yml` in your project: ```yaml # Ignore certain directories (important!) ignored_dirs: - node_modules - .venv - venv - __pycache__ - dist - build - .git # Read-only mode (no editing) read_only: false # Disable dangerous shell commands disabled_tools: - execute_shell_command # Language-specific settings languages: python: language_server: "pylsp" typescript: language_server: "typescript-language-server" ``` ### Contexts (Behavior Modes) Serena has different "contexts" for different use cases: - `desktop-app` - Default for Claude Desktop - `ide-assistant` - Best for Cursor/IDEs (recommended) - `agent` - For autonomous operation - `planning` - Focus on analysis - `editing` - Optimize for code changes **Set context in config:** ```json "args": [ "serena", "start-mcp-server", "--context", "ide-assistant" ] ``` --- ## ๐Ÿ›ก๏ธ Safety & Best Practices ### Critical Warnings 1. **Backup your work!** Serena can edit code. - Use git: `git add -A && git commit -m "before serena"` 2. **Inspect commands:** When Serena wants to run shell commands, CHECK THEM! 3. **Use read-only mode** if you only want analysis: ```yaml read_only: true ``` 4. **Ignore large folders:** Add to `ignored_dirs` or it will scan forever: ```yaml ignored_dirs: - node_modules - .venv - data - logs ``` ### Known Issues **Serena hangs on startup:** - Usually due to large virtual environments - **Fix:** Add venv folders to `ignored_dirs` - **Fix:** Delete `.serena/` folder and restart **Language server not starting:** - Check Serena dashboard logs - Serena auto-installs servers, but might fail - **Fix:** Manually install (e.g., `pip install python-lsp-server`) **Token limits hit:** - Serena helps but doesn't eliminate limits - **Fix:** Use more focused prompts - **Fix:** Work on smaller modules at a time --- ## ๐Ÿ“ˆ Performance Tips ### Maximize Token Savings 1. **Good project structure:** - Well-organized folders - Clear naming conventions - Serena navigates better = fewer tokens 2. **Use memories:** ``` "Read the memories for this project first" ``` Then ask your question 3. **Specific prompts:** ``` โŒ "Improve this project" โœ… "Refactor the UserService class to use interfaces" ``` 4. **Let Serena prepare:** ``` "Run prepare_for_new_conversation" ``` Before starting new chat ### Speed Up Onboarding - Configure `ignored_dirs` BEFORE first run - Start with smaller modules - Use `.gitignore` (Serena respects it) --- ## ๐Ÿ’ก Real-World Examples ### Example 1: Bug Hunting ``` You: "Find all database queries that don't have error handling" Serena: *searches symbols, analyzes code* Serena: "Found 5 instances in UserRepository, OrderRepository..." You: "Add try-catch blocks to all of them" Serena: *edits files with replace_symbol_body* ``` ### Example 2: Refactoring ``` You: "The UserService class is too large. Split it into UserAuthService and UserProfileService" Serena: *analyzes dependencies, creates new files, updates imports* ``` ### Example 3: Understanding New Project ``` You: "I just inherited this codebase. Explain the architecture" Serena: *reads memories, analyzes structure* Serena: "This is a 3-tier architecture with..." ``` --- ## ๐ŸŽ“ Advanced Usage ### Custom Memory Files You can manually add memory files to `.serena/memories/`: **Example:** `.serena/memories/deployment.md` ```markdown # Deployment Process 1. Run tests: npm test 2. Build: npm run build 3. Deploy: ./deploy.sh production Database migrations run automatically. ``` Serena will read this when relevant! ### Multiple Projects Each project gets its own `.serena/` folder with separate: - Memory files - Index - Configuration You can copy memory files between projects for consistency. ### Integration with Claude Code **Claude Code CLI** has special Serena integration: ```bash claude mcp add serena -- uvx --from git+https://github.com/oraios/serena serena start-mcp-server --context ide-assistant --project $(pwd) ``` This automatically configures Serena for the current directory! --- ## ๐Ÿ”ง Troubleshooting ### Serena Not Showing Up **Check:** 1. Config file syntax is valid JSON 2. You fully restarted the IDE (not just closed window!) 3. Look for hammer icon ๐Ÿ”จ in chat 4. Check IDE logs for MCP errors **Claude Desktop logs:** ``` C:\Users\sandr\AppData\Roaming\Claude\logs\ ``` **Cursor logs:** ``` %APPDATA%\Cursor\logs\ ``` ### Serena Hangs on Startup **Common causes:** - Scanning large `node_modules` or `venv` - Too many files **Fixes:** 1. Add to `.gitignore` (Serena respects it) 2. Configure `ignored_dirs` in `serena_config.yml` 3. Delete `.serena/` and restart ### Commands Not Working **Try:** ``` "Use the onboarding tool" "Use the find_symbol tool to search for UserService" ``` Be explicit about tool names! ### Out of Context Errors Even with Serena, you can hit limits on huge files. **Solutions:** - Work on smaller modules - Split large files - Use focused prompts - Start new conversation with `prepare_for_new_conversation` --- ## ๐Ÿ“ Summary: Serena Cheat Sheet **Installation:** ```powershell # Quick method Add to claude_desktop_config.json: { "serena": { "command": "uvx", "args": ["--from", "git+https://github.com/oraios/serena", "serena", "start-mcp-server", "--context", "ide-assistant"] } } ``` **First Use:** ``` "Run onboarding for this project" ``` **Common Commands:** ``` "Find all functions that..." "Show me where X is defined" "Refactor X to use Y" "Explain the architecture" "Add logging to all endpoints" ``` **Dashboard:** ``` http://localhost:24282/dashboard/index.html ``` **Memory Location:** ``` <your-project>/.serena/memories/ ``` **Config:** ``` <your-project>/.serena/serena_config.yml ``` --- ## ๐ŸŽฏ Is Serena Right for You? **YES, if:** - โœ… Working on medium/large projects (1000+ lines) - โœ… Multi-file codebases with structure - โœ… Want to save tokens/API costs - โœ… Need semantic code understanding - โœ… Projects in Python, JS/TS, Java, Rust, Go **MAYBE NOT, if:** - โŒ Single-file scripts - โŒ Very small projects (<100 lines) - โŒ Just need basic text editing - โŒ Don't want to manage another tool --- ## ๐Ÿ”— Resources - **GitHub:** https://github.com/oraios/serena - **Issues:** https://github.com/oraios/serena/issues - **Changelog:** https://github.com/oraios/serena/releases - **Roadmap:** Check GitHub discussions --- **Built by:** Oraios AI **License:** MIT (Free Open Source) **Status:** Active development, 9.8k+ stars, production-ready --- **Try it!** It's free, open source, and can save you 70% of tokens. What's not to love? ๐Ÿš€

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/sandraschi/notepadpp-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server