home / skills / mamba-mental / agent-skill-manager / serena-mcp-agent-skill

serena-mcp-agent-skill skill

/skills/serena-mcp-agent-skill

This skill helps you integrate and orchestrate Serena MCP-powered coding workflows, enabling semantic navigation, surgical edits, and memory management across

npx playbooks add skill mamba-mental/agent-skill-manager --skill serena-mcp-agent-skill

Review the files below or copy the command above to add this skill to your agents.

Files (5)
SKILL.md
6.4 KB
---
name: serena-mcp-agent
description: Expert integration for the Serena MCP Server - a powerful coding agent toolkit providing IDE-like semantic code understanding to LLMs. This skill should be used when working with codebases through Serena tools, setting up Serena projects, performing semantic code navigation and editing, managing project memories, debugging complex automation workflows, or integrating Serena with Claude Desktop, Claude Code, Codex, ChatGPT, or custom agents. Triggers on Serena tool usage, project activation/onboarding, symbolic code operations (find_symbol, replace_symbol_body, etc.), memory management (write_memory, read_memory), and MCP server configuration. Use for large/complex codebases requiring structural understanding, refactoring tasks, and token-efficient code operations.
---

# Serena MCP Agent Integration

Serena transforms LLMs into fully-featured coding agents with IDE-like intelligence by leveraging the Language Server Protocol (LSP) for structural code understanding.

## Core Value Proposition

| Capability | Benefit |
|------------|---------|
| Semantic code retrieval | Navigate by symbols, not text - 30x+ token reduction |
| Surgical editing | Modify function bodies while preserving structure |
| Project memory | Persist knowledge across sessions in `.serena/memories/` |
| Multi-client support | Claude Desktop, Claude Code, Codex, ChatGPT, custom agents |

## Project Lifecycle

### 1. Activation

Activate project before any operations:
```
"Activate the project /path/to/my_project"
```

First-time activation creates `.serena/project.yml` with default settings.

### 2. Onboarding

Run automatically on first session. Creates memories in `.serena/memories/`:
- `tech_stack_and_dependencies.md`
- `code_style_and_conventions.md`
- `task_completion_guidelines.md`

If not auto-triggered:
```
"Start the Serena onboarding process for this project."
```

**Critical:** Start NEW conversation after onboarding (context fills up during analysis).

### 3. Indexing (Large Projects)

Pre-index to prevent tool timeouts:
```bash
serena project index
```

Run once; auto-updates during use.

## Tool Usage Strategy

**Priority Order (Prefer Higher):**

1. **Symbolic tools** - Most efficient, LSP-powered
   - `get_symbols_overview` → File structure without reading content
   - `find_symbol` → Locate definitions precisely
   - `find_referencing_symbols` → Impact analysis before changes
   - `replace_symbol_body` → Rewrite functions safely

2. **Line-based tools** - When symbols don't apply
   - `replace_lines`, `insert_at_line`, `delete_lines`

3. **Full file operations** - Last resort
   - `read_file`, `create_text_file`

**See:** `references/tools-reference.md` for complete tool taxonomy.

## Memory Management

Persist knowledge in `.serena/memories/`:

| Tool | Purpose |
|------|---------|
| `write_memory` | Save contracts, schemas, progress |
| `read_memory` | Load prior session context |
| `list_memories` | Discover available memories |
| `prepare_for_new_conversation` | Generate continuation summary |
| `summarize_changes` | Document session work |

**Pattern:** End sessions with `summarize_changes` → `write_memory`.

## Thinking Tools

Force self-reflection during complex operations:

| Tool | When to Use |
|------|-------------|
| `think_about_collected_information` | Before implementing |
| `think_about_task_adherence` | During long operations |
| `think_about_whether_you_are_done` | Before declaring complete |

## Client Configuration

**Claude Desktop:** Edit `claude_desktop_config.json`
```json
{
  "mcpServers": {
    "serena": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/oraios/serena",
               "serena", "start-mcp-server", "--context", "desktop-app"]
    }
  }
}
```

**Claude Code:** From project directory:
```bash
claude mcp add serena -- uvx --from git+https://github.com/oraios/serena \
  serena start-mcp-server --context ide-assistant --project "$(pwd)"
```

**See:** `references/client-setup.md` for Codex, ChatGPT, Docker, etc.

## Contexts and Modes

**Contexts** (set at startup, immutable):
- `desktop-app` - Claude Desktop (full toolset)
- `claude-code` - Claude Code (no duplicates)
- `ide-assistant` - IDE extensions (minimal tools)
- `codex` - OpenAI Codex
- `chatgpt` - ChatGPT via MCPO

**Modes** (combinable, switchable):
- `editing` + `interactive` - Standard development (default)
- `planning` - Analysis before implementation
- `one-shot` - Single-response tasks
- `no-onboarding` - Skip if memories exist

Switch dynamically: "Switch to planning mode"

**See:** `references/contexts-and-modes.md` for full reference.

## Security Configuration

In `.serena/project.yml`:
```yaml
read_only: true  # Disable all editing (analysis only)
excluded_tools:
  - execute_shell_command  # Always disable for untrusted contexts
```

**Non-negotiables:**
1. Use version control (Git) for all projects
2. Disable `execute_shell_command` unless explicitly needed
3. Set `read_only: true` for code review/analysis tasks
4. Never expose MCPO API keys

## Debugging Framework

For complex automation workflows (n8n, Zapier, etc.):

1. **Behavior Contract** - Document expected behavior before changes
2. **Snapshot Before** - Capture current state
3. **Parity Grid** - Map contract → current → fix required
4. **Dry-Run** - Validate changes before applying
5. **Apply + Validate** - Execute with proof
6. **Memory Harden** - Persist final state

**See:** `references/debugging-framework.md` for canonical prompts and workflow.

## Session Protocol

**Start:**
1. Verify project activation: `get_current_config`
2. Check onboarding: `check_onboarding_performed`
3. Load relevant memories: `list_memories` → `read_memory`
4. Run build/type-check command (establish baseline)

**During:**
- Read files BEFORE editing (prevent duplicates)
- Use symbolic tools preferentially
- Run validation after each change
- Use thinking tools for complex tasks

**End:**
1. Final validation (build/lint/test)
2. `summarize_changes` → `write_memory`
3. For continuation: `prepare_for_new_conversation`

## When to Use Serena

**Optimal:**
- Large/complex/legacy codebases
- Refactoring across multiple files
- Analyzing dependencies and architecture
- Token-sensitive operations

**Not Needed:**
- New empty projects (nothing to analyze)
- Single-file scripts
- When entire context fits easily

## Dashboard

Monitor operations at: `http://localhost:24282/dashboard/index.html`

View: tool calls, logs, configuration, active languages.

Overview

This skill integrates Serena MCP Server capabilities into AI coding agents to provide IDE-like semantic code understanding and surgical editing. It streamlines large-project workflows by enabling symbol-aware navigation, safe function rewrites, persistent project memories, and multi-client support. Use it to manage project activation, onboarding, indexing, and MCP configuration for token-efficient coding operations.

How this skill works

The skill talks to the Serena MCP server and exposes LSP-powered symbolic tools that operate on symbols instead of raw text, dramatically reducing token usage. It runs project activation and onboarding, manages project memories in .serena/memories/, and performs operations such as find_symbol, replace_symbol_body, and find_referencing_symbols. It also supports client configuration for Claude Desktop, Claude Code, Codex, ChatGPT, and custom agents, and provides debugging and session protocols for safe changes.

When to use it

  • Working with large, legacy, or multi-module codebases where structural understanding matters
  • Refactoring across files or performing surgical edits to function or class bodies
  • Preparing or running Serena onboarding and project activation
  • Managing persistent project knowledge (contracts, schemas, progress) across sessions
  • Debugging complex automation workflows (n8n, Zapier) with snapshots and dry-runs

Best practices

  • Always activate the project before running symbolic or file operations
  • Prefer symbolic tools (get_symbols_overview, find_symbol, replace_symbol_body) to minimize tokens
  • Pre-index very large projects with serena project index to avoid timeouts
  • Read files or symbols before editing and run build/type-check after changes
  • End sessions with summarize_changes and write_memory to persist outcomes

Example use cases

  • Locate a function definition and rewrite only its body while preserving AST structure
  • Generate a project summary and write it to memory for future sessions
  • Index a monorepo, run cross-file refactors, and validate with tests
  • Configure Claude Desktop or Claude Code to use the local Serena MCP server
  • Debug an automation workflow using snapshots, parity grids, and dry-run validation

FAQ

Do I need to index the project before using Serena?

Indexing is recommended for very large projects to prevent tool timeouts; run serena project index once and Serena will auto-update as needed.

How do memories work and when should I write them?

Memories are stored under .serena/memories/. Use summarize_changes then write_memory at session end to persist decisions, contracts, and progress for future conversations.