Custom Agents with Serena

Custom Agents with Serena#

As a reference implementation, we provide an integration with the Agno agent framework. Agno is a model-agnostic agent framework that allows you to turn Serena into an agent (independent of the MCP technology) with a large number of underlying LLMs. While Agno has recently added support for MCP servers out of the box, our Agno integration predates this and is a good illustration of how easy it is to integrate Serena into an arbitrary agent framework.

Here’s how it works:

  1. Download the agent-ui code with npx

    npx create-agent-ui@latest
    

    or, alternatively, clone it manually:

    git clone https://github.com/agno-agi/agent-ui.git
    cd agent-ui 
    pnpm install 
    pnpm dev
    
  2. Install serena with the optional requirements:

    # You can also only select agno,google or agno,anthropic instead of all-extras
    uv pip install --all-extras -r pyproject.toml -e .
    
  3. Copy .env.example to .env and fill in the API keys for the provider(s) you intend to use.

  4. Start the agno agent app with

    uv run python scripts/agno_agent.py
    

    By default, the script uses Claude as the model, but you can choose any model supported by Agno (which is essentially any existing model).

  5. In a new terminal, start the agno UI with

    cd agent-ui 
    pnpm dev
    

    Connect the UI to the agent you started above and start chatting. You will have the same tools as in the MCP server version.

Here is a short demo of Serena performing a small analysis task with the newest Gemini model:

user-attachments/assets

⚠️ IMPORTANT: In contrast to the MCP server approach, tool execution in the Agno UI does not ask for the user’s permission. The shell tool is particularly critical, as it can perform arbitrary code execution. While we have never encountered any issues with this in our testing with Claude, allowing this may not be entirely safe. You may choose to disable certain tools for your setup in your Serena project’s configuration file (.yml).

Other Agent Frameworks#

It should be straightforward to incorporate Serena into any agent framework (like pydantic-ai, langgraph or others). Typically, you need only to write an adapter for Serena’s tools to the tool representation in the framework of your choice, as was done by us for Agno with SerenaAgnoToolkit (see /src/serena/agno.py).