mem0-open-mcp
Open-source MCP server for mem0 that enables memory storage and retrieval using local LLMs, self-hosted, and Docker-free.
README
mem0-open-mcp
Open-source MCP server for mem0 — local LLMs, self-hosted, Docker-free.
Created because the official mem0-mcp configuration wasn't working properly for my setup.
Features
- Local LLMs: Ollama (recommended), LMStudio*, or any OpenAI-compatible API
- Self-hosted: Your data stays on your infrastructure
- Docker-free: Simple
pip install+ CLI - Flexible: YAML config with environment variable support
- Multiple Vector Stores: Qdrant, Chroma, Pinecone, and more
*LMStudio requires JSON mode compatible models
Quick Start
Installation
pip install mem0-open-mcp
Or install from source:
git clone https://github.com/wonseoko/mem0-open-mcp.git
cd mem0-open-mcp
pip install -e .
Usage
# Create default config
mem0-open-mcp init
# Interactive configuration wizard
mem0-open-mcp configure
# Test configuration (recommended for initial setup)
mem0-open-mcp test
# Start the server
mem0-open-mcp serve
# With options
mem0-open-mcp serve --port 8765 --user-id alice
The test command verifies your configuration without starting the server:
- Checks Vector Store, LLM, and Embedder connections
- Performs actual memory add/search operations
- Cleans up test data automatically
Modes
stdio Mode (for mcp-proxy or Claude Desktop)
Run the server in stdio mode when integrating with mcp-proxy or Claude Desktop:
mem0-open-mcp stdio
mem0-open-mcp stdio --config ./config.yaml
Use this mode when:
- Running via mcp-proxy
- Claude Desktop subprocess integration
- Process spawns on demand
- Performance: Optimized for v0.2.1+ with lightweight manager startup
serve Mode (HTTP/SSE server)
Run a persistent HTTP server for remote access or multiple concurrent clients:
mem0-open-mcp serve --port 8765
Use this mode when:
- Remote access needed
- Multiple concurrent clients
- Always-on server preferred
- Custom port configuration required
mcp-proxy Integration
Use mcp-proxy to route MCP protocol between tools and Claude Desktop. Configure your mcp-servers.json:
{
"mcpServers": {
"mem0": {
"command": "mem0-open-mcp",
"args": ["stdio"]
}
}
}
Or with a custom config:
{
"mcpServers": {
"mem0": {
"command": "mem0-open-mcp",
"args": ["stdio", "--config", "/path/to/config.yaml"]
}
}
}
The stdio mode communicates via stdin/stdout, making it ideal for process-spawned integrations.
Update Command
Keep mem0-open-mcp up to date with the self-update feature:
# Check for available updates
mem0-open-mcp update --check
# Force update to latest version
mem0-open-mcp update --force
# Update and exit on success
mem0-open-mcp update
Options:
--check: Only check for available updates without installing--force: Force reinstall even if already at latest version
Configuration
Create mem0-open-mcp.yaml:
server:
host: "0.0.0.0"
port: 8765
user_id: "default"
llm:
provider: "ollama"
config:
model: "llama3.2"
base_url: "http://localhost:11434"
embedder:
provider: "ollama"
config:
model: "nomic-embed-text"
base_url: "http://localhost:11434"
embedding_dims: 768
vector_store:
provider: "qdrant"
config:
collection_name: "mem0_memories"
host: "localhost"
port: 6333
embedding_model_dims: 768
With LMStudio
⚠️ Note: LMStudio requires a model that supports
response_format: json_object. mem0 uses structured JSON output for memory extraction. If you getresponse_formaterrors, use Ollama instead or select a model with JSON mode support in LMStudio.
llm:
provider: "openai"
config:
model: "your-model-name"
base_url: "http://localhost:1234/v1"
embedder:
provider: "openai"
config:
model: "your-embedding-model"
base_url: "http://localhost:1234/v1"
MCP Integration
Connect your MCP client to:
http://localhost:8765/mcp/<client-name>/sse/<user-id>
Claude Desktop
{
"mcpServers": {
"mem0": {
"url": "http://localhost:8765/mcp/claude/sse/default"
}
}
}
Available MCP Tools
| Tool | Description |
|---|---|
add_memories |
Store new memories from text |
search_memory |
Search memories by query |
list_memories |
List all user memories |
get_memory |
Get a specific memory by ID |
delete_memories |
Delete memories by IDs |
delete_all_memories |
Delete all user memories |
API Endpoints
| Endpoint | Method | Description |
|---|---|---|
/health |
GET | Health check |
/api/v1/status |
GET | Server status |
/api/v1/config |
GET/PUT | Configuration |
/api/v1/memories |
GET/POST/DELETE | Memory operations |
/api/v1/memories/search |
POST | Search memories |
Requirements
- Python 3.10+
- Vector store (Qdrant recommended)
- LLM server (Ollama, LMStudio, etc.)
Performance Optimizations
stdio Mode Optimizations (v0.2.1+)
The stdio mode is optimized for performance:
- Lightweight Manager: Reduced startup overhead compared to HTTP server
- On-Demand Spawning: Process spawns only when needed for MCP requests
- No Server Overhead: Eliminates HTTP/SSE connection management
- Ideal for Claude Desktop: Minimal resource footprint when integrated via mcp-proxy
Use stdio mode for optimal performance in Claude Desktop or mcp-proxy integrations.
Performance Tips
- Use Qdrant vector store for best performance (recommended)
- Keep embedding dimensions consistent (768 or 1536)
- For large memory operations, increase vector store batch size in configuration
- Monitor Ollama performance with local models (llama3.2 recommended for speed)
Graph Store (Experimental)
Graph store enables knowledge graph capabilities for relationship extraction between entities.
Configuration
graph_store:
provider: "neo4j"
config:
url: "bolt://localhost:7687"
username: "neo4j"
password: "your-password"
Installation
pip install mem0-open-mcp[neo4j]
# or
pip install mem0-open-mcp[kuzu]
Limitations
⚠️ Important: Graph store requires LLMs with proper tool calling support.
- OpenAI models: Full support (recommended for graph store)
- Ollama models: Limited support - most models (llama3.2, llama3.1) do not follow tool schemas accurately, resulting in empty graph relations
If you need graph capabilities with local LLMs, consider using the
graph_store.llmsetting to specify a different LLM provider for graph operations only.
# Example: Use OpenAI for graph, Ollama for everything else
llm:
provider: "ollama"
config:
model: "llama3.2"
graph_store:
provider: "neo4j"
config:
url: "bolt://localhost:7687"
username: "neo4j"
password: "password"
llm:
provider: "openai"
config:
model: "gpt-4o-mini"
License
Apache 2.0
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。