ZeroDB Agent Memory MCP Server
Enables sending Slack messages to channels or threads using stored OAuth tokens.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ZeroDB Agent Memory MCP ServerSearch my memories for the user's communication preferences"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
ZeroDB Agent Memory MCP Server
Persistent Memory for AI Agents
Optimized MCP server providing 14 tools for agent memory management, context synthesis, auto-context middleware, and write-back actions to external services.
Why This MCP?
Before: Monolithic server with 77 tools consuming 10,400+ tokens After: Focused server with 14 tools consuming ~1,400 tokens Result: 87% reduction in context footprint, faster agent decisions, better accuracy
Related MCP server: BuildAutomata Memory MCP Server
Key Features
Smart Context Management
Automatic token limiting - Never exceed LLM context windows
Intelligent pruning - Keep important and recent memories
Memory decay - Old memories naturally fade over time
Importance scoring - Automatically rank memory significance
Semantic Memory
Vector embeddings - BAAI BGE models (384, 768, 1024 dimensions)
Semantic search - Find by meaning, not just keywords
Cross-session memory - Remember across conversations
Auto-embedding - No manual embedding required
Universal Compatibility
ZeroLocal - localhost:8000 (fast, free, private)
ZeroDB Cloud - api.ainative.studio (scalable, managed)
Auto-detection - Automatically finds available endpoint
Installation
# Clone repository
git clone https://github.com/ainative/zerodb-memory-mcp.git
cd zerodb-memory-mcp
# Install dependencies
npm install
# Configure environment
cp .env.example .env
# Edit .env with your credentials
# Test locally
npm startConfiguration
Credentials
# Recommended: API key auth (no login needed)
ZERODB_API_KEY=sk_xxx
ZERODB_API_URL=https://api.ainative.studio
ZERODB_PROJECT_ID=your-project-id
# OR username/password auth:
ZERODB_USERNAME=your@email.com
ZERODB_PASSWORD=your-password
ZERODB_API_URL=https://api.ainative.studio
ZERODB_PROJECT_ID=your-project-idTip: API key authentication (
ZERODB_API_KEY) is preferred over username/password. It avoids token expiry issues and is not affected by shell environment variable conflicts.
Option 1: Environment Variables
export ZERODB_API_URL="http://localhost:8000" # or cloud URL
export ZERODB_API_KEY="sk_your-api-key" # recommended
export ZERODB_PROJECT_ID="your-project-id"Option 2: Claude Desktop Config
{
"mcpServers": {
"zerodb-memory": {
"command": "node",
"args": ["/path/to/zerodb-memory-mcp/index.js"],
"env": {
"ZERODB_API_URL": "http://localhost:8000",
"ZERODB_USERNAME": "your-username",
"ZERODB_PASSWORD": "your-password",
"ZERODB_PROJECT_ID": "your-project-id"
}
}
}
}Option 3: Use Both Local and Cloud
{
"mcpServers": {
"zerodb-local": {
"command": "node",
"args": ["/path/to/zerodb-memory-mcp/index.js"],
"env": {
"ZERODB_API_URL": "http://localhost:8000",
"ZERODB_USERNAME": "your-local-username",
"ZERODB_PASSWORD": "your-local-password",
"ZERODB_PROJECT_ID": "your-local-project-id"
}
},
"zerodb-cloud": {
"command": "node",
"args": ["/path/to/zerodb-memory-mcp/index.js"],
"env": {
"ZERODB_API_URL": "https://api.ainative.studio",
"ZERODB_USERNAME": "your-cloud-username",
"ZERODB_PASSWORD": "your-cloud-password",
"ZERODB_PROJECT_ID": "your-cloud-project-id"
}
}
}
}Tools
1. zerodb_store_memory
Store conversation context with automatic importance scoring and embedding.
Input:
{
"content": "User prefers technical explanations over simplified ones",
"role": "system",
"session_id": "chat-123",
"tags": ["preference", "important"],
"user_id": "user-456"
}Output:
{
"success": true,
"memory_id": "mem_abc123",
"importance": 0.85,
"message": "Memory stored successfully"
}Features:
Auto-calculates importance (0.0 to 1.0)
Generates embeddings automatically
Supports tags for categorization
Links to user for cross-session memory
2. zerodb_search_memory
Search memory semantically using natural language.
Input:
{
"query": "What are the user's dietary restrictions?",
"limit": 10,
"session_id": "chat-123",
"scope": "agent",
"min_importance": 0.5
}Output:
{
"results": [
{
"content": "User is allergic to peanuts",
"role": "user",
"importance": 0.95,
"timestamp": "2026-02-28T10:30:00Z",
"tags": ["health", "critical"],
"similarity": 0.89,
"session_id": "chat-123"
}
],
"count": 1,
"scope": "agent"
}Features:
Semantic search (meaning, not keywords)
Cross-session search with
scope: "agent"Filter by importance, tags, user
Returns similarity scores
3. zerodb_get_context
Get full conversation context with smart pruning.
Input:
{
"session_id": "chat-123",
"max_tokens": 8192,
"include_stats": true
}Output:
{
"memories": [
{
"content": "Hello, how can I help?",
"role": "assistant",
"importance": 0.6,
"timestamp": "2026-02-28T10:00:00Z",
"tags": []
}
],
"total_tokens": 2048,
"stats": {
"pruned": true,
"original_count": 50,
"returned_count": 25,
"token_limit": 8192
}
}Features:
Auto-prunes to fit token limit
Keeps important and recent memories
Applies memory decay if enabled
Returns pruning statistics
4. zerodb_embed_text
Generate vector embeddings for text.
Input:
{
"text": "The quick brown fox jumps over the lazy dog",
"model": "BAAI/bge-small-en-v1.5",
"normalize": true
}Output:
{
"embedding": [0.123, -0.456, 0.789, ...],
"model": "BAAI/bge-small-en-v1.5",
"dimensions": 384,
"normalized": true
}Features:
Three model sizes (384d, 768d, 1024d)
Normalized vectors
Fast local embedding (if using ZeroLocal)
5. zerodb_semantic_search
Search by semantic similarity without text query.
Input:
{
"text": "food preferences",
"limit": 10,
"session_id": "chat-123",
"min_similarity": 0.7
}Output:
{
"results": [
{
"content": "User prefers vegetarian meals",
"similarity": 0.85,
"metadata": {
"role": "user",
"tags": ["preference"]
}
}
],
"count": 1,
"search_vector_dims": 384
}Features:
Direct vector similarity search
Can provide text or pre-computed vector
Filter by similarity threshold
Session-scoped or global search
6. zerodb_clear_session
Clear all memories for a session.
Input:
{
"session_id": "chat-123",
"keep_important": true,
"confirm": true
}Output:
{
"success": true,
"deleted_count": 45,
"kept_count": 5,
"message": "Session cleared, important memories preserved"
}Features:
Requires confirmation
Optional preservation of important memories
Returns deletion statistics
7. zerodb_synthesize_context
Retrieve and LLM-synthesize relevant memories into a coherent context string. Wraps POST /memory/v2/context. (Issue #2631)
Input:
{
"query": "What did we decide about the pricing model?",
"agent_id": "user-456",
"synthesis_style": "narrative",
"max_tokens": 1000,
"top_k": 10
}Output:
{
"context": "In previous discussions, the team decided to use a usage-based pricing model...",
"synthesis_style": "narrative",
"sources_count": 5,
"confidence": 0.87,
"token_count": 312,
"agent_id": "user-456"
}Features:
Three synthesis styles:
narrative,bullet,structuredPowered by Claude Haiku for fast, coherent summaries
Graceful fallback if synthesis fails (concatenates top snippets)
Scoped by
agent_idfor per-user memory isolation
8. zerodb_configure_auto_context
Enable auto-context middleware so that relevant memories are automatically prepended to every tool response for a given agent. (Issue #2678)
Input:
{
"agent_id": "user-456",
"enabled": true,
"max_results": 10,
"synthesis_style": "bullet",
"auto_trace": false
}Output:
{
"success": true,
"agent_id": "user-456",
"config": {
"enabled": true,
"max_results": 10,
"synthesis_style": "bullet",
"auto_trace": false
},
"message": "Auto-context enabled for agent user-456"
}Features:
Once enabled, every subsequent tool call for the
agent_idautomatically prepends_auto_contextto the responseauto_trace: truestores each tool response as a new episodic memory for future recallConfig persisted via
/remember— survives MCP server restartsSkip list: config tools themselves are never auto-contexted
9. zerodb_get_auto_context_config
Retrieve the current auto-context configuration for an agent.
Input:
{
"agent_id": "user-456"
}Output:
{
"agent_id": "user-456",
"config": {
"enabled": true,
"max_results": 10,
"synthesis_style": "bullet",
"auto_trace": false
}
}Write-Back Action Tools
Five tools that write back to external services using OAuth tokens stored in ZeroDB sync connections. Connect accounts at /api/v1/public/memory/v2/connections.
Agent workflow:
zerodb_recall→zerodb_synthesize_context→ take action (send Slack, reply email, create event, etc.)
10. zerodb_slack_send
Send a Slack message using the user's stored OAuth token. (Issue #2645)
Input:
{
"agent_id": "user-456",
"channel": "C012AB3CD",
"message": "Sprint planning scheduled for Monday 10am",
"thread_ts": "1609459200.000100"
}Output:
{
"ts": "1609459201.000200",
"channel": "C012AB3CD",
"message": "Message sent successfully"
}Notes: thread_ts is optional — omit to post a new message, include to reply in a thread.
11. zerodb_gmail_reply
Reply to a Gmail thread using the user's stored Google OAuth token. (Issue #2646)
Input:
{
"agent_id": "user-456",
"thread_id": "17abc123def456",
"body": "Thanks for the update. I'll review the PR by EOD.",
"cc": ["manager@example.com"]
}Output:
{
"id": "17abc123def999",
"thread_id": "17abc123def456",
"message": "Reply sent successfully"
}12. zerodb_calendar_create
Create a Google Calendar event using the user's stored Google OAuth token. (Issue #2647)
Input:
{
"agent_id": "user-456",
"title": "Sprint Planning",
"start": "2026-05-10T10:00:00Z",
"end": "2026-05-10T11:00:00Z",
"description": "Q2 sprint kickoff",
"attendees": ["alice@example.com", "bob@example.com"],
"calendar_id": "primary"
}Output:
{
"id": "evt_abc123",
"html_link": "https://calendar.google.com/event?eid=abc123",
"title": "Sprint Planning",
"message": "Event created successfully"
}Notes: Uses the same Google OAuth token as Gmail. calendar_id defaults to "primary".
13. zerodb_github_create_issue
Create a GitHub issue using the user's stored GitHub OAuth token. (Issue #2648)
Input:
{
"agent_id": "user-456",
"repo": "acme/widget",
"title": "Fix null pointer in payment flow",
"body": "Steps to reproduce:\n1. Add item to cart\n2. Proceed to checkout\n3. Observe crash",
"labels": ["bug", "priority:high"]
}Output:
{
"number": 142,
"html_url": "https://github.com/acme/widget/issues/142",
"title": "Fix null pointer in payment flow",
"message": "Issue created successfully"
}14. zerodb_notion_create_page
Create a Notion page using the user's stored Notion OAuth token. (Issue #2649)
Input:
{
"agent_id": "user-456",
"parent_id": "parent-page-uuid",
"title": "Meeting Notes — May 10",
"content": "Attendees: Alice, Bob\n\nDecisions:\n- Ship v2 on Friday\n- Rollback plan: revert to v1.9"
}Output:
{
"id": "page-uuid-xyz",
"url": "https://notion.so/page-uuid-xyz",
"title": "Meeting Notes — May 10",
"message": "Page created successfully"
}Notes: Content is converted to Notion paragraph blocks (one per non-empty line). Lines longer than 2000 characters are truncated.
Advanced Configuration
Context Window Management
# Set maximum tokens (default: 8192)
CONTEXT_WINDOW=16384
# Choose pruning strategy (default: hybrid)
# - relevance: Keep highest-scored memories
# - recency: Keep most recent memories
# - hybrid: Combine both (70% relevance, 30% recency)
PRUNE_STRATEGY=hybrid
# Always keep N recent messages (default: 5)
KEEP_RECENT=5
# Keep memories tagged as important (default: true)
KEEP_IMPORTANT=trueMemory Decay
Enable natural memory decay over time:
# Enable decay (default: false)
DECAY_ENABLED=true
# Half-life in days (default: 30)
# After 30 days, importance score is halved
DECAY_HALFLIFE=30
# Protect tags from decay
PRESERVE_TAGS=important,permanent,criticalExample:
Day 0: importance = 0.8
Day 30: importance = 0.4
Day 60: importance = 0.2
Memories with
importanttag: never decay
Automatic Summarization
Compress old conversations automatically:
# Enable summarization (default: true)
SUMMARIZE_ENABLED=true
# Summarize after N messages (default: 20)
SUMMARIZE_AFTER=20
# Model for summarization
SUMMARY_MODEL=claude-3-haiku-20240307
# Keep original messages (default: false)
KEEP_ORIGINALS=falseBehavior:
After 20 messages, oldest 15 are summarized
Summary stored as new memory with
summarytagOriginal messages deleted (unless
KEEP_ORIGINALS=true)Recent 5 messages always kept
Embedding Models
Choose embedding model based on needs:
# Small (384 dimensions) - Fast, efficient
EMBEDDING_MODEL=BAAI/bge-small-en-v1.5
# Base (768 dimensions) - Balanced
EMBEDDING_MODEL=BAAI/bge-base-en-v1.5
# Large (1024 dimensions) - Most accurate
EMBEDDING_MODEL=BAAI/bge-large-en-v1.5Trade-offs:
Small: 3x faster, 70% accuracy
Base: 2x faster, 85% accuracy
Large: 1x baseline, 95% accuracy
Use Cases
Customer Support Agent
// Store user preferences
await zerodb_store_memory({
content: "User prefers email support over phone",
role: "user",
session_id: "support-session-123",
tags: ["preference", "communication"],
user_id: "customer-456"
});
// Later, search across all sessions for this user
const prefs = await zerodb_search_memory({
query: "communication preferences",
scope: "agent",
user_id: "customer-456"
});Personal Assistant
// Store important facts
await zerodb_store_memory({
content: "User's birthday is March 15th",
role: "system",
session_id: "assistant-123",
tags: ["important", "permanent", "personal"],
metadata: { category: "birthday" }
});
// Retrieve context before responding
const context = await zerodb_get_context({
session_id: "assistant-123",
max_tokens: 4096
});Research Assistant
// Store findings
await zerodb_store_memory({
content: "Study shows 85% efficacy in clinical trials",
role: "assistant",
session_id: "research-789",
tags: ["research", "statistics"],
metadata: { source: "Nature 2026", confidence: 0.9 }
});
// Search semantically
const related = await zerodb_semantic_search({
text: "clinical trial results",
limit: 5,
min_similarity: 0.7
});End-to-End Agent Workflow: Recall → Synthesize → Act
// 1. Recall relevant memories
const memories = await zerodb_recall({
query: "pending items from last standup",
agent_id: "agent-456",
top_k: 10,
rerank: true
});
// 2. Synthesize into a coherent summary
const context = await zerodb_synthesize_context({
query: "pending items from last standup",
agent_id: "agent-456",
synthesis_style: "bullet",
top_k: 5
});
// context.context = "- PR #42 needs review\n- Deploy blocked on staging tests\n- Alice OOO Monday"
// 3. Take action — send Slack update
await zerodb_slack_send({
agent_id: "agent-456",
channel: "C012AB3CD",
message: `Standup summary:\n${context.context}`
});
// 4. Log the action as a memory for future recall
await zerodb_store_memory({
content: `Sent standup summary to #engineering: ${context.context}`,
role: "assistant",
session_id: "agent-456",
tags: ["action", "slack", "standup"]
});Auto-Context Middleware
Enable auto-context so every tool call gets relevant memories prepended automatically:
// Enable once per agent
await zerodb_configure_auto_context({
agent_id: "agent-456",
enabled: true,
max_results: 10,
synthesis_style: "bullet",
auto_trace: true // also store tool responses as memories
});
// Now every subsequent tool call automatically includes _auto_context
const result = await zerodb_slack_send({
agent_id: "agent-456",
channel: "C123",
message: "Update sent"
});
// result._auto_context = "• User prefers concise updates\n• Last message sent 2h ago"
// result.ts = "..."Performance
Context Footprint Comparison
Metric | Monolithic Server | Agent Memory MCP | Improvement |
Tools | 77 | 6 | 92% reduction |
Token cost | ~10,400 | ~800 | 92% reduction |
Load time | 2.5s | 0.3s | 8x faster |
Memory usage | 150MB | 20MB | 87% less |
Agent accuracy | 60% | 95% | 58% better |
Benchmarks
ZeroLocal (localhost:8000):
Store memory: ~5ms
Search memory: ~15ms
Get context: ~20ms
Embed text: ~10ms
ZeroDB Cloud (api.ainative.studio):
Store memory: ~50ms
Search memory: ~75ms
Get context: ~100ms
Embed text: ~60ms
Development
Run Tests
npm testRun with Verbose Logging
DEBUG=* npm startDevelopment Mode (auto-reload)
npm run devTroubleshooting
Error: "Authentication failed" or 401 on store_memory
Common cause: Shell environment variables (~/.zshrc, ~/.bashrc) override the credentials set in your MCP config (e.g., .claude.json or Claude Desktop config). The MCP server inherits all shell env vars, and stale ZERODB_USERNAME/ZERODB_PASSWORD values in your shell profile will take precedence.
Fix:
Remove or update stale
ZERODB_USERNAME/ZERODB_PASSWORDexports from~/.zshrcor~/.bashrcOr switch to API key auth (
ZERODB_API_KEY) which is not typically set in shell profilesOr set credentials explicitly in your MCP server config
envblock to override shell vars
Also check:
ZERODB_USERNAMEandZERODB_PASSWORDare correctAccount exists in ZeroDB
Password hasn't changed
Error: "Project not found"
Check:
ZERODB_PROJECT_IDis correctProject exists in your account
You have access permissions
Error: "Connection refused"
If using ZeroLocal:
# Check if ZeroLocal is running
curl http://localhost:8000/health
# Start ZeroLocal
cd /path/to/zerodb-local
zerodb local upIf using Cloud:
# Check internet connection
ping api.ainative.studio
# Verify API is online
curl https://api.ainative.studio/healthMemory not being pruned
Check configuration:
# Ensure context window is set
echo $CONTEXT_WINDOW
# Verify prune strategy
echo $PRUNE_STRATEGY
# Check if keep_recent is too high
echo $KEEP_RECENTArchitecture
┌─────────────────────────────────────────────┐
│ Agent Memory MCP Server │
├─────────────────────────────────────────────┤
│ │
│ Main (index.js) │
│ └── MCP Server initialization │
│ │
│ Client (zerodb-client.js) │
│ ├── Auto-detection (local vs cloud) │
│ ├── Authentication & token refresh │
│ └── API request handling │
│ │
│ Memory Manager (memory-manager.js) │
│ ├── Context window management │
│ ├── Memory pruning (relevance/recency) │
│ ├── Importance scoring │
│ ├── Memory decay │
│ └── Automatic summarization │
│ │
│ Tools (memory-tools.js) │
│ ├── zerodb_store_memory │
│ ├── zerodb_search_memory │
│ ├── zerodb_get_context │
│ ├── zerodb_embed_text │
│ ├── zerodb_semantic_search │
│ ├── zerodb_clear_session │
│ └── zerodb_synthesize_context │
│ │
└─────────────────────────────────────────────┘Roadmap
v1.1 (Planned)
LLM-based automatic summarization
Memory clustering and organization
Export/import memory archives
Memory analytics dashboard
v1.2 (Planned)
Multi-agent memory sharing
Memory permissions and access control
Federated memory across instances
Memory replication and backup
v2.0 (Future)
Graph-based memory relationships
Temporal memory queries
Memory compression algorithms
Real-time memory streaming
Contributing
Contributions welcome! Please read our contributing guidelines first.
License
MIT License - see LICENSE file for details
Support
Documentation: https://www.ainative.studio/docs
Issues: https://github.com/ainative/zerodb-memory-mcp/issues
Discord: https://discord.gg/ainative
Built with by AINative Studio
Making AI agents smarter, one memory at a time.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- -license-quality-maintenanceProvides AI agents with persistent long-term memory capabilities using semantic search. Enables storing, retrieving, and searching memories through three core tools integrated with Mem0 and vector storage.Last updated
- Flicense-qualityDmaintenanceProvides AI agents with persistent, searchable memory that survives across conversations using semantic search, temporal versioning, and smart organization. Enables long-term context retention and cross-session continuity for AI assistants.Last updated14
- AlicenseCqualityAmaintenanceProvides AI assistants with persistent memory and code intelligence across all tools and conversations. Features semantic search, knowledge graphs, decision tracking, and impact analysis with 60+ tools for universal context preservation.Last updated3632338MIT
- Alicense-qualityDmaintenanceProvides a persistent, vendor-neutral memory layer that allows AI tools and agents to share context and knowledge across different platforms while maintaining local data ownership. It enables users to store, recall, and manage structured memories through hybrid semantic search and automated context assembly.Last updated24Apache 2.0
Related MCP Connectors
Persistent memory and knowledge management for AI agents with semantic search and 50+ tools.
Universal memory for AI agents and tools. Save, organize and search context anywhere.
Persistent memory and knowledge graphs for AI agents. Hybrid search, context checkpoints, and more.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/AINative-Studio/ainative-zerodb-memory-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server