Skip to main content
Glama
whysosaket

Mem0 Memory MCP Server

by whysosaket
README.md
# Mem0 Memory MCP Server

A Model Context Protocol (MCP) server that provides memory storage and retrieval capabilities using [Mem0](https://github.com/mem0ai/mem0). This tool allows you to store and search through memories, making it useful for maintaining context and making informed decisions based on past interactions.

## Features

- Store memories with user-specific context
- Search through stored memories with relevance scoring
- Simple and intuitive API
- Built on the Model Context Protocol
- Automatic error handling
- Support for multiple user contexts

## Usage

This server now supports StreamableHTTP via Smithery CLI while retaining optional STDIO compatibility.

### StreamableHTTP (recommended)

- Development (opens Smithery Playground and exposes HTTP transport):

```bash
npm run dev
```

- Build for HTTP/StreamableHTTP (Smithery):

```bash
npm run build
```

- Start the HTTP server locally (Smithery-built entrypoint):

```bash
npm run start:http
```

You can configure the server using Smithery’s generated form in the playground or by setting environment variables (e.g., `MEM0_API_KEY`).

### STDIO (backward compatible)

Run the server over STDIO (useful for local clients that only support STDIO):

```bash
env MEM0_API_KEY=your-api-key-here npm run build:stdio && npm run start:stdio
```

## Configuration for AI Tools

### Running on Cursor (STDIO)

#### Configuring Cursor 🖥️

To configure Mem0 MCP in Cursor:

1. Open Cursor Settings
2. Go to Features > MCP Servers
3. Click "+ Add New MCP Server"
4. Enter the following:
   - Name: "mem0-mcp" (or your preferred name)
   - Type: "command"
   - Command: `env MEM0_API_KEY=your-api-key-here npx -y @mem0/mcp` (or use `start:stdio` from this repo)

To configure Mem0 MCP using JSON configuration:

```json
{
  "mcpServers": {
    "mem0-mcp": {
      "command": "npx",
      "args": ["-y", "@mem0/mcp"],
      "env": {
        "MEM0_API_KEY": "YOUR-API-KEY-HERE"
      }
    }
  }
}
```

### Running on VS Code (STDIO)

Add the following JSON block to your User Settings (JSON) file in VS Code:

```json
{
  "mcp": {
    "inputs": [
      {
        "type": "promptString",
        "id": "apiKey",
        "description": "Mem0 API Key",
        "password": true
      }
    ],
    "servers": {
      "mem0-memory": {
        "command": "npx",
        "args": ["-y", "@mem0/mcp"],
        "env": {
          "MEM0_API_KEY": "${input:apiKey}"
        }
      }
    }
  }
}
```

## Available Tools

### 1. Add Memory Tool (add-memory)

Store new memories with user-specific context.

```json
{
  "name": "add-memory",
  "arguments": {
    "content": "User prefers dark mode interface",
    "userId": "user123"
  }
}
```

### 2. Search Memories Tool (search-memories)

Search through stored memories to retrieve relevant information.

```json
{
  "name": "search-memories",
  "arguments": {
    "query": "What are the user's interface preferences?",
    "userId": "user123"
  }
}
```

## Response Format

### Add Memory Response

```json
{
  "content": [
    {
      "type": "text",
      "text": "Memory added successfully"
    }
  ],
  "isError": false
}
```

### Search Memory Response

```json
{
  "content": [
    {
      "type": "text",
      "text": "Memory: User prefers dark mode interface\nRelevance: 0.95\n---\nMemory: User mentioned liking minimal UI\nRelevance: 0.82\n---"
    }
  ],
  "isError": false
}
```

## Configuration

### Environment Variables

- `MEM0_API_KEY`: Your Mem0 API key (required)
  - Required for operation
  - Can be obtained from [Mem0 Dashboard](https://app.mem0.ai/dashboard/api-keys)

## Development

### Prerequisites

- Node.js >= 18
- A Mem0 API key

### Setup

1. Install dependencies:

```bash
npm install
```

2. Optionally create a `.env` file in the project directory and add your Mem0 API key:

```bash
MEM0_API_KEY=your-api-key-here
DEFAULT_USER_ID=mem0-mcp-user
```

### HTTP/StreamableHTTP Dev

```bash
npm run dev
```

### STDIO Dev

```bash
npm run build:stdio
npm run start:stdio
```

## Error Handling

The server includes error handling for:

- API connection issues
- Invalid memory operations
- Search errors
- Authentication failures

Example error response:

```json
{
  "content": [
    {
      "type": "text",
      "text": "Error: Failed to search memories: Invalid API key"
    }
  ],
  "isError": true
}
```

## Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

## License

MIT