Mocha-s/mem0_mcp_server
If you are the rightful owner of mem0_mcp_server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
The Mem0 MCP Server is a service-oriented hybrid architecture designed to implement the MCP 2025-06-18 specification, supporting Streamable HTTP transmission.
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 - è¯Šè§ æä»¶
ð çžå ³éŸæ¥
ð¡ æç€º: éå°é®é¢ïŒæ¥çæ éæé€ææäº€Issue
â åŠæè¿äžªé¡¹ç®å¯¹äœ æåž®å©ïŒè¯·ç»æä»¬äžäžªStarïŒ