@naparnik/mcp 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE.md ADDED
@@ -0,0 +1,19 @@
1
+ # Лицензия
2
+
3
+ Copyright © ООО «Напарник». Все права защищены.
4
+
5
+ Настоящее программное обеспечение (пакет `@naparnik/mcp`) предоставляется
6
+ пользователям сервиса Напарник (naparnik.ai) для подключения к сервису.
7
+
8
+ **Разрешается:** устанавливать, запускать и использовать пакет для доступа
9
+ к вашей учётной записи в сервисе Напарник, в том числе в коммерческих целях.
10
+
11
+ **Не разрешается** без письменного согласия правообладателя: модифицировать,
12
+ декомпилировать, распространять изменённые версии, а также использовать код
13
+ пакета в составе других продуктов.
14
+
15
+ Программное обеспечение предоставляется «как есть», без каких-либо гарантий.
16
+ Правообладатель не несёт ответственности за любой ущерб, возникший в связи
17
+ с использованием пакета.
18
+
19
+ По вопросам лицензирования: naparnik.ai
package/README.md ADDED
@@ -0,0 +1,74 @@
1
+ # @naparnik/mcp
2
+
3
+ > ⚠️ **ЭТОТ ПАКЕТ ПУБЛИКУЕТСЯ В NPM И ПОПАДАЕТ НА МАШИНЫ КЛИЕНТОВ.**
4
+ >
5
+ > В отличие от остальных пакетов `shared/*`, здесь **нельзя** ставить
6
+ > `"private": true` «по шаблону соседа» — пакет обязан оставаться публичным,
7
+ > иначе `npx -y @naparnik/mcp` у клиента перестанет работать.
8
+ >
9
+ > Из этого следуют ещё два правила:
10
+ > - **всё, что попадает в `dist`, читают посторонние.** Никаких внутренних
11
+ > URL, ключей, названий серверов, комментариев про инфраструктуру;
12
+ > - **приватные зависимости обязаны быть вбандлены.** `@naparnik/super-agent-core`
13
+ > и `@naparnik/api-contracts` не опубликованы; если они останутся внешними
14
+ > зависимостями, установка у клиента упадёт на 404. Сборка публикации —
15
+ > отдельный шаг, см. раздел «Публикация».
16
+
17
+ MCP-сервер Напарника. Подключает данные и инструменты компании к Claude
18
+ пользователя: рилсы, распаковку бренда, генерацию изображений, баланс.
19
+
20
+ ## Как это выглядит у клиента
21
+
22
+ В конфиг Claude добавляется блок:
23
+
24
+ ```json
25
+ {
26
+ "mcpServers": {
27
+ "naparnik": {
28
+ "command": "npx",
29
+ "args": ["-y", "@naparnik/mcp"],
30
+ "env": { "NAPARNIK_API_KEY": "npk_..." }
31
+ }
32
+ }
33
+ }
34
+ ```
35
+
36
+ Ключ выпускается в Напарнике: **Настройки → API-ключи**. Клиент ничего не
37
+ устанавливает и не администрирует — процесс запускает и гасит сам Claude.
38
+
39
+ ## Переменные окружения
40
+
41
+ | Переменная | Обязательна | Умолчание | Зачем |
42
+ |---|---|---|---|
43
+ | `NAPARNIK_API_KEY` | да | — | Ключ `npk_` + 64 hex |
44
+ | `NAPARNIK_API_URL` | нет | прод | Переопределение адреса для отладки |
45
+ | `NAPARNIK_TIMEOUT_MS` | нет | 30000 | Таймаут обычного запроса |
46
+ | `NAPARNIK_LONG_TIMEOUT_MS` | нет | 180000 | Таймаут долгих операций (генерация, поиск) |
47
+
48
+ ## Архитектура
49
+
50
+ Пакет — **тонкий прокси**. Вся логика, ключи внешних провайдеров и биллинг
51
+ остаются на сервере; здесь только протокол MCP и HTTP-вызовы.
52
+
53
+ ```
54
+ Claude клиента → (stdio, JSON-RPC) → этот процесс → HTTPS → API Напарника
55
+ ```
56
+
57
+ - протокол — `McpServer` + `StdioServerTransport` из `@naparnik/super-agent-core`
58
+ (там же общее кадрирование NDJSON, одно на клиентскую и серверную стороны);
59
+ - транспорт — stdio, а не HTTP: одно соединение на процесс, то есть один
60
+ клиент = одна компания, без мультитенантности внутри пакета;
61
+ - ошибки — `src/errors.ts`, порт модели из боевого Python SDK с разделением
62
+ «ретрай поможет / ретрай бесполезен».
63
+
64
+ ### stdout занят протоколом
65
+
66
+ Любой вывод в `stdout` вклинится между JSON-RPC сообщениями и порвёт сессию.
67
+ Внутри этого пакета **никаких `console.log`** — только `console.error` / stderr,
68
+ его Claude показывает в диагностике.
69
+
70
+ ## Публикация
71
+
72
+ Требует npm-организации `naparnik` и токена в переменных CI. Перед первой
73
+ публикацией нужно вбандлить приватные зависимости в `dist` — иначе установка
74
+ у клиента упадёт. Подробности — в задаче слайса «публикация в npm».