Overview
Cross-framework agent memory as MCP tools — read, write, and search memory across LangGraph, CrewAI, and AutoGen agents.
Setup
Run with npx:
npm install -g @memory-interop/mcp-serverConfiguration
MEMORY_INTEROP_BACKEND, MEMORY_INTEROP_URL environment variables; supports Qdrant, Pinecone, Weaviate, and 9 more backendsDocumentation
memory-interop MCP
Overview
memory-interop MCP is the Model Context Protocol server adapter for memory-interop, the polyglot agent memory layer with ~2.1K GitHub stars. It exposes the unified memory abstraction across 8 agent frameworks as MCP tools, enabling any MCP-compatible client (Claude Code, Cursor, Windsurf, etc.) to read, write, and search agent memory without framework-specific code.
This MCP server is particularly valuable when you have agents built on different frameworks (LangGraph, CrewAI, AutoGen) that need shared memory accessible through a standard MCP interface. It translates between framework-specific state formats and the universal memory protocol automatically.
Features
- Cross-framework memory access: Read/write memory across LangGraph, CrewAI, AutoGen, and more
- Semantic search: Vector-backed memory retrieval via natural language queries
- Typed schema validation: Enforce memory schemas at write time
- Event-sourced audit trail: Full history of memory operations
- Multi-backend support: Works with Qdrant, Pinecone, Weaviate, and 9 other vector stores
- Streaming writes: Real-time memory updates with conflict resolution
- Agent-agnostic API: Single MCP interface regardless of the underlying framework
Installation
npm install -g @memory-interop/mcp-server
Or via npx:
npx @memory-interop/mcp-server --help
Configuration
Claude Desktop (claude_desktop_config.json)
{
"mcpServers": {
"memory-interop": {
"command": "npx",
"args": ["-y", "@memory-interop/mcp-server"],
"env": {
"MEMORY_INTEROP_BACKEND": "qdrant",
"MEMORY_INTEROP_URL": "http://localhost:6333",
"MEMORY_INTEROP_COLLECTION": "agents"
}
}
}
}
Cursor (settings.json)
{
"mcpServers": {
"memory-interop": {
"command": "npx",
"args": ["-y", "@memory-interop/mcp-server", "--backend", "pinecone", "--index", "agent-memory"],
"env": {
"PINECONE_API_KEY": "pcsk-...",
"PINECONE_ENVIRONMENT": "us-east1-gcp"
}
}
}
}
Windsurf
{
"mcpServers": {
"memory-interop": {
"command": "uvx",
"args": ["memory-interop-mcp", "--backend", "weaviate", "--url", "http://localhost:8080"]
}
}
}
Available Tools
| Tool | Description |
|---|---|
memory_put | Write a memory item for a specific agent |
memory_get | Read a specific memory item by key |
memory_search | Semantic search across memory using natural language |
memory_delete | Delete a memory item by key |
memory_list | List all memory keys for a given agent |
memory_replay | Replay the full event history for an agent |
memory_schema_register | Register a typed memory schema for validation |
memory_schema_list | List all registered memory schemas |
memory_cross_agent_search | Search memory across multiple agents |
memory_stats | Get usage statistics for the memory store |
Usage Examples
Writing Agent Memory
User: Save that we're focusing on LLM inference optimization this quarter
Agent: I'll save this to your project memory.
→ memory_put(agent_id="planner-1", key="topic_focus", value="LLM inference optimization", context={"quarter": "Q3 2026", "confidence": 0.95})
Searching Memory Semantically
User: What were we working on last week?
Agent: Let me search your memory.
→ memory_search(query="last week project focus", top_k=5)
Result: [{"key": "topic_focus", "value": "LLM inference optimization", "timestamp": "2026-08-15T10:30:00Z"}]
Agent: You were focused on LLM inference optimization, specifically vLLM and continuous batching.
Cross-Framework Memory Access
User: Show me what the LangGraph research agent found about TGI vs vLLM
Agent:
→ memory_get(agent_id="langgraph-researcher", key="benchmark_findings")
Result: {
"value": [
{"insight": "vLLM outperforms TGI on A100 by 18%", "source": "benchmark"},
{"insight": "Continuous batching reduces p50 latency 3x", "source": "paper"}
]
}
Registering a Typed Schema
→ memory_schema_register(
name="research_finding",
fields: {
"topic": {"type": "string", "required": true},
"finding": {"type": "string", "required": true},
"confidence": {"type": "float", "min": 0, "max": 1},
"sources": {"type": "array", "items": "string"}
}
)
→ memory_put(agent_id="researcher-1", key="finding-42", value={"topic": "inference", "finding": "vLLM 18% faster on A100", "confidence": 0.95, "sources": ["arxiv:2309.17453"]}, schema="research_finding")
Supported Backends
| Backend | Protocol | Configuration |
|---|---|---|
| Qdrant | gRPC/REST | MEMORY_INTEROP_URL |
| Pinecone | REST | PINECONE_API_KEY, PINECONE_ENVIRONMENT |
| Weaviate | gRPC/REST | MEMORY_INTEROP_URL |
| Milvus | gRPC | MEMORY_INTEROP_URL, MEMORY_INTEROP_TOKEN |
| Chroma | REST | MEMORY_INTEROP_URL |
| Elasticsearch | HTTP | MEMORY_INTEROP_URL, ELASTICSEARCH_API_KEY |
| Meilisearch | REST | MEMORY_INTEROP_URL |
| pgvector | PostgreSQL | DATABASE_URL |
| Supabase | REST | SUPABASE_URL, SUPABASE_KEY |
| Redis | RESP | REDIS_URL |
| MongoDB Atlas | MongoDB Wire | MONGODB_URI |
| LanceDB | Local/Remote | LANCEDB_URI |
Claude Desktop Setup
-
Install the MCP server:
npm install -g @memory-interop/mcp-server -
Add to
claude_desktop_config.json:{ "mcpServers": { "memory-interop": { "command": "memory-interop-mcp", "args": ["--backend", "qdrant", "--url", "http://localhost:6333"] } } } -
Restart Claude Desktop
-
Verify:
/mcp memory_search query="test"
Advanced Configuration
Multi-Region Deployment
{
"mcpServers": {
"memory-interop-us": {
"command": "npx",
"args": ["-y", "@memory-interop/mcp-server"],
"env": {
"MEMORY_INTEROP_BACKEND": "qdrant",
"MEMORY_INTEROP_URL": "https://qdrant.us-east.example.com",
"MEMORY_INTEROP_REGION": "us-east"
}
},
"memory-interop-eu": {
"command": "npx",
"args": ["-y", "@memory-interop/mcp-server"],
"env": {
"MEMORY_INTEROP_BACKEND": "qdrant",
"MEMORY_INTEROP_URL": "https://qdrant.eu-west.example.com",
"MEMORY_INTEROP_REGION": "eu-west"
}
}
}
}
Enterprise Authentication
{
"mcpServers": {
"memory-interop": {
"command": "npx",
"args": ["-y", "@memory-interop/mcp-server", "--auth-mode", "oauth2"],
"env": {
"MEMORY_INTEROP_BACKEND": "qdrant",
"MEMORY_INTEROP_URL": "https://memory.company.com",
"MEMORY_INTEROP_CLIENT_ID": "mcp-client",
"MEMORY_INTEROP_CLIENT_SECRET": "***"
}
}
}
}
Pros
- Single MCP interface for memory across all agent frameworks
- Semantic search via natural language queries
- Typed schemas prevent memory corruption
- 12 vector backends supported — no lock-in
- Streaming writes with conflict resolution
- Event-sourced audit trail for compliance
Cons
- Requires external vector database (no built-in storage)
- Newer project at ~2.1K stars, still maturing
- Adapter quality varies by agent framework
- State translation may lose framework-specific details
- Additional infrastructure complexity vs framework-native memory
When to Use
Use memory-interop MCP when:
- You use multiple agent frameworks and need shared memory
- You want a standard MCP interface for memory operations
- You need semantic search across agent memory
- You require typed schemas and audit trails
Avoid if:
- You use only one agent framework (use its native memory)
- You don't need cross-framework memory sharing
- You prefer minimal infrastructure
