biaws-mcp 0.1.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/README.md +25 -12
- package/package.json +1 -1
- package/src/domains/monitoring/service.js +36 -0
- package/src/domains/monitoring/tools.js +65 -0
- package/src/httpClient.js +7 -7
- package/src/index.js +1 -1
- package/src/version.js +1 -1
package/README.md
CHANGED
|
@@ -17,8 +17,9 @@ O servidor separa os domínios:
|
|
|
17
17
|
- `attachments_*`: envio, download, classificação e exclusão de arquivos de
|
|
18
18
|
chamados, melhorias, tarefas e procedimentos.
|
|
19
19
|
- `secrets_*`: consulta e registro de metadados de segredos, sem acesso aos valores.
|
|
20
|
-
- `monitoring_templates_
|
|
21
|
-
versionada de templates
|
|
20
|
+
- `monitoring_templates_*`, `runtime_active_monitors_*` e
|
|
21
|
+
`runtime_monitoring_results_list`: administração versionada de templates,
|
|
22
|
+
configuração de monitores e consulta do histórico dos runtimes.
|
|
22
23
|
- `resource_collections_*` e `*_move_to_collection`: organização hierárquica
|
|
23
24
|
de aplicações, regras, decisões, procedimentos, segredos, skills e servidores.
|
|
24
25
|
|
|
@@ -34,15 +35,15 @@ a URL e a credencial da instância, mas não seleciona o workspace.
|
|
|
34
35
|
|
|
35
36
|
Por padrão, a API é buscada em `http://127.0.0.1:3100`. Para apontar para outro endereço, use uma das variáveis:
|
|
36
37
|
|
|
37
|
-
- `
|
|
38
|
-
- `
|
|
39
|
-
- `
|
|
38
|
+
- `BIAWS_API_URL`
|
|
39
|
+
- `BIAWS_API_BASE_URL`
|
|
40
|
+
- `VITE_BIAWS_API_URL`
|
|
40
41
|
|
|
41
|
-
Defina obrigatoriamente `
|
|
42
|
+
Defina obrigatoriamente `BIAWS_API_KEY`. O bootstrap open source cria uma
|
|
42
43
|
identidade técnica e grava sua chave no `.env` local; uma chave também pode ser
|
|
43
44
|
criada manualmente pela UI. O MCP a envia como `Authorization: Bearer`.
|
|
44
45
|
|
|
45
|
-
Defina `
|
|
46
|
+
Defina `BIAWS_WORKSPACE_ID` no bloco `env` do servidor MCP local ao projeto. O
|
|
46
47
|
MCP preserva esse valor mesmo ao carregar `BIAWS_ENV_FILE` e o envia como
|
|
47
48
|
`X-Biaws-Workspace-Id`; argumentos das tools não ampliam esse escopo. A chave
|
|
48
49
|
precisa pertencer ao workspace — selecionar o ID não concede permissões.
|
|
@@ -65,13 +66,13 @@ O pacote público expõe o executável `biaws-mcp`. Clientes configurados pelo C
|
|
|
65
66
|
usam uma versão fixada por meio do cache local do npm:
|
|
66
67
|
|
|
67
68
|
```bash
|
|
68
|
-
npx --yes biaws-mcp@0.
|
|
69
|
+
npx --yes biaws-mcp@0.3.0
|
|
69
70
|
```
|
|
70
71
|
|
|
71
72
|
Também é possível instalá-lo explicitamente:
|
|
72
73
|
|
|
73
74
|
```bash
|
|
74
|
-
npm install --global biaws-mcp@0.
|
|
75
|
+
npm install --global biaws-mcp@0.3.0
|
|
75
76
|
biaws-mcp
|
|
76
77
|
```
|
|
77
78
|
|
|
@@ -90,7 +91,7 @@ npm start
|
|
|
90
91
|
Em um cliente MCP, configure o comando:
|
|
91
92
|
|
|
92
93
|
```bash
|
|
93
|
-
npx --yes biaws-mcp@0.
|
|
94
|
+
npx --yes biaws-mcp@0.3.0
|
|
94
95
|
```
|
|
95
96
|
|
|
96
97
|
O fluxo recomendado é gerar a configuração completa com:
|
|
@@ -163,8 +164,20 @@ Monitoramentos ativos são configurados por referência pública ou ID do runtim
|
|
|
163
164
|
- `runtime_active_monitors_update`;
|
|
164
165
|
- `runtime_active_monitors_archive`.
|
|
165
166
|
|
|
167
|
+
`runtime_monitoring_results_list` consulta o histórico unificado de observações
|
|
168
|
+
ativas, passivas e manuais. `observedFrom` e `observedTo` aceitam uma data
|
|
169
|
+
`YYYY-MM-DD` ou um instante ISO 8601; datas sem horário preservam a semântica de
|
|
170
|
+
dia inteiro no limite final.
|
|
171
|
+
|
|
172
|
+
`runtime_monitoring_health_summary` consulta períodos extensos sem transferir
|
|
173
|
+
todo o histórico. A tool agrega uma série por monitoramento, preserva o pior
|
|
174
|
+
estado observado em cada intervalo e escolhe uma resolução compatível com
|
|
175
|
+
`maxPoints` (50 a 1.000). Sem intervalo explícito, resume os últimos 30 dias.
|
|
176
|
+
Use o resumo para tendências e `runtime_monitoring_results_list` para abrir os
|
|
177
|
+
eventos detalhados dos intervalos relevantes.
|
|
178
|
+
|
|
166
179
|
As tools não aceitam `workspaceId`; o escopo vem exclusivamente de
|
|
167
|
-
`
|
|
180
|
+
`BIAWS_WORKSPACE_ID`. Configurações REST podem referenciar segredos apenas por
|
|
168
181
|
identificadores públicos em `headerRefs`; valores de credenciais não pertencem
|
|
169
182
|
ao MCP. Templates são permitidos somente para o provider REST. Para preparar um
|
|
170
183
|
monitor antes de provisionar o executor, crie-o com `enabled: false`.
|
|
@@ -307,7 +320,7 @@ Este MCP não expõe uma ferramenta genérica de armazenamento. As escritas disp
|
|
|
307
320
|
|
|
308
321
|
O MCP não acessa MongoDB, não executa shell, SSH, deploy ou sincronização Git e
|
|
309
322
|
não recebe valores de senhas, tokens, chaves privadas, kubeconfig ou connection
|
|
310
|
-
strings. A `
|
|
323
|
+
strings. A `BIAWS_API_KEY` é a única credencial do processo e
|
|
311
324
|
é usada exclusivamente no cabeçalho HTTP.
|
|
312
325
|
|
|
313
326
|
Erros da API mantêm o status e o código funcional para que o agente diferencie
|
package/package.json
CHANGED
|
@@ -34,6 +34,16 @@ function activeMonitorsPath(args, monitor = false) {
|
|
|
34
34
|
return monitor ? `${base}/${segment(requiredId(args, "monitorId"))}` : base;
|
|
35
35
|
}
|
|
36
36
|
|
|
37
|
+
function runtimeMonitoringTimelinePath(args) {
|
|
38
|
+
const runtimeReference = requiredId(args, "runtimeReference");
|
|
39
|
+
return `/api/monitoring/runtimes/${segment(runtimeReference)}/timeline`;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
function runtimeMonitoringHealthSummaryPath(args) {
|
|
43
|
+
const runtimeReference = requiredId(args, "runtimeReference");
|
|
44
|
+
return `/api/monitoring/runtimes/${segment(runtimeReference)}/health-summary`;
|
|
45
|
+
}
|
|
46
|
+
|
|
37
47
|
function payload(args, omitted) {
|
|
38
48
|
const excluded = new Set(omitted);
|
|
39
49
|
const result = Object.fromEntries(
|
|
@@ -115,6 +125,32 @@ export function listRuntimeActiveMonitors(args = {}) {
|
|
|
115
125
|
);
|
|
116
126
|
}
|
|
117
127
|
|
|
128
|
+
export function listRuntimeMonitoringResults(args = {}) {
|
|
129
|
+
return fetchJson(
|
|
130
|
+
runtimeMonitoringTimelinePath(args),
|
|
131
|
+
cleanParams({
|
|
132
|
+
observedFrom: args.observedFrom,
|
|
133
|
+
observedTo: args.observedTo,
|
|
134
|
+
status: args.status,
|
|
135
|
+
page: args.page,
|
|
136
|
+
limit: args.limit,
|
|
137
|
+
}),
|
|
138
|
+
);
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
export function getRuntimeMonitoringHealthSummary(args = {}) {
|
|
142
|
+
return fetchJson(
|
|
143
|
+
runtimeMonitoringHealthSummaryPath(args),
|
|
144
|
+
cleanParams({
|
|
145
|
+
observedFrom: args.observedFrom,
|
|
146
|
+
observedTo: args.observedTo,
|
|
147
|
+
status: args.status,
|
|
148
|
+
resolution: args.resolution,
|
|
149
|
+
maxPoints: args.maxPoints,
|
|
150
|
+
}),
|
|
151
|
+
);
|
|
152
|
+
}
|
|
153
|
+
|
|
118
154
|
export function createRuntimeActiveMonitor(args = {}) {
|
|
119
155
|
return sendJson(
|
|
120
156
|
activeMonitorsPath(args),
|
|
@@ -9,8 +9,10 @@ import {
|
|
|
9
9
|
getMonitoringTemplate,
|
|
10
10
|
getMonitoringTemplateContract,
|
|
11
11
|
getMonitoringTemplateUsage,
|
|
12
|
+
getRuntimeMonitoringHealthSummary,
|
|
12
13
|
listMonitoringTemplates,
|
|
13
14
|
listRuntimeActiveMonitors,
|
|
15
|
+
listRuntimeMonitoringResults,
|
|
14
16
|
previewMonitoringTemplate,
|
|
15
17
|
updateRuntimeActiveMonitor,
|
|
16
18
|
validateMonitoringTemplateSample,
|
|
@@ -134,6 +136,69 @@ export const monitoringTools = [
|
|
|
134
136
|
archiveMonitoringTemplate,
|
|
135
137
|
TEMPLATE_VERSION_ID_SCHEMA,
|
|
136
138
|
),
|
|
139
|
+
definition(
|
|
140
|
+
"runtime_monitoring_results_list",
|
|
141
|
+
"Lista resultados históricos unificados de monitoramento de um runtime, com filtros por instante inicial, instante final e status.",
|
|
142
|
+
listRuntimeMonitoringResults,
|
|
143
|
+
schema(
|
|
144
|
+
{
|
|
145
|
+
runtimeReference: ID,
|
|
146
|
+
observedFrom: {
|
|
147
|
+
type: "string",
|
|
148
|
+
description:
|
|
149
|
+
"Data (YYYY-MM-DD) ou instante ISO 8601 inicial, inclusivo",
|
|
150
|
+
},
|
|
151
|
+
observedTo: {
|
|
152
|
+
type: "string",
|
|
153
|
+
description:
|
|
154
|
+
"Data (YYYY-MM-DD, incluindo o dia inteiro) ou instante ISO 8601 final, inclusivo",
|
|
155
|
+
},
|
|
156
|
+
status: {
|
|
157
|
+
type: "string",
|
|
158
|
+
enum: ["unknown", "healthy", "degraded", "unavailable", "stopped"],
|
|
159
|
+
},
|
|
160
|
+
page: { type: "integer", minimum: 1, default: 1 },
|
|
161
|
+
limit: { type: "integer", minimum: 1, maximum: 100, default: 50 },
|
|
162
|
+
},
|
|
163
|
+
["runtimeReference"],
|
|
164
|
+
),
|
|
165
|
+
),
|
|
166
|
+
definition(
|
|
167
|
+
"runtime_monitoring_health_summary",
|
|
168
|
+
"Resume a evolução temporal da saúde de um runtime em séries agregadas por monitor, preservando o pior estado de cada intervalo e limitando a quantidade de pontos.",
|
|
169
|
+
getRuntimeMonitoringHealthSummary,
|
|
170
|
+
schema(
|
|
171
|
+
{
|
|
172
|
+
runtimeReference: ID,
|
|
173
|
+
observedFrom: {
|
|
174
|
+
type: "string",
|
|
175
|
+
description:
|
|
176
|
+
"Data (YYYY-MM-DD) ou instante ISO 8601 inicial; o padrão cobre 30 dias antes do limite final",
|
|
177
|
+
},
|
|
178
|
+
observedTo: {
|
|
179
|
+
type: "string",
|
|
180
|
+
description:
|
|
181
|
+
"Data (YYYY-MM-DD, incluindo o dia inteiro) ou instante ISO 8601 final; o padrão é o instante atual",
|
|
182
|
+
},
|
|
183
|
+
status: {
|
|
184
|
+
type: "string",
|
|
185
|
+
enum: ["unknown", "healthy", "degraded", "unavailable", "stopped"],
|
|
186
|
+
},
|
|
187
|
+
resolution: {
|
|
188
|
+
type: "string",
|
|
189
|
+
enum: ["auto", "1m", "5m", "15m", "1h", "6h", "1d", "7d", "30d"],
|
|
190
|
+
default: "auto",
|
|
191
|
+
},
|
|
192
|
+
maxPoints: {
|
|
193
|
+
type: "integer",
|
|
194
|
+
minimum: 50,
|
|
195
|
+
maximum: 1000,
|
|
196
|
+
default: 400,
|
|
197
|
+
},
|
|
198
|
+
},
|
|
199
|
+
["runtimeReference"],
|
|
200
|
+
),
|
|
201
|
+
),
|
|
137
202
|
definition(
|
|
138
203
|
"runtime_active_monitors_list",
|
|
139
204
|
"Lista os monitoramentos ativos configurados para um runtime acessível no workspace selecionado.",
|
package/src/httpClient.js
CHANGED
|
@@ -9,13 +9,13 @@ const RETRYABLE_STATUSES = new Set([429, 502, 503, 504]);
|
|
|
9
9
|
|
|
10
10
|
function readBaseUrl() {
|
|
11
11
|
const explicit =
|
|
12
|
-
process.env.
|
|
13
|
-
process.env.
|
|
14
|
-
process.env.
|
|
12
|
+
process.env.BIAWS_API_URL ||
|
|
13
|
+
process.env.BIAWS_API_BASE_URL ||
|
|
14
|
+
process.env.VITE_BIAWS_API_URL;
|
|
15
15
|
if (explicit) return explicit.replace(/\/$/u, "");
|
|
16
16
|
|
|
17
|
-
const host = process.env.
|
|
18
|
-
const port = process.env.
|
|
17
|
+
const host = process.env.BIAWS_API_HOST || process.env.HOST || "127.0.0.1";
|
|
18
|
+
const port = process.env.BIAWS_API_PORT || process.env.PORT || "3100";
|
|
19
19
|
return `http://${host}:${port}`;
|
|
20
20
|
}
|
|
21
21
|
|
|
@@ -47,8 +47,8 @@ function buildUrl(path, params = {}) {
|
|
|
47
47
|
}
|
|
48
48
|
|
|
49
49
|
function authenticationHeaders() {
|
|
50
|
-
const apiKey = String(process.env.
|
|
51
|
-
const workspaceId = String(process.env.
|
|
50
|
+
const apiKey = String(process.env.BIAWS_API_KEY || "").trim();
|
|
51
|
+
const workspaceId = String(process.env.BIAWS_WORKSPACE_ID || "").trim();
|
|
52
52
|
return {
|
|
53
53
|
Accept: "application/json",
|
|
54
54
|
...(apiKey ? { Authorization: `Bearer ${apiKey}` } : {}),
|
package/src/index.js
CHANGED
|
@@ -12,7 +12,7 @@ const TOOL_DIR = path.resolve(
|
|
|
12
12
|
|
|
13
13
|
// O workspace pertence à configuração do projeto/cliente MCP. O arquivo da
|
|
14
14
|
// instância fornece URL e credencial, mas não pode mudar esse escopo.
|
|
15
|
-
loadEnv(TOOL_DIR, { preserve: ["
|
|
15
|
+
loadEnv(TOOL_DIR, { preserve: ["BIAWS_WORKSPACE_ID"] });
|
|
16
16
|
|
|
17
17
|
function writeMessage(message) {
|
|
18
18
|
process.stdout.write(`${JSON.stringify(message)}\n`);
|
package/src/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export const SERVER_NAME = "biaws-mcp";
|
|
2
|
-
export const SERVER_VERSION = "0.
|
|
2
|
+
export const SERVER_VERSION = "0.3.0";
|