Gemini 3 with Mem0 MCP - Mem0
Documentation Index
Fetch the complete documentation index at: /llms.txt
Use this file to discover all available pages before exploring further.
Gemini 3 with Mem0 MCP
Gemini 3, when paired with Mem0’s cloud MCP server, works in synergy to create snappy, smart, memory-aware agents.
This is the primary example of MCP integration - the same patterns work with Claude Desktop, Cursor, or any MCP-compatible client.
MCP Server Tools
The Mem0 MCP server provides these tools to Gemini:
| Tool | Description |
|---|---|
add_memory |
Store new information in memory |
search_memories |
Find relevant memories |
get_memories |
Retrieve specific memories by ID |
get_memory |
Retrieve one memory by its memory_id |
update_memory |
Modify existing memory content |
delete_memory |
Remove specific memories |
delete_all_memories |
Clear all memories for a user |
delete_entities |
Delete all memories related to an entity |
list_entities |
Enumerate users/agents/apps/runs stored |
Setup
Configure Mem0 MCP
Add Mem0 MCP to your MCP client:
npx mcp-add \
--name mem0-mcp \
--type http \
--url "https://mcp.mem0.ai/mcp" \
--clients "claude,claude code,cursor,windsurf,vscode,opencode"
Install dependencies
pip install pydantic-ai nest-asyncio python-dotenv google-genai
Environment Setup
Create a file named .env:
MEM0_API_KEY=m0-xxxxxxxxxxxxxxxxx
GEMINI_API_KEY=your-gemini-api-key-here
Ensure you have your Mem0 API key from the Mem0 Dashboard and your Gemini API key from the Google AI Studio.
Gemini Memory Agent
This example shows how to create a memory-augmented agent using Gemini 3 through an agent loop.
Save this as gemini_agent.py:
import asyncio
import os
from dotenv import load_dotenv
from pydantic_ai import Agent
from pydantic_ai.mcp import MCPServerHTTP
# Load environment variables
load_dotenv()
class MemoryAgent:
def __init__(self, model="gemini-3-pro-preview"):
self.agent = None
self.server = None
self.model = model
self._setup()
def _setup(self):
"""Initialize the agent with MCP tools"""
# Connect to Mem0's cloud MCP server
self.server = MCPServerHTTP(
url="https://mcp.mem0.ai/mcp"
)
# Create agent with Gemini and memory tools
self.agent = Agent(
f"google-gla:{self.model}",
toolsets=[self.server],
system_prompt=(
"You are an assistant with memory capabilities. "
"Automatically remember important details about users, "
"preferences, and facts. Search memories before answering "
"questions about past information."
),
)
print(f"Agent initialized with {self.model}")
async def chat(self, message):
"""Send message and get response"""
async with self.server:
result = await self.agent.run(message)
return result.output
async def interactive_chat(self):
"""Run interactive chat session"""
print("\nMemory Agent Ready! (Type 'quit' to exit)")
while True:
try:
user_input = input("\nYou: ").strip()
if user_input.lower() in ["quit", "exit"]:
print("Goodbye!")
break
if not user_input:
continue
response = await self.chat(user_input)
print(f"\nAgent: {response}")
except KeyboardInterrupt:
print("\nGoodbye!")
break
except Exception as e:
print(f"\nError: {e}")
async def main():
"""Main entry point"""
agent = MemoryAgent()
await agent.interactive_chat()
if __name__ == "__main__":
asyncio.run(main())
Running the Agent
To run the interactive agent:
python gemini_agent.py
Example Interactions
Multi-Tool Capabilities
Shows Gemini generating synthetic data while simultaneously storing and searching in one requestPrompt:
I need player statistics for a basketball team dashboard demo. Generate 5 synthetic player profiles with different positions, ages, and performance metrics, then store all of them. Also check if we have any existing player data in memory.
Response:
I've created and stored 5 synthetic player profiles for your basketball team dashboard demo:
- Marcus Chen (32, Point Guard) - 12.5 PPG, 8.2 APG, 45% FG, 3 seasons with team
- Jamal Williams (28, Center) - 18.7 PPG, 10.5 RPG, 2.3 BPG, rookie season
- Carlos Rodriguez (35, Small Forward) - 15.3 PPG, 6.8 RPG, 38% 3PT, team captain
- Tito Kawaguchi (24, Shooting Guard) - 22.1 PPG, 4.1 APG, 42% 3PT, 6th man of the year candidate
- Viktor Petrov (30, Power Forward) - 14.8 PPG, 9.2 RPG, 52% FG, defensive specialist
I searched for existing player data in your memory but found none. All synthetic player profiles have been stored with appropriate basketball statistics for demo purposes.
Smart Query Generation
Demonstrates how Gemini transforms vague human input into optimal search queriesPrompt:
Anything about my health I should know about?
Response:
Based on your memory history, I searched for health-related information using these queries: "medical", "allergies", "dietary restrictions", "exercise", "wellness", "doctor visits", "health conditions".
**Health Information Found:**
- Allergies: Shellfish allergy
- Dietary preferences: Weekday vegetarian, flexible weekends, dislikes kiwi
- Exercise routine: 5km runs on weekday mornings
- Diet: Oat milk cappuccino with one sugar (monitoring sugar intake recommended)
I don't see any medical conditions or recent doctor visits in your stored information.
Memory Attribution
Shows how Gemini distinguishes between stored memories and general knowledgePrompt:
What's my coffee order again?
Response:
Based on your stored memories, your coffee order is an oat milk cappuccino with one sugar.
This information was retrieved from your memory history where you previously mentioned this preference. I don't have any information about whether you've changed this preference recently.
Conclusion
You’ve successfully built a Gemini 3 agent with persistent memory using Mem0’s MCP server. The agent can now remember user preferences, maintain context across sessions, and provide more personalized interactions.