# mem0 MCP Server

A TypeScript implementation of the Model Context Protocol (MCP) server for mem0, providing memory stream functionality with Mem0 integration.

## Features

- Create memory streams with Mem0 integration
- Append content to memory streams
- Search memories using Mem0's semantic search
- Read from memory streams
- Resource-based access to memory streams
- Delete memory streams

## Prerequisites

1. Node.js and npm installed
2. Mem0 API key (get one from [mem0.ai](https://mem0.ai))

## Installation

```bash
npm install
```

## Configuration

Set your Mem0 API key as an environment variable:

```bash
export MEM0_API_KEY=your-api-key-here
```

## Building

```bash
npm run build
```

## Running the Server

```bash
npm start
```

## Testing

Run the test client to verify server functionality:

```bash
npm test
```

## API

### Tools

1. `create-memory-stream`
   - Parameters:
     - `name`: string
     - `initialContent`: string (optional)
     - `userId`: string (optional) - Mem0 user ID
     - `agentId`: string (optional) - Mem0 agent ID
   - Returns: Stream ID and metadata

2. `append-to-stream`
   - Parameters:
     - `streamId`: string
     - `content`: string
     - `role`: "user" | "assistant" (optional)
   - Returns: Success confirmation

3. `search-memories`
   - Parameters:
     - `query`: string
     - `userId`: string
     - `agentId`: string (optional)
     - `threshold`: number (optional)
   - Returns: Search results from Mem0

4. `read-stream`
   - Parameters:
     - `streamId`: string
     - `startIndex`: number (optional)
     - `endIndex`: number (optional)
   - Returns: Stream content

5. `delete-stream`
   - Parameters:
     - `streamId`: string
   - Returns: Deletion confirmation

### Resources

- `memory://{streamId}` - Access memory stream content directly
- `memory://` - List all memory streams

## Development

The server is implemented using the MCP TypeScript SDK and provides integration with Mem0 for persistent memory storage and semantic search. To extend the implementation:

1. Add more Mem0 features (e.g., memory tagging, metadata)
2. Implement proper error handling
3. Add authentication and authorization
4. Add additional memory operations

## License

MIT 