🔌

memory-interop MCP

Memory•⭐ 2,100

Cross-framework agent memory as MCP tools — read, write, and search memory across LangGraph, CrewAI, and AutoGen agents.

Claude CodeCursorWindsurfZed

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-server

Configuration

MEMORY_INTEROP_BACKEND, MEMORY_INTEROP_URL environment variables; supports Qdrant, Pinecone, Weaviate, and 9 more backends

Documentation

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

ToolDescription
memory_putWrite a memory item for a specific agent
memory_getRead a specific memory item by key
memory_searchSemantic search across memory using natural language
memory_deleteDelete a memory item by key
memory_listList all memory keys for a given agent
memory_replayReplay the full event history for an agent
memory_schema_registerRegister a typed memory schema for validation
memory_schema_listList all registered memory schemas
memory_cross_agent_searchSearch memory across multiple agents
memory_statsGet 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

BackendProtocolConfiguration
QdrantgRPC/RESTMEMORY_INTEROP_URL
PineconeRESTPINECONE_API_KEY, PINECONE_ENVIRONMENT
WeaviategRPC/RESTMEMORY_INTEROP_URL
MilvusgRPCMEMORY_INTEROP_URL, MEMORY_INTEROP_TOKEN
ChromaRESTMEMORY_INTEROP_URL
ElasticsearchHTTPMEMORY_INTEROP_URL, ELASTICSEARCH_API_KEY
MeilisearchRESTMEMORY_INTEROP_URL
pgvectorPostgreSQLDATABASE_URL
SupabaseRESTSUPABASE_URL, SUPABASE_KEY
RedisRESPREDIS_URL
MongoDB AtlasMongoDB WireMONGODB_URI
LanceDBLocal/RemoteLANCEDB_URI

Claude Desktop Setup

  1. Install the MCP server:

    npm install -g @memory-interop/mcp-server
    
  2. Add to claude_desktop_config.json:

    {
      "mcpServers": {
        "memory-interop": {
          "command": "memory-interop-mcp",
          "args": ["--backend", "qdrant", "--url", "http://localhost:6333"]
        }
      }
    }
    
  3. Restart Claude Desktop

  4. 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

Resources