‍ Mem0 MCP - Personalized Code Reviewer

Use Agno's MCP integration together with Mem0, to build a personalized code reviewer.

The source excerpt targets an older local Mem0 SSE server. Its linked server repository is archived. Apply the hosted Mem0 configuration below before running it.

mem0.py
"""
‍ Mem0 MCP - Personalized Code Reviewer

This example demonstrates how to use Agno's MCP integration together with Mem0, to build a personalized code reviewer.

- Run your Mem0 MCP server. Full instructions: https://github.com/mem0ai/mem0-mcp
- Run: `uv pip install agno mcp` to install the dependencies
"""

import asyncio
from textwrap import dedent

from agno.agent import Agent
from agno.models.openai import OpenAIChat
from agno.tools.mcp import MCPTools

# ---------------------------------------------------------------------------
# Create Agent
# ---------------------------------------------------------------------------


mcp_server_url = "http://localhost:8080/sse"


async def run_agent(message: str) -> None:
    async with MCPTools(url=mcp_server_url, transport="sse") as mcp_tools:
        agent = Agent(
            tools=[mcp_tools],
            model=OpenAIChat(id="o4-mini"),
            instructions=dedent(
                """
                You are a professional code reviewer. You help users keep their code clean and on line with their preferences.
                You have access to some tools to keep track of coding preferences you need to enforce when reviewing code.
                You will be given a code snippet and you need to review it and provide feedback on it.
                """
            ),
        )
        await agent.aprint_response(message, stream=True)


# ---------------------------------------------------------------------------
# Run Agent
# ---------------------------------------------------------------------------

if __name__ == "__main__":
    # The agent will use mem0 memory to keep track of the user's preferences.
    asyncio.run(
        run_agent(
            "When possible, use the walrus operator to make the code more readable."
        )
    )
    # The agent will review your code and propose improvements based on your preferences.
    asyncio.run(
        run_agent(
            dedent(
                """
Please, review this Python snippet:

```python
def process_data(data):
    length = len(data)
    if length > 10:
        print(f"Processing {length} items")
        return data[:10]
    return data

# Example usage
items = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
result = process_data(items)
```
"""
            )
        )
    )

Run the Example

Set up your virtual environment

uv venv --python 3.12
source .venv/bin/activate

Install dependencies

uv pip install -U "agno[mcp]" openai

Export your OpenAI API key

export OPENAI_API_KEY="your_openai_api_key_here"

Configure hosted Mem0

Create a Mem0 account and obtain a key from its dashboard. The current Mem0 MCP guide documents its hosted endpoint and bearer authentication.

export MEM0_API_KEY="your_mem0_api_key"

Add from os import environ to the saved file, change mcp_server_url to "https://mcp.mem0.ai/mcp", and replace the context-manager declaration with:

async with MCPTools(
    url=mcp_server_url,
    transport="streamable-http",
    headers={"Authorization": f"Bearer {environ['MEM0_API_KEY']}"},
) as mcp_tools:
    ...  # Keep the existing Agent and aprint_response calls inside this block.

Use the same user identifier in both memory-writing and memory-searching requests, for example code-review-demo. Include that identifier in the agent's instructions and ask it to pass it to Mem0's tools. Confirm the stored preference in your Mem0 dashboard before testing the second request.

Run the example

Save the code above as mem0.py, then run:

python mem0.py

Full source: cookbook/91_tools/mcp/mem0.py