Skip to main content
Glama
README.md
# aurorarepos-mcp

Неофициальный MCP-сервер для [Aurora Repos](https://aurorarepos.ru/) — магазина приложений для ОС Аврора. Позволяет AI-агенту искать приложения, читать информацию о релизах и управлять приложениями разработчика: загружать RPM, редактировать описание и планировать публикацию.

Сервер написан на TypeScript и запускается локально через Node.js. Агент подключается по `stdio` и сам управляет процессом: отдельный веб-сервер, порт или хостинг не нужны.

## Что умеет

- Искать приложения для Авроры 4 и 5 по названию, категории и автору; сортировать результаты.
- Показывать карточки приложений, скриншоты, сведения о RPM и историю публичных версий.
- После входа — показывать свои приложения и релизы, включая ещё не опубликованные, и их статусы.
- Проверять локальные RPM перед загрузкой: архитектуру, название, версию, размер и SHA-256.
- Создавать и переименовывать карточки приложений.
- Загружать новый релиз из RPM для `armv7hl` и/или `aarch64`.
- Менять описание, категорию и примечания к релизу; включать или отменять отложенную публикацию.

MCP не собирает, не подписывает и не устанавливает RPM. Он также не удаляет приложения, не загружает иконки и скриншоты и не управляет контактами, бета-тестерами или модерацией. Решение о статусе публикации принимает Aurora Repos.

## Установка

Понадобятся [Node.js](https://nodejs.org/) версии 22 или новее, Git и pnpm 10. Сервер устанавливается из исходников; готовый пакет в npm пока не опубликован.

Если pnpm ещё не установлен:

```sh
npm install --global pnpm@10.33.0
```

Скачайте и соберите сервер:

```sh
git clone https://github.com/KotDath/aurorarepos-mcp.git
cd aurorarepos-mcp
pnpm install --frozen-lockfile
pnpm build
```

Для подключения нужен абсолютный путь к полученному `dist/index.js`. Ниже `/absolute/path/aurorarepos-mcp/dist/index.js` — пример: замените его своим путём. На Windows можно писать `C:/projects/aurorarepos-mcp/dist/index.js`. Если путь содержит пробелы, в командной строке заключайте его в кавычки.

В конфигурациях `node` должен быть доступен агенту через `PATH`. Если графическое приложение его не находит, укажите абсолютный путь к исполняемому файлу Node.js вместо `node`.

## Вход в аккаунт

Для публичного каталога вход не нужен. Для своих приложений и загрузки релизов выполните в обычном интерактивном терминале, из каталога сервера:

```sh
node dist/index.js auth login
```

CLI запросит email, пароль и, если включена двухфакторная авторизация, код 2FA. Пароль и код вводятся скрыто и не сохраняются. Не передавайте их агенту, в параметры MCP или конфигурацию подключения.

Управление сессией:

```sh
node dist/index.js auth status
node dist/index.js auth status --verify
node dist/index.js auth logout
```

`auth status` проверяет наличие локальной сессии; `--verify` дополнительно проверяет её на сайте. Если сессия истекла, повторите `auth login`. Выход удаляет локальную сессию, но не завершает другие сессии на сайте.

Cookies сохраняются вне репозитория в зашифрованном файле. Ключ шифрования хранится через `@napi-rs/keyring` в системном хранилище: Keychain на macOS, Credential Manager на Windows или Secret Service на Linux. Запасного варианта с хранением незашифрованных секретов нет.

На Linux нужен доступный и разблокированный Secret Service, например GNOME Keyring, и пользовательская сессия D-Bus. В SSH, контейнере или headless-среде это может потребовать отдельной настройки. Терминал входа и MCP-процесс должны работать от одного пользователя ОС и использовать одно хранилище и каталог данных. При нестандартном окружении передайте соответствующие `DBUS_SESSION_BUS_ADDRESS`, `XDG_RUNTIME_DIR` и `XDG_DATA_HOME` через настройки окружения MCP.

## Подключение к агентам

Агент должен запускать сервер на той же машине, где находятся RPM и сохранённая сессия. После добавления конфигурации перезапустите агент или переподключите MCP. Объединяйте примеры со своей существующей конфигурацией, не заменяйте её целиком.

При обычном запуске операции записи запрашивают подтверждение через форму MCP (`elicitation`, режим `form`). Если версия агента не поддерживает такие формы или запрещает их, в обычном режиме доступны чтение и подготовка RPM, но не запись на сайт. Для записи без форм используйте [YOLO-режим](#yolo-режим-без-подтверждений). Настройки разрешений самого агента могут вызывать дополнительные запросы.

### OpenCode

Добавьте в `opencode.json` в корне проекта или в пользовательский `~/.config/opencode/opencode.json`:

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "aurorarepos": {
      "type": "local",
      "command": ["node", "/absolute/path/aurorarepos-mcp/dist/index.js"],
      "enabled": true
    }
  }
}
```

Список подключений: `opencode mcp list`. В запросе укажите: «Используй MCP aurorarepos».

Документация OpenCode: [MCP-серверы](https://opencode.ai/docs/mcp-servers/) и [конфигурация](https://opencode.ai/docs/config/).

### Claude Code

Добавьте сервер для всех своих проектов:

```sh
claude mcp add --transport stdio --scope user aurorarepos -- node /absolute/path/aurorarepos-mcp/dist/index.js
```

Для конфигурации только текущего проекта используйте `--scope project` вместо `--scope user`.

Список серверов: `claude mcp list`. Внутри Claude Code панель `/mcp` показывает подключённые серверы и инструменты.

Подробнее: [подключение MCP в Claude Code](https://code.claude.com/docs/en/mcp).

### Codex

Добавьте сервер через CLI:

```sh
codex mcp add aurorarepos -- node /absolute/path/aurorarepos-mcp/dist/index.js
```

Либо добавьте секцию в пользовательский `~/.codex/config.toml` или проектный `.codex/config.toml`:

```toml
[mcp_servers.aurorarepos]
command = "node"
args = ["/absolute/path/aurorarepos-mcp/dist/index.js"]
tool_timeout_sec = 180
```

`tool_timeout_sec` увеличивает время ожидания инструментов для загрузки RPM. Проектная конфигурация применяется только в доверенных проектах. Локальные клиенты Codex используют общую MCP-конфигурацию для одного хоста.

Список серверов: `codex mcp list`; внутри CLI — `/mcp`.

Подробнее: [официальная документация MCP в Codex](https://developers.openai.com/codex/mcp).

### Oh My Pi (OMP)

Добавьте в проектный `.omp/mcp.json` или пользовательский `~/.omp/agent/mcp.json`:

```json
{
  "mcpServers": {
    "aurorarepos": {
      "type": "stdio",
      "command": "node",
      "args": ["/absolute/path/aurorarepos-mcp/dist/index.js"],
      "timeout": 180000
    }
  }
}
```

`timeout` задаётся в миллисекундах и увеличен для загрузки RPM. Если используется именованный профиль, пользовательский файл находится в `~/.omp/profiles/<имя>/agent/mcp.json`. Управлять серверами можно через команды `/mcp` внутри OMP.

Подробнее: [конфигурация MCP в Oh My Pi](https://github.com/can1357/oh-my-pi/blob/main/docs/mcp-config.md).

### ZCode

Откройте `Settings → MCP Servers → New MCP Server`. Выберите область `User` или `Workspace`, имя `aurorarepos`, тип `stdio`, команду `node` и аргумент — абсолютный путь к `dist/index.js`. Нажмите `Add` и убедитесь, что сервер включён.

Можно также добавить конфигурацию вручную в `~/.zcode/cli/config.json` для пользователя или `.zcode/config.json` в корне проекта:

```json
{
  "mcp": {
    "servers": {
      "aurorarepos": {
        "command": "node",
        "args": ["/absolute/path/aurorarepos-mcp/dist/index.js"]
      }
    }
  }
}
```

Подробнее: [MCP в ZCode](https://zcode.z.ai/en/docs/mcp-services).

## YOLO-режим: без подтверждений

Начиная с версии 1.0.1 сервер можно запускать с флагом `--yolo`:

```sh
node /absolute/path/aurorarepos-mcp/dist/index.js --yolo
```

В этом режиме MCP не запрашивает подтверждения для `create_app`, `rename_my_app`, `upload_release`, `update_my_app_version` и `schedule_my_app_version`. Инструмент выполняет запись сразу после проверок; поддержка форм `elicitation` у клиента не нужна. Вызов агента может сразу изменить карточку или загрузить релиз на сайт.

Флаг задаётся при запуске процесса, а не в аргументах инструмента или тексте запроса. Для возвращения подтверждений удалите `--yolo` и перезапустите MCP. По умолчанию YOLO выключен.

В конфигурациях выше измените только аргументы запуска:

- **OpenCode:** `"command": ["node", "/absolute/path/aurorarepos-mcp/dist/index.js", "--yolo"]`.
- **Oh My Pi и ZCode:** `"args": ["/absolute/path/aurorarepos-mcp/dist/index.js", "--yolo"]`.
- **Codex, TOML:** `args = ["/absolute/path/aurorarepos-mcp/dist/index.js", "--yolo"]`.
- **ZCode, интерфейс:** добавьте `--yolo` вторым аргументом после пути к `dist/index.js`.
- **Claude Code и Codex, CLI:** при добавлении сервера передайте флаг после пути, как в примерах ниже. Если сервер уже добавлен, отредактируйте его существующую конфигурацию вместо создания второго подключения.

```sh
claude mcp add --transport stdio --scope user aurorarepos -- node /absolute/path/aurorarepos-mcp/dist/index.js --yolo
codex mcp add aurorarepos -- node /absolute/path/aurorarepos-mcp/dist/index.js --yolo
```

YOLO отключает только подтверждения внутри этого MCP. Вход в аккаунт остаётся интерактивным; системное хранилище секретов может запросить доступ. Проверки сессии, принадлежности приложения, RPM, состояния карточки, защита от повторных попыток записи и проверка результата сохраняются. Сам агент может спрашивать разрешение согласно своим настройкам — этот флаг ими не управляет. YOLO не обходит модерацию Aurora Repos.

## Как использовать

После подключения достаточно обычного запроса агенту, например:

```text
Используй MCP aurorarepos. Найди переводчики для Авроры 5
и покажи последние опубликованные версии.
```

```text
Покажи мои приложения в Aurora Repos и статусы их последних релизов.
```

```text
Подготовь релиз для Авроры 5 из пакетов:
/projects/my-app/build/RPMS/my-app-1.2.3-1.armv7hl.rpm
/projects/my-app/build/RPMS/my-app-1.2.3-1.aarch64.rpm
Покажи версию, архитектуры, размеры и SHA-256. Пока не загружай.
```

```text
Загрузи эти RPM как новый релиз моего приложения с app_id 201 для Авроры 5.
Примечание к релизу: «Исправлена ошибка запуска».
Сохрани описание, контакты, иконку и скриншоты без изменений.
```

Агент получает `app_id` из `list_my_apps`, а `version_id` — из `list_my_app_versions`. Для публичных карточек используются `slug` из поиска. По умолчанию публичный каталог выбирает Аврору 5; `aurora_version` — номер ОС (`4` или `5`), а не внутренний ID системы на сайте.

RPM можно передавать по любому абсолютному пути, доступному пользователю MCP-процесса; настраивать разрешённые каталоги не нужно. Достаточно одного пакета, либо двух с одинаковыми названием, epoch, версией и release: `rpm32_path` для `armv7hl`, `rpm64_path` для `aarch64`. При загрузке каждый файл должен быть не больше 100 000 000 байт.

`prepare_release` только читает локальные файлы и не обращается к сайту. Его проверка метаданных не проверяет подпись, содержимое RPM или совместимость с SDK Авроры.

`upload_release` создаёт новый релиз, а не заменяет пакеты старого. Для новой пустой карточки сначала заполните описание, категорию, иконку и скриншоты на сайте. При обновлении существующего приложения эти поля сохраняются.

Описание и категория общие для приложения и затрагивают все его версии; примечания относятся к выбранному релизу. Для отложенной публикации `publish_at` задаётся как `YYYY-MM-DDTHH:mm` — время в понимании сайта, без автоматического перевода часового пояса. Статус `pending_review` означает ожидание модерации, а не публикацию.

Если запись завершилась ошибкой `WRITE_OUTCOME_UNKNOWN` или `WRITE_ALREADY_ATTEMPTED`, сначала посмотрите релизы через MCP или сайт: операция могла уже выполниться. Не повторяйте загрузку вслепую.

## Инструменты MCP

| Инструмент | Назначение |
| --- | --- |
| `search_apps` | Поиск, фильтрация и сортировка публичного каталога |
| `get_app` | Публичная карточка приложения |
| `get_app_versions` | История публичных версий |
| `list_categories` | Категории магазина |
| `list_systems` | Версии ОС и их ID на сайте |
| `list_author_apps` | Публичные приложения автора |
| `auth_status` | Наличие сессии; с `verify: true` — проверка на сайте |
| `list_my_apps` | Свои приложения и статусы последних релизов |
| `get_my_app` | Карточка своего приложения |
| `list_my_app_versions` | Свои релизы, включая непубличные |
| `get_my_app_version` | Сведения о выбранном своём релизе |
| `prepare_release` | Предварительный просмотр локальных RPM |
| `create_app` | Создание пустой карточки по названию |
| `rename_my_app` | Переименование своего приложения |
| `upload_release` | Загрузка RPM нового релиза |
| `update_my_app_version` | Изменение описания, категории и примечаний |
| `schedule_my_app_version` | Настройка или отмена отложенной публикации |

Публичные инструменты и `prepare_release` работают без аккаунта. Инструменты своих приложений и записи требуют действующей сессии аккаунта разработчика (`dev`). Полные схемы аргументов агент получает при подключении к MCP.

Проект не связан официально с Aurora Repos. Используемый внутренний API сайта может измениться. Лицензия: [MIT](LICENSE).

TDQS

A4.3/5.0

Scored across 17 tools

Disambiguation5/5

Each tool targets a distinct resource and action: public search/get vs developer-owned app management vs release uploads. Even similar read tools like get_app_versions vs list_my_app_versions are clearly separated by public vs owned scope, and prepare_release vs upload_release distinguish preflight from actual upload. No two tools have ambiguous boundaries.

Naming Consistency4/5

The vast majority follow a verb_noun pattern (search_apps, get_app, list_my_apps, update_my_app_version, etc.), with a minor deviation in 'auth_status' which is a noun phrase rather than verb_noun. This single exception is understandable and does not cause confusion.

Tool Count5/5

17 tools is well-scoped for a repository management server covering public browsing, authentication status, and full developer CRUD-lite operations. Each tool fills a specific need; none are redundant or excessive.

Completeness4/5

The surface covers public search/details, developer app listing/creation/renaming, version management (read, update, schedule), and release upload with preflight. Obvious gaps include no delete operation for apps/versions and limited editing of app-level fields like icons or contacts, but core workflows are covered without dead ends.

Maintenance

ActivityMaintained
ResponsivenessNo issues