Skip to main content
Glama
TimaxLacs

lightrag-mcp

by TimaxLacs
README.md
# lightrag-mcp

MCP-сервер, который подключает [LightRAG](https://github.com/HKUDS/LightRAG) к
любому MCP-клиенту — Cursor, Claude Desktop и другим. Даёт агенту доступ к
постоянной базе знаний: заметкам, решениям, документации, ранбукам.

Два инструмента, потому что у извлечения знаний два разных сценария:

| Инструмент | Что делает | Когда нужен |
|---|---|---|
| `search_lightrag` | Возвращает готовый ответ со ссылками на источники | Обычный вопрос к базе знаний |
| `get_lightrag_context` | Возвращает только контекст и источники, без генерации ответа | Когда ответ нужно собрать самому: сверить с кодом, совместить с текущим диалогом |

Оба инструмента помечены как `readOnlyHint`, поэтому клиент не будет
воспринимать их как изменяющие состояние.

## Установка

```bash
npm install
```

Требуется Node.js 18 или новее — используется встроенный `fetch`.

## Настройка

Создайте `.env` рядом с `package.json`:

```
LIGHTRAG_URL=http://localhost:9621
LIGHTRAG_API_KEY=ваш-ключ
```

`LIGHTRAG_URL` необязателен и по умолчанию равен `http://localhost:9621`.
`LIGHTRAG_API_KEY` обязателен: без него сервер падает на старте с внятной
ошибкой, а не в момент первого запроса.

Путь к файлу окружения можно переопределить переменной
`LIGHTRAG_MCP_ENV_FILE` — удобно, когда клиент запускает сервер из другого
рабочего каталога.

## Подключение к Cursor

В `~/.cursor/mcp.json`:

```json
{
  "mcpServers": {
    "lightrag": {
      "command": "node",
      "args": ["/абсолютный/путь/lightrag-mcp/src/server.js"],
      "env": {
        "LIGHTRAG_MCP_ENV_FILE": "/абсолютный/путь/lightrag-mcp/.env"
      }
    }
  }
}
```

## Режимы поиска

Параметр `mode` принимает `mix` (по умолчанию), `hybrid`, `local`, `global` и
`naive`. Неизвестный режим отклоняется до сетевого запроса. Запросы всегда
уходят с включёнными ссылками на источники и реранкингом.

## Тесты

```bash
npm test
```

Тесты используют встроенный `node --test`, без внешних зависимостей. HTTP
подменяется через параметр `fetchImpl`, поэтому проверяются и успешные ответы,
и ошибки: отсутствующий ключ, пустой вопрос, неизвестный режим, неуспешный
статус ответа.

## Лицензия

MIT