MCP Memory Server
by sdimitrov
This server implements long-term memory capabilities for AI assistants using mem0 principles. It is powered by PostgreSQL with pgvector for efficient vector similarity search.
Last updated: N/A
MCP Memory Server
This server implements long-term memory capabilities for AI assistants using mem0 principles, powered by PostgreSQL with pgvector for efficient vector similarity search.
Features
- PostgreSQL with pgvector for vector similarity search
- Automatic embedding generation using BERT
- RESTful API for memory operations
- Semantic search capabilities
- Support for different types of memories (learnings, experiences, etc.)
- Tag-based memory retrieval
- Confidence scoring for memories
- Server-Sent Events (SSE) for real-time updates
- Cursor MCP protocol compatible
Prerequisites
- PostgreSQL 14+ with pgvector extension installed:
# In your PostgreSQL instance:
CREATE EXTENSION vector;
- Node.js 16+
Setup
- Install dependencies:
npm install
- Configure environment variables:
Copy
.env.sample
to.env
and adjust the values:
cp .env.sample .env
Example .env
configurations:
# With username/password
DATABASE_URL="postgresql://username:password@localhost:5432/mcp_memory"
PORT=3333
# Local development with peer authentication
DATABASE_URL="postgresql:///mcp_memory"
PORT=3333
- Initialize the database:
npm run prisma:migrate
- Start the server:
npm start
For development with auto-reload:
npm run dev
Using with Cursor
Adding the MCP Server in Cursor
To add the memory server to Cursor, you need to modify your MCP configuration file located at ~/.cursor/mcp.json
. Add the following configuration to the mcpServers
object:
{
"mcpServers": {
"memory": {
"command": "node",
"args": [
"/path/to/your/memory/src/server.js"
]
}
}
}
Replace /path/to/your/memory
with the actual path to your memory server installation.
For example, if you cloned the repository to /Users/username/workspace/memory
, your configuration would look like:
{
"mcpServers": {
"memory": {
"command": "node",
"args": [
"/Users/username/workspace/memory/src/server.js"
]
}
}
}
The server will be automatically started by Cursor when needed. You can verify it's working by:
- Opening Cursor
- The memory server will be started automatically when Cursor launches
- You can check the server status by visiting
http://localhost:3333/mcp/v1/health
Available MCP Endpoints
SSE Connection
- Endpoint:
GET /mcp/v1/sse
- Query Parameters:
subscribe
: Comma-separated list of events to subscribe to (optional)
- Events:
connected
: Sent on initial connectionmemory.created
: Sent when new memories are createdmemory.updated
: Sent when existing memories are updated
Memory Operations
- Create Memory
POST /mcp/v1/memory
Content-Type: application/json
{
"type": "learning",
"content": {
"topic": "Express.js",
"details": "Express.js is a web application framework for Node.js"
},
"source": "documentation",
"tags": ["nodejs", "web-framework"],
"confidence": 0.95
}
- Search Memories
GET /mcp/v1/memory/search?query=web+frameworks&type=learning&tags=nodejs
- List Memories
GET /mcp/v1/memory?type=learning&tags=nodejs,web-framework
Health Check
GET /mcp/v1/health
Response Format
All API responses follow the standard MCP format:
{
"status": "success",
"data": {
// Response data
}
}
Or for errors:
{
"status": "error",
"error": "Error message"
}
Memory Schema
- id: Unique identifier
- type: Type of memory (learning, experience, etc.)
- content: Actual memory content (JSON)
- source: Where the memory came from
- embedding: Vector representation of the content (384 dimensions)
- tags: Array of relevant tags
- confidence: Confidence score (0-1)
- createdAt: When the memory was created
- updatedAt: When the memory was last updated