mem0_mcp_server
An MCP server that provides memory management tools for AI agents, enabling adding, searching, updating, and deleting memories via the Mem0 API.
README
Mem0 MCP Server v2.0
ð§ æºèœå å管çMCPæå¡åš - åºäºTypeScriptå宿¹MCP SDKçäŒäžçº§å®ç°
ð¯ ææ°äŒå (v2.0.1)
åºäºå®æ¹ MCP SDK çå šé¢éæäŒå - 2025幎8æ
æ žå¿æ¹è¿
- â
çšæ·äžäžæèªåšæ³šå
¥: æ¯æ
/mcp/{user_id}è·¯åŸæ ŒåŒïŒæ éæåšäŒ éçšæ·ID - â AsyncLocalStorage éæ: å®ç°çº¿çšå®å šççšæ·äžäžæç®¡ç
- â
宿¹SDKæ åå: å®å
šåºäº
@modelcontextprotocol/sdkéæ - â äŒè¯ç®¡çäŒå: æ¹è¿ StreamableHTTPTransport åå§ååå€çš
- â SOLIDååå®è·µ: åäžè莣ãåŒæŸå°éãäŸèµå眮çååå šé¢åºçš
ææ¯äº®ç¹
# çšæ·äžäžæèªåšæå
POST /mcp/alice # èªåšäœ¿çš user_id="alice"
POST /mcp/bob # èªåšäœ¿çš user_id="bob"
# å·¥å
·è°çšæ éæŸåŒäŒ éuser_id
ð¯ Auto-injecting user_id: alice from AsyncLocalStorage context
æ¶æå级
- ð§ TypeScriptç±»åå®å š: æ·»å 宿Žç±»åæ¯æ
- ð æ§èœäŒå: åå°å åå çšïŒæåå¹¶åå€ç
- ð¡ïž å®å šå¢åŒº: çšæ·IDæ ŒåŒéªè¯ïŒäŒè¯é犻
- ð å¯ç»Žæ€æ§: 代ç å€æåºŠéäœ40%
ð ç®åœ
- åèœç¹æ§
- ç³»ç»æ¶æ
- å¿«éåŒå§
- å·¥å ·è¯Žæ
- APIåè
- éšçœ²æå
- åŒåæå
- æ éæé€
ð¯ åèœç¹æ§
æ žå¿èœå
- â 宿ŽMCPå®ç° - äž¥æ ŒéµåŸªMCP 2025-06-18è§è
- â TypeScriptåç - 100%ç±»åå®å šïŒæºèœä»£ç æç€º
- â 6倧å åå·¥å · - èŠçå å管çå šçåœåšæ
- â å€çç¥æ¯æ - è¯ä¹ãåŸåœ¢ãæ··åçå€ç§æ§è¡çç¥
- â äŒäžçº§è®Ÿè®¡ - ç产就绪ïŒé«å¯çšæ¶æ
ææ¯ç¹ç¹
- ð 髿§èœ - åŒæ¥éé»å¡ïŒæ¯æå¹¶å请æ±
- ð å®å šå¯é - JWTäŒè¯ç®¡çïŒCORSä¿æ€
- ð çµæŽ»éšçœ² - æ¯æstdio/HTTPåæš¡åŒ
- ð å¯è§æµæ§ - å¥åº·æ£æ¥ïŒå®æ¶æ¥å¿
- ð§ æäºæ©å± - æš¡ååè®Ÿè®¡ïŒæä»¶å奜
ðïž ç³»ç»æ¶æ
âââââââââââââââââââââââââââââââââââââââââââââââ
â MCP Client (Claudeç) â
âââââââââââââââ¬ââââââââââââââââââââââââââââââââ
â HTTP/stdio
âââââââââââââââŒââââââââââââââââââââââââââââââââ
â MCP Server (TypeScript) â
â ââââââââââââââââââââââââââââââââââââââââ â
â â Express HTTP Transport Layer â â
â ââââââââââââââââ¬ââââââââââââââââââââââââ â
â ââââââââââââââââŒââââââââââââââââââââââââ â
â â McpServer Core (SDK) â â
â ââââââââââââââââ¬ââââââââââââââââââââââââ â
â ââââââââââââââââŒââââââââââââââââââââââââ â
â â Memory Tools Layer â â
â ââââââââââââââââ¬ââââââââââââââââââââââââ â
âââââââââââââââââââŒââââââââââââââââââââââââââââ
â REST API
âââââââââââââââââââŒââââââââââââââââââââââââââââ
â Mem0 API Server â
â (localhost:8000) â
âââââââââââââââââââââââââââââââââââââââââââââââ
ð å¿«éåŒå§
åçœ®èŠæ±
- Node.js >= 18.0.0
- npm >= 9.0.0
- Mem0 APIæå¡åš (æ¬å°æè¿çš)
å®è£ æ¥éª€
- å é项ç®
git clone <repository-url>
cd mem0_mcp_server
- å®è£ äŸèµ
npm install
- ç¯å¢é 眮
# å建ç¯å¢é
眮æä»¶
cp .env.example .env
# çŒèŸé
眮
nano .env
ç¯å¢åé诎æïŒ
# Mem0 APIé
眮 (å¿
é)
MEM0_API_URL=http://localhost:8000 # Mem0 APIæå¡åšå°å
MEM0_API_KEY=your_api_key # APIå¯é¥(åŠéèŠ)
# MCPæå¡åšé
眮 (å¯é)
MCP_HOST=127.0.0.1 # çå¬å°å
MCP_PORT=8081 # çå¬ç«¯å£
MCP_SESSION_TIMEOUT=3600 # äŒè¯è¶
æ¶(ç§)
MCP_CORS_ORIGINS=* # CORSå
è®žçæº
MCP_DEV_MODE=false # åŒåæš¡åŒ
# Mem0é
眮 (å¯é)
MEM0_ORG_ID=your_org_id # ç»ç»ID
MEM0_PROJECT_ID=your_project_id # 项ç®ID
MEM0_TIMEOUT=30000 # 请æ±è¶
æ¶(毫ç§)
MEM0_MAX_RETRIES=3 # æå€§éè¯æ¬¡æ°
- æå»ºé¡¹ç®
npm run build
- å¯åšæå¡åš
HTTPæš¡åŒ (æšè)
# æ¬å°è®¿é®
npm run start:http
# å±åçœè®¿é®
npm run start:http:external
stdioæš¡åŒ
npm start
éªè¯å®è£
# å¥åº·æ£æ¥
curl http://localhost:8081/health
# 颿èŸåº
{
"status": "healthy",
"server": "mem0-mcp-server",
"version": "2.0.0",
"timestamp": "2025-08-23T05:00:00.000Z",
"activeSessions": 0,
"mem0Api": {
"url": "http://localhost:8000",
"connected": true
}
}
ð ïž å·¥å ·è¯Žæ
1. mem0_add_memory
åèœ: ä»å¯¹è¯äžæåå¹¶æ·»å æ°å å
åæ°:
messages(required): å¯¹è¯æ¶æ¯æ°ç»user_id(required): çšæ·æ è¯ç¬Šenable_graph(optional): å¯çšåŸåœ¢å ³ç³»metadata(optional): éå å æ°æ®infer(optional): èªåšæšçäºå®
瀺äŸ:
{
"messages": [
{"role": "user", "content": "æäžäžªæèŠå»äžäº¬æ
è¡"},
{"role": "assistant", "content": "奜çïŒæè®°äœäº"}
],
"user_id": "alice",
"enable_graph": true,
"metadata": {"category": "travel"}
}
2. mem0_search_memories
åèœ: æºèœæçŽ¢å ååº
åæ°:
query(required): æçŽ¢æ¥è¯¢user_id(required): çšæ·IDstrategy(optional): æçŽ¢çç¥ [semantic|graph|advanced_retrieval|hybrid]top_k(optional): è¿åæ°éthreshold(optional): çžäŒŒåºŠéåŒ
çç¥è¯Žæ:
semantic: åºäºè¯ä¹åéççžäŒŒåºŠæçŽ¢graph: å©çšç¥è¯åŸè°±å ³ç³»æçŽ¢advanced_retrieval: é«çº§æ£çŽ¢äžéæåºhybrid: æ··åå€ç§çç¥çæºèœæçŽ¢
3. mem0_update_memory
åèœ: æŽæ°ç°æå å
æš¡åŒ:
- åäžªæŽæ°: æå®memory_id
- æ¹éæŽæ°: 䜿çšbatch_updatesæ°ç»
4. mem0_delete_memory
åèœ: å é€å åè®°åœ
æš¡åŒ:
- æIDå é€: æå®memory_id
- æçšæ·å é€: æå®user_id
- æ¡ä»¶å é€: 䜿çšfilters
- æ¹éå é€: 䜿çšbatch_deletes
5. mem0_selective_memory
åèœ: åºäºæ¡ä»¶çèåæäœ
æäœç±»å:
add: æ·»å ç¬Šåæ¡ä»¶çå åsearch: æçŽ¢ç¬Šåæ¡ä»¶çå åupdate: æŽæ°ç¬Šåæ¡ä»¶çå ådelete: å é€ç¬Šåæ¡ä»¶çå å
6. mem0_criteria_retrieval
åèœ: é«çº§æ¡ä»¶æ£çŽ¢
ç¹æ§:
- æ¯æå€æçAND/ORæ¡ä»¶ç»å
- å€ç»ŽåºŠè¯åæºå¶
- æºèœç»ææåº
ð¡ APIåè
HTTP端ç¹
| ç«¯ç¹ | æ¹æ³ | æè¿° |
|---|---|---|
/mcp |
POST | MCP请æ±å€ç (éæåšäŒ éuser_id) |
/mcp/{user_id} |
POST | MCP请æ±å€ç (èªåšæ³šå ¥çšæ·äžäžæ) |
/mcp |
GET | SSEäºä»¶æµ |
/mcp/{user_id} |
GET | SSEäºä»¶æµ (çšæ·äžäžæ) |
/mcp |
DELETE | äŒè¯ç»æ¢ |
/mcp/{user_id} |
DELETE | äŒè¯ç»æ¢ (çšæ·äžäžæ) |
/health |
GET | å¥åº·æ£æ¥ |
çšæ·äžäžæèªåšæ³šå ¥
æ°ç¹æ§: éè¿è·¯åŸèªåšæåçšæ·èº«ä»œïŒç®åå·¥å ·è°çš
# äŒ ç»æ¹åŒ - éèŠåšæ¯äžªå·¥å
·è°çšäžäŒ éuser_id
POST /mcp
{
"method": "tools/call",
"params": {
"name": "mem0_search_memories",
"arguments": {
"query": "æçæ
è¡è®¡å",
"user_id": "alice" # å¿
é¡»æåšäŒ é
}
}
}
# äŒåæ¹åŒ - èªåšä»è·¯åŸæåuser_id
POST /mcp/alice
{
"method": "tools/call",
"params": {
"name": "mem0_search_memories",
"arguments": {
"query": "æçæ
è¡è®¡å"
# user_id èªåšæ³šå
¥äžº "alice"
}
}
}
MCPåè®®æ¹æ³
| æ¹æ³ | æè¿° |
|---|---|
initialize |
åå§åäŒè¯ |
tools/list |
ååºå¯çšå·¥å · |
tools/call |
è°çšå·¥å · |
ð¢ éšçœ²æå
Dockeréšçœ²
- æå»ºéå
docker build -t mem0-mcp-server .
- è¿è¡å®¹åš
docker run -d \
--name mem0-mcp \
-p 8081:8081 \
-e MEM0_API_URL=http://host.docker.internal:8000 \
-e MEM0_API_KEY=your_key \
mem0-mcp-server
PM2éšçœ²
# å®è£
PM2
npm install -g pm2
# å¯åšæå¡
pm2 start npm --name "mem0-mcp" -- run start:http:external
# ä¿åé
眮
pm2 save
pm2 startup
systemdæå¡
[Unit]
Description=Mem0 MCP Server
After=network.target
[Service]
Type=simple
User=www-data
WorkingDirectory=/opt/mem0_mcp_server
ExecStart=/usr/bin/node dist/index.js --http --host 0.0.0.0 --port 8081
Restart=on-failure
Environment=MEM0_API_URL=http://localhost:8000
[Install]
WantedBy=multi-user.target
ð» åŒåæå
项ç®ç»æ
mem0_mcp_server/
âââ src/
â âââ index.ts # äž»å
¥å£
â âââ config/
â â âââ index.ts # é
眮管ç
â âââ client/
â â âââ mem0-api.ts # Mem0 API客æ·ç«¯
â âââ tools/
â âââ index.ts # å·¥å
·å®ç°
âââ dist/ # çŒè¯èŸåº
âââ package.json # 项ç®é
眮
âââ tsconfig.json # TypeScripté
眮
âââ README.md # æ¬ææ¡£
åŒååœä»€
# åŒåæš¡åŒ(èªåšé蜜)
npm run dev
# æå»ºé¡¹ç®
npm run build
# è¿è¡æµè¯
npm test
# ä»£ç æ£æ¥
npm run lint
# æ ŒåŒå代ç
npm run format
æ·»å æ°å·¥å ·
- åš
src/tools/index.tsäžæ·»å å·¥å ·æ¹æ³ - åš
src/index.tsäžæ³šåå·¥å · - æŽæ°æ¬READMEçå·¥å ·è¯Žæ
ð§ MCP客æ·ç«¯é 眮
Claude Desktop
çŒèŸ claude_desktop_config.json:
{
"mcpServers": {
"mem0": {
"transport": "http",
"endpoint": "http://localhost:8081/mcp",
"env": {
"MEM0_API_KEY": "your_api_key"
}
}
}
}
å ¶ä»MCP客æ·ç«¯
{
"servers": [
{
"name": "mem0",
"type": "http",
"url": "http://localhost:8081/mcp",
"headers": {
"Authorization": "Token your_api_key"
}
}
]
}
â æ éæé€
åžžè§é®é¢
Q: æ æ³è¿æ¥å°Mem0 API
# æ£æ¥Mem0æå¡ç¶æ
curl http://localhost:8000/health
# éªè¯APIå¯é¥
curl -H "Authorization: Token YOUR_KEY" http://localhost:8000/v1/memories/
Q: äŒè¯IDæ æ
- ç¡®ä¿å®¢æ·ç«¯æ£ç¡®å€çmcp-session-id header
- æ£æ¥äŒè¯è¶ æ¶è®Ÿçœ®
Q: CORSé误
- 讟眮
MCP_CORS_ORIGINS=*å è®žæææº - ææå®å ·äœçå 讞æº
Q: 端å£å·²å çš
# æ¥æŸå çšç«¯å£çè¿çš
lsof -i :8081
# æäœ¿çšå
¶ä»ç«¯å£
npm run start:http -- --port 8082
æ¥å¿è°è¯
# å¯çšè°è¯æ¥å¿
MCP_DEV_MODE=true npm run start:http
# æ¥ç宿¶æ¥å¿
tail -f logs/mcp-server.log
ð æ§èœäŒå
- è¿æ¥æ± : Mem0客æ·ç«¯äœ¿çšæä¹ è¿æ¥
- éè¯æºå¶: ææ°éé¿ç®æ³
- è¶ æ¶æ§å¶: å¯é 眮ç请æ±è¶ æ¶
- å¹¶åéå¶: 鲿¢èµæºèå°œ
ð å®å šå»ºè®®
-
ç产ç¯å¢:
- 䜿çšHTTPS
- å¯çšè®€è¯
- éå¶CORSæº
- é 眮é²ç«å¢
-
APIå¯é¥:
- 䜿çšç¯å¢åé
- å®æèœ®æ¢
- éå¶æéèåŽ
-
çœç»:
- 䜿çšç§æçœç»
- é 眮VPN访é®
- çæ§åŒåžžæµé
ð€ èŽ¡ç®æå
欢è¿èŽ¡ç®ä»£ç ãæ¥åé®é¢ææåºå»ºè®®ïŒ
- Fork项ç®
- åå»ºç¹æ§åæ¯
- æäº€åæŽ
- æšéå°åæ¯
- å建Pull Request
ð 讞å¯è¯
MIT License - è¯Šè§ LICENSE æä»¶
ð çžå ³éŸæ¥
ð¡ æç€º: éå°é®é¢ïŒæ¥çæ éæé€ææäº€Issue
â åŠæè¿äžªé¡¹ç®å¯¹äœ æåž®å©ïŒè¯·ç»æä»¬äžäžªStarïŒ
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.