@hubex/mcp 0.2.0 → 0.3.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/CONNECTING.md +4 -6
- package/README.md +170 -197
- package/package.json +1 -1
package/CONNECTING.md
CHANGED
|
@@ -21,11 +21,9 @@ npm install -g @hubex/mcp
|
|
|
21
21
|
Без установки — `npx -y @hubex/mcp`; тогда в конфигах вместо `"command": "hubex-mcp"`
|
|
22
22
|
пишут `"command": "npx"` и `"args": ["-y", "@hubex/mcp"]`.
|
|
23
23
|
|
|
24
|
-
Патч-часть версии — дата сборки схем по UTC (`0.
|
|
25
|
-
установленного пакета сразу видно, насколько свежий в нём кэш swagger.
|
|
26
|
-
|
|
27
|
-
> Первый релиз выпускается вручную, и до него этот вариант вернёт 404 —
|
|
28
|
-
> пользуйтесь вариантом Б.
|
|
24
|
+
Патч-часть версии — дата сборки схем по UTC (`0.3.20260901`), так что по версии
|
|
25
|
+
установленного пакета сразу видно, насколько свежий в нём кэш swagger. Нулевой патч
|
|
26
|
+
(`0.3.0`) означает ручной выпуск.
|
|
29
27
|
|
|
30
28
|
### Вариант Б — готовый пакет (для тех, кому его передали)
|
|
31
29
|
|
|
@@ -33,7 +31,7 @@ npm install -g @hubex/mcp
|
|
|
33
31
|
`@hubex/mcp` в `hubex-mcp`). Установка:
|
|
34
32
|
|
|
35
33
|
```bash
|
|
36
|
-
npm install -g ./hubex-mcp-0.
|
|
34
|
+
npm install -g ./hubex-mcp-0.3.0.tgz
|
|
37
35
|
```
|
|
38
36
|
|
|
39
37
|
Дальше всё как в варианте А: в `PATH` появляется команда `hubex-mcp`, абсолютные пути
|
package/README.md
CHANGED
|
@@ -1,122 +1,59 @@
|
|
|
1
1
|
# HubEx MCP
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
Помощник, который позволяет Claude работать с данными HubEx: заводить и править
|
|
4
|
+
заявки, объекты, компании и пользователей обычными словами — «создай тестовую
|
|
5
|
+
заявку по объекту X», «покажи, что в заявке 12345». Программировать для этого
|
|
6
|
+
ничего не нужно, достаточно один раз вписать настройку в вашу программу.
|
|
5
7
|
|
|
6
|
-
|
|
7
|
-
(`https://api.hubex.ru/fsm`); ограничить его чтением можно через `HUBEX_READONLY=true`.
|
|
8
|
+
Работает с **Claude Desktop**, **Claude Code**, **Cursor** и **Codex CLI**.
|
|
8
9
|
|
|
9
|
-
|
|
10
|
+
---
|
|
10
11
|
|
|
11
|
-
|
|
12
|
-
работают через тонкий индекс, а не через по-эндпоинтную генерацию, поэтому их число не растёт
|
|
13
|
-
вместе с количеством эндпоинтов HubEx (~1100 в 22 сервисах).
|
|
14
|
-
- Единый HTTP-клиент с авторизацией (Bearer + `X-Application-ID`) и понятными сообщениями об ошибках.
|
|
15
|
-
- Два режима авторизации: готовый токен или логин/пароль (Basic → JWT через сервис AUTHN, авто-refresh).
|
|
16
|
-
- Три независимых рубежа ограничения доступа: список HTTP-методов на сервере, тумблеры инструментов
|
|
17
|
-
в MCP-клиенте, проверка метода на исполнении.
|
|
12
|
+
## Что понадобится
|
|
18
13
|
|
|
19
|
-
|
|
14
|
+
1. **Node.js версии 20 или новее** — бесплатная программа с сайта
|
|
15
|
+
[nodejs.org](https://nodejs.org) (берите кнопку **LTS**). Проверить, установлен ли
|
|
16
|
+
он: откройте Терминал, введите `node -v` и нажмите Enter. Ответ вида `v20.11.0`
|
|
17
|
+
или больше — всё в порядке.
|
|
18
|
+
2. **Доступ в HubEx** — токен или логин с паролем, тот же, с которым вы заходите
|
|
19
|
+
в систему.
|
|
20
20
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
npm run build
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
## Инструменты
|
|
27
|
-
|
|
28
|
-
13 инструментов, число не зависит от количества эндпоинтов HubEx (~1100 в 22 сервисах).
|
|
29
|
-
|
|
30
|
-
| Инструмент | Назначение |
|
|
31
|
-
|---|---|
|
|
32
|
-
| `hubex_whoami` | окружение, tenant, срок действия токена |
|
|
33
|
-
| `hubex_get_guide` | гайд по процессу, топики сгруппированы по областям: база — `start`, `dictionaries`; заявки — `taskcreate`, `taskedit`, `taskchecklists`; объекты и контрагенты — `assets`, `companies`, `users`, `materials`; настройка тенанта — `lifecycle`, `tasktypes`, `roles`, `notifications`, `sla`, `attributes`, `checklisttemplates` |
|
|
34
|
-
| `hubex_list_scopes` | карта сервисов; с `service` — ресурсы внутри |
|
|
35
|
-
| `hubex_search_read_endpoints` | поиск GET-эндпоинтов |
|
|
36
|
-
| `hubex_search_write_endpoints` | поиск POST/PUT/PATCH-эндпоинтов |
|
|
37
|
-
| `hubex_search_delete_endpoints` | поиск DELETE-эндпоинтов |
|
|
38
|
-
| `hubex_search_head_endpoints` | поиск HEAD-эндпоинтов |
|
|
39
|
-
| `hubex_describe_endpoint` | полная схема параметров и тела (до 5 идентификаторов за вызов) |
|
|
40
|
-
| `hubex_request_read` | выполнить GET |
|
|
41
|
-
| `hubex_request_write` | выполнить POST/PUT/PATCH |
|
|
42
|
-
| `hubex_request_delete` | выполнить DELETE (принимает `body`: часть эндпоинтов удаляет пачкой по списку) |
|
|
43
|
-
| `hubex_request_head` | выполнить HEAD |
|
|
44
|
-
| `hubex_create_test_task` | создать тестовую заявку с дефолтами и префиксом `[MCP-TEST]` |
|
|
45
|
-
|
|
46
|
-
### Как этим пользоваться
|
|
47
|
-
|
|
48
|
-
Типичный путь модели:
|
|
49
|
-
|
|
50
|
-
1. `hubex_get_guide` с нужным топиком — понять порядок вызовов.
|
|
51
|
-
2. `hubex_list_scopes` — увидеть сервисы; с `service=WORK` — ресурсы внутри.
|
|
52
|
-
3. `hubex_search_read_endpoints` со `scope`/`tag`/`query` — найти эндпоинт.
|
|
53
|
-
4. `hubex_describe_endpoint` — получить схему только для того, что будет вызвано.
|
|
54
|
-
5. `hubex_request_*` — выполнить.
|
|
55
|
-
|
|
56
|
-
Ступени необязательны: зная идентификатор из гайда, можно идти сразу к шагу 4.
|
|
57
|
-
|
|
58
|
-
### Ограничение доступных методов
|
|
21
|
+
Сам сервер скачивать и устанавливать не нужно: он загрузится автоматически при
|
|
22
|
+
первом запуске и будет обновляться сам.
|
|
59
23
|
|
|
60
|
-
|
|
24
|
+
---
|
|
61
25
|
|
|
62
|
-
1.
|
|
63
|
-
2. Тумблеры инструментов в MCP-клиенте — можно выключить пару `search_delete` + `request_delete`.
|
|
64
|
-
3. Проверка на исполнении — `request_*` принимает только `endpointId` и отклоняет чужой метод.
|
|
26
|
+
## Шаг 1. Найти файл настроек
|
|
65
27
|
|
|
66
|
-
|
|
67
|
-
поискового инструмента было бы недостаточно.
|
|
28
|
+
У каждой программы он свой:
|
|
68
29
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
промптах или конфигурации использовались v1-имена инструментов — замените их на новую лестницу.
|
|
30
|
+
| Программа | Файл настроек |
|
|
31
|
+
|---|---|
|
|
32
|
+
| Claude Desktop (macOS) | `~/Library/Application Support/Claude/claude_desktop_config.json` |
|
|
33
|
+
| Claude Desktop (Windows) | `%APPDATA%\Claude\claude_desktop_config.json` |
|
|
34
|
+
| Cursor | `~/.cursor/mcp.json` |
|
|
35
|
+
| Codex CLI | `~/.codex/config.toml` |
|
|
76
36
|
|
|
77
|
-
|
|
37
|
+
Значок `~` означает вашу домашнюю папку. В Claude Desktop файл можно открыть, не
|
|
38
|
+
разыскивая вручную: **Settings → Developer → Edit Config**. Если файла нет,
|
|
39
|
+
создайте пустой.
|
|
78
40
|
|
|
79
|
-
|
|
41
|
+
Для **Claude Code** файл не нужен — там всё делается одной командой, см. шаг 2.
|
|
80
42
|
|
|
81
|
-
|
|
82
|
-
|---|---|---|
|
|
83
|
-
| `HUBEX_ENV` | да | `dev`, `stg` или `prod` |
|
|
84
|
-
| `HUBEX_APPLICATION_ID` | да | заголовок `X-Application-ID` (для dev-тенанта — `5`) |
|
|
85
|
-
| `HUBEX_AUTH_MODE` | да | `token`, `login` или `service` |
|
|
86
|
-
| `HUBEX_USERNAME` / `HUBEX_PASSWORD` | для `login` | учётные данные |
|
|
87
|
-
| `HUBEX_SERVICE_TOKEN` | для `service` | долгоживущий интеграционный токен |
|
|
88
|
-
| `HUBEX_TENANT_ID` | нет | tenant явно; иначе берётся из JWT (`TenantID`) |
|
|
89
|
-
| `HUBEX_METHODS` | нет | список доступных HTTP-методов через запятую (по умолчанию — все шесть) |
|
|
90
|
-
| `HUBEX_READONLY` | нет | `true` — эквивалент `HUBEX_METHODS=GET,HEAD` |
|
|
91
|
-
| `HUBEX_MASK_PII` | нет | по умолчанию `true` — маскирует ПДн (ФИО, телефоны, email и т.п.) в ответах; `false` отключает маскирование |
|
|
92
|
-
| `HUBEX_SERVICES` | нет | ограничить поиск и исполнение списком сервисов (по умолчанию — все 22) |
|
|
93
|
-
| `HUBEX_DEFAULT_REQUEST_METHOD_ID` | нет | значение по умолчанию для тела write-запросов |
|
|
94
|
-
| `HUBEX_DEFAULT_TASK_TYPE_ID` | нет | значение по умолчанию для тела write-запросов |
|
|
95
|
-
| `HUBEX_DEFAULT_COMPANY_ID` | нет | значение по умолчанию для тела write-запросов |
|
|
96
|
-
|
|
97
|
-
Режим `token` переменных не требует: при первом обращении сервер сам попросит
|
|
98
|
-
access-токен (через MCP elicitation, а если клиент этого не умеет — через
|
|
99
|
-
инструмент `hubex_set_token`). По введённому токену запрашивается refresh, и
|
|
100
|
-
дальше сессия продлевается сама. Токены хранятся только в памяти процесса — после
|
|
101
|
-
перезапуска сервер спросит токен заново.
|
|
102
|
-
|
|
103
|
-
## Подключение
|
|
104
|
-
|
|
105
|
-
Полное руководство для **Claude Code, Claude Desktop, Codex CLI и Cursor** — в [CONNECTING.md](CONNECTING.md).
|
|
106
|
-
|
|
107
|
-
Кратко. Соберите пакет (`npm pack`) и установите его — появится команда `hubex-mcp`:
|
|
43
|
+
---
|
|
108
44
|
|
|
109
|
-
|
|
110
|
-
npm install -g ./hubex-mcp-0.2.0.tgz
|
|
111
|
-
```
|
|
45
|
+
## Шаг 2. Вписать настройку
|
|
112
46
|
|
|
113
|
-
Claude Desktop
|
|
47
|
+
**Claude Desktop и Cursor.** Вставьте это в файл целиком. Если в файле уже
|
|
48
|
+
что-то есть, добавьте только блок `"hubex": { ... }` внутрь существующего
|
|
49
|
+
`"mcpServers"`:
|
|
114
50
|
|
|
115
51
|
```json
|
|
116
52
|
{
|
|
117
53
|
"mcpServers": {
|
|
118
54
|
"hubex": {
|
|
119
|
-
"command": "
|
|
55
|
+
"command": "npx",
|
|
56
|
+
"args": ["-y", "@hubex/mcp"],
|
|
120
57
|
"env": {
|
|
121
58
|
"HUBEX_ENV": "dev",
|
|
122
59
|
"HUBEX_APPLICATION_ID": "5",
|
|
@@ -127,140 +64,176 @@ Claude Desktop (`claude_desktop_config.json`):
|
|
|
127
64
|
}
|
|
128
65
|
```
|
|
129
66
|
|
|
130
|
-
|
|
131
|
-
(переменные окружения задайте через `--env` или в `.env` окружении процесса).
|
|
67
|
+
**Codex CLI** — формат другой:
|
|
132
68
|
|
|
133
|
-
|
|
69
|
+
```toml
|
|
70
|
+
[mcp_servers.hubex]
|
|
71
|
+
command = "npx"
|
|
72
|
+
args = ["-y", "@hubex/mcp"]
|
|
73
|
+
|
|
74
|
+
[mcp_servers.hubex.env]
|
|
75
|
+
HUBEX_ENV = "dev"
|
|
76
|
+
HUBEX_APPLICATION_ID = "5"
|
|
77
|
+
HUBEX_AUTH_MODE = "token"
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
**Claude Code** — одна команда в Терминале, файл править не нужно:
|
|
134
81
|
|
|
135
82
|
```bash
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
npm test # unit-тесты (vitest)
|
|
142
|
-
npm run check-guides # сверить источники гайдов с первоисточниками
|
|
143
|
-
npm run dev # запуск из исходников (tsx)
|
|
83
|
+
claude mcp add hubex --scope user \
|
|
84
|
+
--env HUBEX_ENV=dev \
|
|
85
|
+
--env HUBEX_APPLICATION_ID=5 \
|
|
86
|
+
--env HUBEX_AUTH_MODE=token \
|
|
87
|
+
-- npx -y @hubex/mcp
|
|
144
88
|
```
|
|
145
89
|
|
|
146
|
-
|
|
147
|
-
сверяет `sources` во фронтматтере каждого гайда с первоисточником: страницы вики
|
|
148
|
-
(`admin/...`) — по полю `content_hash` самой страницы, файлы AdminApp
|
|
149
|
-
(`adminapp/...`) — по sha256 содержимого. Без второго пути источники AdminApp
|
|
150
|
-
пропускаются. Ненулевой код возврата означает, что первоисточник изменился и
|
|
151
|
-
гайд пора перечитать.
|
|
90
|
+
### Что означают три строки в настройке
|
|
152
91
|
|
|
153
|
-
|
|
92
|
+
| Строка | Что это |
|
|
93
|
+
|---|---|
|
|
94
|
+
| `HUBEX_ENV` | с каким контуром работать: `dev` — тестовый, `prod` — боевой |
|
|
95
|
+
| `HUBEX_APPLICATION_ID` | номер приложения, для тестового контура — `5` |
|
|
96
|
+
| `HUBEX_AUTH_MODE` | как входить: `token` — сервер сам попросит токен при первом обращении |
|
|
154
97
|
|
|
155
|
-
|
|
98
|
+
Если работаете с боевым контуром, добавьте туда же `"HUBEX_READONLY": "true"` —
|
|
99
|
+
тогда сервер сможет только читать данные и ничего не изменит.
|
|
156
100
|
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
| `prod` | `swagger/prod/` | `generated/index.prod.json` | `https://api.hubex.ru/fsm/{SERVICE}/swagger/{версия}/swagger.json` (то же, что раздаёт [doc.hubex.ru](https://doc.hubex.ru/#/)) |
|
|
101
|
+
Это необходимый минимум. Остальные настройки — ограничение прав, вход по логину,
|
|
102
|
+
значения по умолчанию — собраны ниже в разделе [«Все настройки»](#все-настройки);
|
|
103
|
+
для первого запуска они не нужны.
|
|
161
104
|
|
|
162
|
-
|
|
163
|
-
`dev` и `stg` — dev-каталог (отдельного стенда документации у stg нет). Поиск,
|
|
164
|
-
`hubex_describe_endpoint` и валидация тел запросов работают по схемам выбранного
|
|
165
|
-
контура, так что на проде агент не увидит эндпоинтов, которых там ещё нет.
|
|
105
|
+
---
|
|
166
106
|
|
|
167
|
-
|
|
107
|
+
## Шаг 3. Перезапустить программу
|
|
168
108
|
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
не узнать о сервисе, которого там ещё нет. Со страницы берутся только ссылки на
|
|
172
|
-
хост своего контура — dev-страница перечисляет заодно и stg.
|
|
109
|
+
Именно **полностью закрыть и открыть заново**, а не свернуть окно. Claude Desktop
|
|
110
|
+
на macOS удобно закрывать через ⌘Q.
|
|
173
111
|
|
|
174
|
-
|
|
112
|
+
---
|
|
175
113
|
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
114
|
+
## Шаг 4. Ввести токен
|
|
115
|
+
|
|
116
|
+
При первом обращении к HubEx сервер попросит access-токен — появится поле ввода,
|
|
117
|
+
куда его нужно вставить. Токен хранится только в памяти: после перезапуска
|
|
118
|
+
программы сервер спросит его снова.
|
|
119
|
+
|
|
120
|
+
Если вы предпочитаете входить по логину и паролю, замените в настройке строку
|
|
121
|
+
`"HUBEX_AUTH_MODE": "token"` на три строки:
|
|
122
|
+
|
|
123
|
+
```json
|
|
124
|
+
"HUBEX_AUTH_MODE": "login",
|
|
125
|
+
"HUBEX_USERNAME": "ваш@логин.ru",
|
|
126
|
+
"HUBEX_PASSWORD": "ваш пароль"
|
|
179
127
|
```
|
|
180
128
|
|
|
181
|
-
|
|
182
|
-
равно строится по всему каталогу контура. Версия схем — `v1.0.0.0`, меняется через
|
|
183
|
-
`HUBEX_SWAGGER_VERSION`.
|
|
129
|
+
Тогда ничего вводить не придётся — сервер получит и будет продлевать токен сам.
|
|
184
130
|
|
|
185
|
-
|
|
131
|
+
---
|
|
186
132
|
|
|
187
|
-
|
|
188
|
-
репозитории. Сравнение идёт в два слоя, потому что индекс хранит только сигнатуры:
|
|
133
|
+
## Шаг 5. Проверить, что всё работает
|
|
189
134
|
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
поле, изменившийся тип, — которых в индексе нет вовсе;
|
|
193
|
-
- **индекс** — какие эндпоинты появились, пропали и у каких изменилась сигнатура
|
|
194
|
-
(`summary`, `tags`, path/query-параметры, наличие и обязательность тела). Порядок
|
|
195
|
-
тегов и параметров сравнивается как множество, поэтому перестановка внутри
|
|
196
|
-
swagger расхождением не считается.
|
|
135
|
+
Напишите в чате: **«Спроси у HubEx, кто я»**. В ответ придёт окружение, тенант и
|
|
136
|
+
срок действия токена — значит, связь есть.
|
|
197
137
|
|
|
198
|
-
|
|
199
|
-
|
|
138
|
+
В Claude Code то же самое проверяется командой `claude mcp list`: напротив
|
|
139
|
+
`hubex` должно стоять `✓ connected`.
|
|
200
140
|
|
|
201
|
-
|
|
141
|
+
---
|
|
202
142
|
|
|
203
|
-
|
|
204
|
-
| --- | ---------------------------------------------------------- |
|
|
205
|
-
| `0` | расхождений нет, индексы в репозитории актуальны |
|
|
206
|
-
| `1` | схемы разошлись: появились, пропали или изменились эндпоинты |
|
|
207
|
-
| `2` | проверку выполнить не удалось: сеть, HTTP != 200, битый JSON |
|
|
143
|
+
## Все настройки
|
|
208
144
|
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
список вернул бы слепое пятно на новый сервис, ради которого проверка и нужна.
|
|
145
|
+
Всё перечисленное вписывается в тот же блок `"env"` из шага 2 (в Codex — в секцию
|
|
146
|
+
`[mcp_servers.hubex.env]`). Значения всегда пишутся в кавычках, даже числа.
|
|
212
147
|
|
|
213
|
-
|
|
214
|
-
Схемы и индексы после запуска остаются **обновлёнными**, поэтому в пайплайне
|
|
215
|
-
`git diff` можно опубликовать артефактом, а локально — сразу закоммитить.
|
|
216
|
-
Загрузка атомарна: при обрыве сети рабочий каталог остаётся нетронутым, и код `2`
|
|
217
|
-
не будет спутан с реальным расхождением.
|
|
148
|
+
### Обязательная — одна
|
|
218
149
|
|
|
219
|
-
|
|
150
|
+
| Настройка | Что делает |
|
|
151
|
+
|---|---|
|
|
152
|
+
| `HUBEX_APPLICATION_ID` | Номер приложения, который HubEx требует в каждом запросе. Для тестового контура — `5`. Без неё сервер не запустится. |
|
|
220
153
|
|
|
221
|
-
|
|
222
|
-
`npm run release-swagger`. Пайплайн `azure-pipelines-swagger.yml` только вызывает
|
|
223
|
-
её по расписанию, поэтому тот же сценарий целиком прогоняется локально:
|
|
154
|
+
### Куда подключаться
|
|
224
155
|
|
|
225
|
-
|
|
226
|
-
|
|
156
|
+
| Настройка | Что делает | По умолчанию |
|
|
157
|
+
|---|---|---|
|
|
158
|
+
| `HUBEX_ENV` | Контур: `dev` — тестовый, `stg` — предбоевой, `prod` — боевой | `dev` |
|
|
159
|
+
| `HUBEX_TENANT_ID` | Номер тенанта. Обычно не нужен: сервер сам берёт его из вашего токена. Пригодится, только если у вас доступ сразу к нескольким тенантам | берётся из токена |
|
|
160
|
+
|
|
161
|
+
### Как входить
|
|
162
|
+
|
|
163
|
+
| Настройка | Что делает | По умолчанию |
|
|
164
|
+
|---|---|---|
|
|
165
|
+
| `HUBEX_AUTH_MODE` | Способ входа: `token` — сервер спросит токен при первом обращении, `login` — вход по логину и паролю, `service` — по долгоживущему служебному токену | `token` |
|
|
166
|
+
| `HUBEX_USERNAME` | Логин. Нужен только при `HUBEX_AUTH_MODE=login` | — |
|
|
167
|
+
| `HUBEX_PASSWORD` | Пароль. Нужен только при `HUBEX_AUTH_MODE=login` | — |
|
|
168
|
+
| `HUBEX_SERVICE_TOKEN` | Служебный токен, который выдаёт администратор HubEx. Нужен только при `HUBEX_AUTH_MODE=service`. Удобен, когда сервер работает сам по себе и спросить токен не у кого | — |
|
|
169
|
+
|
|
170
|
+
### Что помощнику разрешено делать
|
|
171
|
+
|
|
172
|
+
| Настройка | Что делает | По умолчанию |
|
|
173
|
+
|---|---|---|
|
|
174
|
+
| `HUBEX_READONLY` | `"true"` — помощник может только смотреть данные и ничего не изменит. Самый простой способ обезопасить боевой контур | `"false"` |
|
|
175
|
+
| `HUBEX_METHODS` | Точный список разрешённых действий через запятую: `GET` — чтение, `POST`/`PUT`/`PATCH` — создание и правка, `DELETE` — удаление, `HEAD` — проверка наличия. Например `"GET,POST,PUT"` — можно создавать и править, но не удалять. Запрещённое исчезает из списка инструментов, так что помощник об этом даже не узнает | все шесть |
|
|
176
|
+
| `HUBEX_SERVICES` | Ограничить круг систем, с которыми работает помощник, например `"WORK,ES,ADM"` — заявки, объекты и администрирование | все 22 |
|
|
177
|
+
| `HUBEX_MASK_PII` | Скрывает персональные данные (ФИО, телефоны, почту) в ответах. `"false"` отключает, если ПДн нужны в работе | `"true"` |
|
|
178
|
+
|
|
179
|
+
### Чтобы меньше уточнять при создании заявок
|
|
180
|
+
|
|
181
|
+
Эти три подставляются автоматически, когда помощник создаёт заявку и значение не
|
|
182
|
+
указано явно. Полезно, если вы всегда работаете с одной компанией или одним типом
|
|
183
|
+
заявок. Номера подскажет администратор HubEx.
|
|
184
|
+
|
|
185
|
+
| Настройка | Что делает |
|
|
186
|
+
|---|---|
|
|
187
|
+
| `HUBEX_DEFAULT_COMPANY_ID` | Компания по умолчанию |
|
|
188
|
+
| `HUBEX_DEFAULT_TASK_TYPE_ID` | Тип заявки по умолчанию |
|
|
189
|
+
| `HUBEX_DEFAULT_REQUEST_METHOD_ID` | Способ обращения по умолчанию (например, «звонок» или «почта») |
|
|
190
|
+
|
|
191
|
+
### Пример: строгая настройка для боевого контура
|
|
192
|
+
|
|
193
|
+
Помощник видит только заявки и объекты, ничего не меняет, персональные данные
|
|
194
|
+
скрыты:
|
|
195
|
+
|
|
196
|
+
```json
|
|
197
|
+
"env": {
|
|
198
|
+
"HUBEX_ENV": "prod",
|
|
199
|
+
"HUBEX_APPLICATION_ID": "5",
|
|
200
|
+
"HUBEX_AUTH_MODE": "token",
|
|
201
|
+
"HUBEX_READONLY": "true",
|
|
202
|
+
"HUBEX_SERVICES": "WORK,ES"
|
|
203
|
+
}
|
|
227
204
|
```
|
|
228
205
|
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
206
|
+
Про `"true"` и `"false"`: сервер считает настройку выключенной, если написано
|
|
207
|
+
`"false"`, `"0"`, `"no"` или пусто. Любое другое слово он поймёт как «включено»,
|
|
208
|
+
поэтому пишите ровно `"true"` или `"false"`.
|
|
232
209
|
|
|
233
|
-
|
|
234
|
-
`generated/`, `package.json`) скрипт коммитит целиком, и чужая незакоммиченная
|
|
235
|
-
правка в них уехала бы в автоматический коммит.
|
|
210
|
+
---
|
|
236
211
|
|
|
237
|
-
|
|
238
|
-
`swagger-daily` ничего не запускают, публикация происходит исключительно после
|
|
239
|
-
автоматического обновления схем. Синхронизация ветки с `main` делается руками.
|
|
212
|
+
## Если что-то пошло не так
|
|
240
213
|
|
|
241
|
-
|
|
242
|
-
|
|
214
|
+
| Что видите | Что делать |
|
|
215
|
+
|---|---|
|
|
216
|
+
| `command not found: npx` | Node.js не установлен — вернитесь к разделу «Что понадобится» |
|
|
217
|
+
| Сервер не появился в списке | Программа не была перезапущена полностью; закройте её целиком и откройте снова |
|
|
218
|
+
| Ошибка 401 или «токен истёк» | Введите токен заново либо перейдите на вход по логину и паролю |
|
|
219
|
+
| Ошибка про JSON-файл | Скорее всего лишняя или пропущенная запятая; проверьте файл в любом онлайн-валидаторе JSON |
|
|
243
220
|
|
|
244
|
-
|
|
221
|
+
Отдельная тонкость для разработчиков: внутри папки с исходниками самого проекта
|
|
222
|
+
команда `npx @hubex/mcp` не сработает — запускайте её из любого другого каталога
|
|
223
|
+
или используйте `npm run dev`.
|
|
245
224
|
|
|
246
|
-
|
|
247
|
-
2. дать Build Service право **Contribute** на репозиторий, иначе push не пройдёт;
|
|
248
|
-
3. убедиться, что на `swagger-daily` нет branch policies;
|
|
249
|
-
4. завести секретную переменную `NPM_TOKEN` с токеном публикации npm.
|
|
225
|
+
---
|
|
250
226
|
|
|
251
|
-
|
|
227
|
+
## Что дальше
|
|
252
228
|
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
курировать список эндпоинтов не нужно.
|
|
258
|
-
3. `npm run build`.
|
|
229
|
+
- [CONNECTING.md](CONNECTING.md) — подробные инструкции по каждой программе,
|
|
230
|
+
все способы входа, полный список настроек.
|
|
231
|
+
- [DEVELOPMENT.md](DEVELOPMENT.md) — гайд для разработчика: устройство сервера,
|
|
232
|
+
список инструментов, кэш swagger, команды сборки и релиза.
|
|
259
233
|
|
|
260
234
|
## Безопасность
|
|
261
235
|
|
|
262
|
-
-
|
|
263
|
-
|
|
264
|
-
-
|
|
265
|
-
-
|
|
266
|
-
- Тестовые заявки из `hubex_create_test_task` помечаются префиксом `[MCP-TEST]`.
|
|
236
|
+
- Тестовые заявки, созданные помощником, помечаются префиксом `[MCP-TEST]`.
|
|
237
|
+
- Персональные данные в ответах (ФИО, телефоны, почта) скрываются автоматически.
|
|
238
|
+
- `HUBEX_READONLY=true` полностью запрещает любые изменения данных.
|
|
239
|
+
- Не публикуйте файл настроек с паролем или токеном.
|