Skip to main content
Glama
wXingHe

openmemory-rag-mcp

by wXingHe
README.md
# OpenMemory RAG MCP Server

MCP server for importing documents into OpenMemory RAG knowledge base. Supports file uploads, URL imports, and text content ingestion.

## Features

- 📄 **Import Files**: PDF, DOCX, TXT, MD, HTML
- 🌐 **Import URLs**: Webpages, articles, documentation
- 📝 **Import Text**: Raw text content
- 🔍 **Search**: Query the knowledge base

## Installation

```bash
npm install
npm run build
```

## Configuration

Set environment variables:

```bash
export OPENMEMORY_URL="http://localhost:8080"
export OPENMEMORY_USER_ID="rag_user"
```

## Usage

### With Claude Desktop

Add to `~/.config/claude/claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "openmemory-rag": {
      "command": "node",
      "args": ["/path/to/openmemory-rag-mcp/dist/index.js"],
      "env": {
        "OPENMEMORY_URL": "http://localhost:8080",
        "OPENMEMORY_USER_ID": "my_knowledge_base"
      }
    }
  }
}
```

### With Cursor

Add to `~/.cursor/mcp.json`:

```json
{
  "mcpServers": {
    "openmemory-rag": {
      "command": "node",
      "args": ["/path/to/openmemory-rag-mcp/dist/index.js"],
      "env": {
        "OPENMEMORY_URL": "http://localhost:8080"
      }
    }
  }
}
```

### With Windsurf

Add to `~/.windsurf/mcp.json`:

```json
{
  "mcpServers": {
    "openmemory-rag": {
      "command": "node",
      "args": ["/path/to/openmemory-rag-mcp/dist/index.js"]
    }
  }
}
```

## Available Tools

### 1. import_file

Import a local file into the knowledge base.

**Example:**
```
"Import the file /home/user/document.pdf into my knowledge base"
```

**Parameters:**
- `file_path` (required): Absolute path to the file
- `user_id` (optional): User ID for the knowledge base
- `tags` (optional): Array of tags

### 2. import_url

Import content from a URL.

**Example:**
```
"Import this article: https://example.com/article"
```

**Parameters:**
- `url` (required): URL to import
- `user_id` (optional): User ID
- `tags` (optional): Array of tags

### 3. import_text

Import raw text content.

**Example:**
```
"Save this to my knowledge base: [your text content]"
```

**Parameters:**
- `content` (required): Text content
- `title` (optional): Title for the content
- `user_id` (optional): User ID
- `tags` (optional): Array of tags

### 4. search_knowledge

Search the knowledge base.

**Example:**
```
"Search my knowledge base for information about Python"
```

**Parameters:**
- `query` (required): Search query
- `user_id` (optional): User ID to search within
- `limit` (optional): Maximum results (default: 5)

## Prerequisites

- OpenMemory backend running on `http://localhost:8080`
- Node.js 18+

## Quick Start

1. **Start OpenMemory backend:**
```bash
cd /path/to/OpenMemory/packages/openmemory-js
npm run dev
```

2. **Build MCP server:**
```bash
cd openmemory-rag-mcp
npm install
npm run build
```

3. **Configure AI tool** (see Usage section above)

4. **Restart AI tool** (Claude/Cursor/Windsurf)

5. **Test:**
```
"Import the file /home/user/notes.pdf"
"Search for Python programming"
```

## Supported File Types

| Type | Extensions |
|------|------------|
| Documents | `.pdf`, `.docx`, `.txt`, `.md`, `.html` |
| Web | Any URL |
| Text | Raw text content |

## Example Workflow

```
User: "Import my research paper at /home/user/research.pdf"
AI: ✅ File imported successfully!
    Memory ID: abc-123
    Tokens: 5000
    Strategy: root-child
    Sections: 3

User: "What does my research paper say about machine learning?"
AI: 🔍 Found 2 results for "machine learning":
    1. [Score: 0.892] Machine learning is a subset of artificial intelligence...
    2. [Score: 0.845] The paper discusses various ML algorithms including...
```

## Troubleshooting

### MCP tools not showing up
- Ensure OpenMemory backend is running: `curl http://localhost:8080/health`
- Check MCP config file path is correct
- Restart AI tool after configuration

### Import fails
- Verify file path is absolute
- Check file permissions
- Ensure OpenMemory backend is accessible

### Search returns no results
- Verify `user_id` matches the one used during import
- Check if content was actually imported
- Try broader search terms

## Development

```bash
# Watch mode
npm run watch

# Build
npm run build

# Run directly
npm start
```

## License

MIT

TDQS

A3.8/5.0

Scored across 4 tools

Disambiguation5/5

The three import tools are clearly distinguished by source type (file, URL, raw text), and search_knowledge is obviously the retrieval counterpart. There is no meaningful overlap or ambiguity among these tools.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern: import_file, import_url, import_text, search_knowledge. The naming convention is uniform and predictable.

Tool Count5/5

Four tools is well-scoped for an RAG knowledge base focused on ingestion and retrieval. Each tool covers a distinct and necessary operation without redundancy or bloat.

Completeness4/5

The core workflow of adding knowledge via three input types and searching it is covered. Minor gaps exist, such as no list, delete, or clear knowledge base operations, but they are not essential to the primary import-and-search purpose.

Maintenance

ActivityInactive
ResponsivenessNo issues