Content
# mem0-mcp-server
MCP server exposing Mem0 v2 API for AI agents to store, retrieve, and search long-term memories using semantic search through the standardized MCP protocol.
## Overview
Mem0-MCP Server is a self-hosted MCP (Model Context Protocol) server that bridges AI agents with persistent memory storage. It enables intelligent context retention across conversations and sessions using Mem0's AsyncMemory API.
**Key Features:**
- MCP Protocol Integration - Exposes Mem0 functionality via MCP tools
- Semantic Memory Search - Similarity-based memory retrieval with vector search
- Multi-Tenant Isolation - User/Agent/Session scoped memory isolation
- Flexible Transport - stdio for local agents, SSE for remote connections
- Configuration Management - Pydantic-based validation with environment variable support
## Documentation
| Section | Description |
|---------|-------------|
| [API Reference](./doc/api/) | Complete API documentation for all modules and tools |
| [Pattern Guides](./doc/patterns/) | Design pattern documentation (Singleton, Repository, etc.) |
| [Usage Examples](./doc/examples/) | Getting started and advanced usage guides |
| [Deployment](./doc/deployment/docker-compose.md) | Docker Compose configuration and service details |
| [Architecture](./doc/architecture/) | System architecture and component interactions |
## Quick Start
### Installation
```bash
# Clone and install
git clone https://github.com/your-org/mem0-mcp-server.git
cd mem0-mcp-server
uv sync
# Set environment variables
export OPENAI_API_KEY="your-api-key"
```
### Configuration
Create `~/.config/mem0-mcp-server/settings.json`:
```json
{
"vector_store": {
"provider": "redis",
"config": {
"redis_url": "redis://localhost:6379"
}
},
"llm": {
"provider": "openai",
"config": {
"model": "gpt-4o"
}
},
"embedder": {
"provider": "openai",
"config": {
"model": "text-embedding-3-small"
}
}
}
```
### Running the Server
```bash
# SSE Transport (remote connections)
uv run python -m mcp_server.main
# stdio Transport (local AI agents)
export MCP_TRANSPORT=stdio
uv run python -m mcp_server.main
```
### OpenCode Configuration
In `~/config/opencode/opencode.json`
### OpenCode Configuration
In `~/config/opencode/opencode.json`
```json
"mcp": {
"mem0": {
"type": "remote",
"enabled": true,
"url": "http://localhost:8050/sse"
}
}
```
## MCP Tools
| Tool | Description |
|------|-------------|
| `add_memory` | Store information in long-term memory with semantic indexing |
| `search_memories` | Search memories using semantic similarity |
| `get_memory` | Retrieve specific memory by ID |
| `update_memory` | Update existing memory content |
| `delete_memory` | Remove memory from storage |
| `list_memories` | List memories with filtering and pagination |
## Usage Example
```python
# Add memory
result = await client.call_tool("add_memory", {
"messages": [{"role": "user", "content": "I prefer dark mode"}],
"user_id": "alice"
})
# Search memories
result = await client.call_tool("search_memories", {
"query": "theme preferences",
"filters": {"user_id": "alice"},
"limit": 5
})
```
## Architecture
```
AI Agent → FastMCP Server → MemoryManager → Mem0 AsyncMemory → Redis
│ │
├── SafeLogger (stdout/stderr) │
├── Transport (stdio/SSE) │
└── Config (Pydantic validation) │
```
**Components:**
- **COMP-1**: ConfigLoader - Configuration loading and validation
- **COMP-2**: FastMCP Server - MCP protocol server
- **COMP-3**: MemoryManager - Memory operations with multi-tenant isolation
- **COMP-4**: MCP Tools - Tool definitions
- **COMP-5**: SafeLogger - Output stream separation
## Configuration
### Parameter Precedence
Configuration values are resolved in order:
1. Tool parameters (direct)
2. Environment variables (with MCP_ prefix)
3. Config file values
4. Hardcoded defaults
### Environment Variables
| Variable | Default | Description |
|----------|---------|-------------|
| `OPENAI_API_KEY` | (required) | OpenAI API key for LLM |
| `MCP_TRANSPORT` | `sse` | Transport type (stdio, sse) |
| `MCP_HOST` | `0.0.0.0` | Server bind address |
| `MCP_PORT` | `8080` | Server bind port |
## Deployment
### Docker
```bash
# Using docker-compose
docker-compose up -d
# Using Makefile
make docker-up # Start services with docker compose
make docker-down # Stop services
make docker-logs # Show logs
```
**Services:**
| Service | Description |
|---------|-------------|
| `mem0-mcp` | MCP server exposing Mem0 API on port 8050 |
| `ollama-qwen3-embedding` | Ollama with `qwen3-embedding:8b` for vector embeddings (port 11434) |
| `ollama-qwen` | Ollama with `qwen2.5:7b` for chat completions (port 11435) |
See [Deployment → Docker](./doc/deployment/docker-compose.md) for detailed configuration.
### Kubernetes
```bash
# Using Helm chart
helm install mem0-mcp ./charts/mem0-mcp-server
```
## Development
| Command | Description |
|---------|-------------|
| `make install` | Install dependencies with uv |
| `make lint` | Lint code with ruff |
| `make lint-fix` | Auto-fix linting issues |
| `make typecheck` | Type check with pyright |
| `make test` | Run all tests |
| `make test-unit` | Run unit tests only |
| `make test-coverage` | Run tests with coverage report |
| `make build` | Build Docker image |
| `make run` | Run development server |
Run multiple commands: `make install && make lint && make typecheck && make test`
See [`Makefile`](./Makefile) for all available commands including Docker management (`docker-up`, `docker-down`, `docker-logs`, etc.).
## Project Structure
```
mem0-mcp/
├── src/mcp_server/
│ ├── __init__.py # FastMCP singleton
│ ├── lifespan.py # Resource lifecycle
│ ├── transport.py # Transport selection
│ ├── memory/
│ │ ├── manager.py # MemoryManager
│ │ └── lifespan.py # AsyncMemory lifecycle
│ ├── config/
│ │ ├── settings.py # Pydantic models
│ │ └── loader.py # Config file loading
│ ├── tools/
│ │ ├── add_memory.py
│ │ ├── search_memories.py
│ │ └── ...
│ └── utils/
│ └── safe_logger.py # Output separation
├── doc/
│ ├── api/ # API reference
│ ├── patterns/ # Pattern guides
│ ├── examples/ # Usage examples
│ └── architecture/ # Architecture docs
├── tests/
├── Makefile
├── Dockerfile
└── docker-compose.yml
```
## License
MIT License
Connection Info
You Might Also Like
talebook
Enhanced & Easy-to-use personal e-books management webserver (PoxenStudio/Talebook)
Seedream_MCP
Seedream MCP(即梦生图MCP)
pdffigures-mcp-server
Extract figures and tables from PDF documents using this FastAPI-based...
ai-native-pm-os
The exhaustive guide to mastering Claude for Product Managers. Build your...
ai-orchestrator
Portable multi-agent AI developer setup for Claude Code + Ollama. Role-based...
vnstock-agent
MCP server and CLI for Vietnamese stock market data (vnstock)