@yoryoboy/bi-mcp 1.0.5 → 1.2.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.
Files changed (102) hide show
  1. package/README.md +140 -9
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/index.js +151 -1
  4. package/dist/index.js.map +2 -2
  5. package/dist/mcp-use.json +2 -2
  6. package/dist/scripts/_helpers.js +44 -0
  7. package/dist/scripts/_helpers.js.map +7 -0
  8. package/dist/scripts/admin-profile-delete.js +72 -0
  9. package/dist/scripts/admin-profile-delete.js.map +7 -0
  10. package/dist/scripts/admin-profile-list.js +24 -0
  11. package/dist/scripts/admin-profile-list.js.map +7 -0
  12. package/dist/scripts/admin-profile-upsert.js +25 -0
  13. package/dist/scripts/admin-profile-upsert.js.map +7 -0
  14. package/dist/scripts/admin-vtex-list.js +28 -0
  15. package/dist/scripts/admin-vtex-list.js.map +7 -0
  16. package/dist/scripts/admin-vtex-upsert.js +73 -0
  17. package/dist/scripts/admin-vtex-upsert.js.map +7 -0
  18. package/dist/scripts/admin-vtex-validate.js +55 -0
  19. package/dist/scripts/admin-vtex-validate.js.map +7 -0
  20. package/dist/scripts/run-migrations.js +50 -0
  21. package/dist/scripts/run-migrations.js.map +7 -0
  22. package/dist/scripts/test-db-connection.js +19 -0
  23. package/dist/scripts/test-db-connection.js.map +7 -0
  24. package/dist/src/config/meta.js +29 -0
  25. package/dist/src/config/meta.js.map +7 -0
  26. package/dist/src/config/profile-store.js +86 -0
  27. package/dist/src/config/profile-store.js.map +7 -0
  28. package/dist/src/config/vtex-crypto.js +43 -0
  29. package/dist/src/config/vtex-crypto.js.map +7 -0
  30. package/dist/src/config/vtex-profile-store.js +132 -0
  31. package/dist/src/config/vtex-profile-store.js.map +7 -0
  32. package/dist/src/config/vtex.js +27 -21
  33. package/dist/src/config/vtex.js.map +2 -2
  34. package/dist/src/db/client.js +58 -0
  35. package/dist/src/db/client.js.map +7 -0
  36. package/dist/src/meta/meta-utils.js +148 -0
  37. package/dist/src/meta/meta-utils.js.map +7 -0
  38. package/dist/src/services/meta/meta-ads.js +89 -0
  39. package/dist/src/services/meta/meta-ads.js.map +7 -0
  40. package/dist/src/services/meta/meta-api.js +35 -0
  41. package/dist/src/services/meta/meta-api.js.map +7 -0
  42. package/dist/src/services/vtex/vtex-api.js +24 -8
  43. package/dist/src/services/vtex/vtex-api.js.map +2 -2
  44. package/dist/src/services/vtex/vtex-catalog.js +5 -3
  45. package/dist/src/services/vtex/vtex-catalog.js.map +2 -2
  46. package/dist/src/services/vtex/vtex-logistics.js +18 -9
  47. package/dist/src/services/vtex/vtex-logistics.js.map +2 -2
  48. package/dist/src/services/vtex/vtex-orders.js +13 -7
  49. package/dist/src/services/vtex/vtex-orders.js.map +2 -2
  50. package/dist/src/services/vtex/vtex-pricing.js +5 -3
  51. package/dist/src/services/vtex/vtex-pricing.js.map +2 -2
  52. package/dist/src/tools/config/check-database-connection.js +59 -0
  53. package/dist/src/tools/config/check-database-connection.js.map +7 -0
  54. package/dist/src/tools/config/index.js +3 -0
  55. package/dist/src/tools/config/index.js.map +7 -0
  56. package/dist/src/tools/config/list-profiles.js +26 -0
  57. package/dist/src/tools/config/list-profiles.js.map +7 -0
  58. package/dist/src/tools/index.js +2 -0
  59. package/dist/src/tools/index.js.map +2 -2
  60. package/dist/src/tools/meta/account-overview.js +92 -0
  61. package/dist/src/tools/meta/account-overview.js.map +7 -0
  62. package/dist/src/tools/meta/ad-account-info.js +37 -0
  63. package/dist/src/tools/meta/ad-account-info.js.map +7 -0
  64. package/dist/src/tools/meta/ads-performance.js +79 -0
  65. package/dist/src/tools/meta/ads-performance.js.map +7 -0
  66. package/dist/src/tools/meta/campaign-performance.js +81 -0
  67. package/dist/src/tools/meta/campaign-performance.js.map +7 -0
  68. package/dist/src/tools/meta/index.js +9 -0
  69. package/dist/src/tools/meta/index.js.map +7 -0
  70. package/dist/src/tools/meta/list-accessible-ad-accounts.js +44 -0
  71. package/dist/src/tools/meta/list-accessible-ad-accounts.js.map +7 -0
  72. package/dist/src/tools/meta/list-accessible-businesses.js +36 -0
  73. package/dist/src/tools/meta/list-accessible-businesses.js.map +7 -0
  74. package/dist/src/tools/meta/placement-mix.js +67 -0
  75. package/dist/src/tools/meta/placement-mix.js.map +7 -0
  76. package/dist/src/tools/meta/time-series.js +69 -0
  77. package/dist/src/tools/meta/time-series.js.map +7 -0
  78. package/dist/src/tools/vtex/computed-price.js +12 -1
  79. package/dist/src/tools/vtex/computed-price.js.map +2 -2
  80. package/dist/src/tools/vtex/index.js +1 -0
  81. package/dist/src/tools/vtex/index.js.map +2 -2
  82. package/dist/src/tools/vtex/inventory-check.js +15 -2
  83. package/dist/src/tools/vtex/inventory-check.js.map +2 -2
  84. package/dist/src/tools/vtex/order-details.js +16 -2
  85. package/dist/src/tools/vtex/order-details.js.map +2 -2
  86. package/dist/src/tools/vtex/orders-summary.js +11 -1
  87. package/dist/src/tools/vtex/orders-summary.js.map +2 -2
  88. package/dist/src/tools/vtex/product-offers.js +15 -2
  89. package/dist/src/tools/vtex/product-offers.js.map +2 -2
  90. package/dist/src/tools/vtex/profile-resolution.js +57 -0
  91. package/dist/src/tools/vtex/profile-resolution.js.map +7 -0
  92. package/dist/src/tools/vtex/sku-offers.js +16 -2
  93. package/dist/src/tools/vtex/sku-offers.js.map +2 -2
  94. package/dist/src/tools/vtex/sku-price.js +12 -2
  95. package/dist/src/tools/vtex/sku-price.js.map +2 -2
  96. package/dist/src/tools/vtex/update-inventory.js +12 -1
  97. package/dist/src/tools/vtex/update-inventory.js.map +2 -2
  98. package/dist/src/tools/vtex/update-lead-time.js +12 -1
  99. package/dist/src/tools/vtex/update-lead-time.js.map +2 -2
  100. package/dist/src/tools/vtex/warehouse-inventory.js +12 -1
  101. package/dist/src/tools/vtex/warehouse-inventory.js.map +2 -2
  102. package/package.json +12 -2
package/README.md CHANGED
@@ -4,7 +4,7 @@ MCP monolítico de business intelligence para ecommerce en Argentina, construido
4
4
 
5
5
  Proyecto está pensado para que usuarios puedan consultar datos reales de operación, marketing y adquisición desde un LLM, usando lenguaje natural, y recibir respuestas útiles para análisis, diagnóstico y toma de decisiones.
6
6
 
7
- Hoy el servidor integra VTEX, Google Analytics 4, Search Console, Google Ads y benchmarks de referencia para Argentina. La arquitectura ya está preparada para crecer hacia módulos de finanzas.
7
+ Hoy el servidor integra Config / Infra, VTEX, Google Analytics 4, Search Console, Google Ads, Meta Ads y benchmarks de referencia para Argentina. La arquitectura ya está preparada para crecer hacia módulos de finanzas.
8
8
 
9
9
  ## Índice
10
10
 
@@ -25,8 +25,11 @@ Hoy el servidor integra VTEX, Google Analytics 4, Search Console, Google Ads y b
25
25
 
26
26
  El MCP ya tiene capacidades activas para estas áreas:
27
27
 
28
+ - `Config / Infra`
29
+ Verificación de salud de la base del MCP y listado de perfiles disponibles.
30
+
28
31
  - `VTEX`
29
- Operación comercial, pedidos, stock, inventario por depósito, precios y ofertas.
32
+ Operación comercial, pedidos, stock, inventario por depósito, precios y ofertas, exigiendo selección explícita del `profileId` correcto.
30
33
 
31
34
  - `Analytics (GA4)`
32
35
  Tráfico, revenue medido en GA4, mix de canales, engagement y salud de medición.
@@ -37,6 +40,9 @@ El MCP ya tiene capacidades activas para estas áreas:
37
40
  - `Google Ads`
38
41
  Performance de cuenta, campañas, series temporales, riesgos, break-even y salud de escalabilidad.
39
42
 
43
+ - `Meta Ads`
44
+ Discovery de businesses y cuentas publicitarias, overview de cuenta, performance de campañas y ads, series temporales y mix de placements.
45
+
40
46
  - `Config / Benchmarks AR`
41
47
  Benchmarks argentinos de IIBB, cuotas, pasarelas, logística y calendario comercial.
42
48
 
@@ -52,14 +58,17 @@ Estado real del repo al día de hoy:
52
58
  - `Analytics (GA4)`: implementado
53
59
  - `Search Console`: implementado
54
60
  - `Google Ads`: implementado
61
+ - `Meta Ads`: implementado
55
62
  - `Benchmarks Argentina`: implementado
56
63
  - `Finance`: pendiente
57
64
  - `Diagnostics`: pendiente
58
65
 
59
66
  En términos de superficie funcional actual:
60
67
 
68
+ - `2` tools de Config / Infra
61
69
  - `10` tools de VTEX
62
70
  - `11` tools de Google Ads
71
+ - `8` tools de Meta Ads
63
72
  - `14` tools de Search Console
64
73
  - `11` tools de GA4
65
74
  - `1` tool/config de benchmarks
@@ -140,6 +149,7 @@ Dependiendo del módulo que quieras probar, el entorno puede requerir:
140
149
  - credenciales de VTEX
141
150
  - OAuth de Google para GA4 y Search Console
142
151
  - credenciales de Google Ads
152
+ - credenciales de Meta Marketing API
143
153
 
144
154
  ## Configuración
145
155
 
@@ -147,18 +157,29 @@ La configuración de infraestructura se lee desde `.env`.
147
157
 
148
158
  Variables relevantes hoy:
149
159
 
150
- - `VTEX_ACCOUNT_NAME`
151
- - `VTEX_API_KEY`
152
- - `VTEX_API_TOKEN`
153
160
  - `GOOGLE_OAUTH_CLIENT_ID`
154
161
  - `GOOGLE_OAUTH_CLIENT_SECRET`
155
162
  - `GOOGLE_OAUTH_REFRESH_TOKEN`
156
163
  - `GA4_PROPERTY_ID`
157
164
  - `GOOGLE_ADS_DEVELOPER_TOKEN`
158
165
  - `GOOGLE_ADS_LOGIN_CUSTOMER_ID`
166
+ - `META_APP_ID`
167
+ - `META_APP_SECRET`
168
+ - `META_ACCESS_TOKEN`
169
+ - `META_API_VERSION`
159
170
  - `MCP_TRANSPORT`
160
171
  - `PORT`
161
172
  - `MCP_URL`
173
+ - `DATABASE_URL`
174
+ - `DB_ENCRYPTION_KEY`
175
+
176
+ Importante:
177
+
178
+ - las credenciales VTEX por cliente ya no deben vivir en `.env`
179
+ - `.env` ahora guarda solo infraestructura, secretos globales del servidor y la key de cifrado para persistencia VTEX
180
+ - las credenciales VTEX por perfil se cargan por scripts administrativos hacia Postgres
181
+ - las tools VTEX no usan fallback silencioso a `default`
182
+ - si falta `profileId` o es inválido, responden con una selección guiada de perfiles activos
162
183
 
163
184
  Reglas importantes:
164
185
 
@@ -185,6 +206,20 @@ Desarrollo:
185
206
  pnpm run dev
186
207
  ```
187
208
 
209
+ Base local y migraciones:
210
+
211
+ ```bash
212
+ docker compose up -d
213
+ pnpm run db:test
214
+ pnpm run db:migrate
215
+ ```
216
+
217
+ Hard delete administrativo de perfil:
218
+
219
+ ```bash
220
+ pnpm run admin:profile-delete -- --profile-id <id> --confirm-delete <id>
221
+ ```
222
+
188
223
  Build:
189
224
 
190
225
  ```bash
@@ -213,15 +248,18 @@ Uso vía `npx` después de publicar el paquete:
213
248
  "args": ["-y", "@yoryoboy/bi-mcp"],
214
249
  "env": {
215
250
  "MCP_TRANSPORT": "stdio",
216
- "VTEX_ACCOUNT_NAME": "your_vtex_account_name",
217
- "VTEX_API_KEY": "your_vtex_api_key",
218
- "VTEX_API_TOKEN": "your_vtex_api_token",
219
251
  "GOOGLE_OAUTH_CLIENT_ID": "your_google_oauth_client_id",
220
252
  "GOOGLE_OAUTH_CLIENT_SECRET": "your_google_oauth_client_secret",
221
253
  "GOOGLE_OAUTH_REFRESH_TOKEN": "your_google_oauth_refresh_token",
222
254
  "GA4_PROPERTY_ID": "your_ga4_property_id",
223
255
  "GOOGLE_ADS_DEVELOPER_TOKEN": "your_google_ads_developer_token",
224
- "GOOGLE_ADS_LOGIN_CUSTOMER_ID": "your_google_ads_login_customer_id"
256
+ "GOOGLE_ADS_LOGIN_CUSTOMER_ID": "your_google_ads_login_customer_id",
257
+ "META_APP_ID": "your_meta_app_id",
258
+ "META_APP_SECRET": "your_meta_app_secret",
259
+ "META_ACCESS_TOKEN": "your_meta_access_token",
260
+ "META_API_VERSION": "v25.0",
261
+ "DATABASE_URL": "your_postgres_connection_string",
262
+ "DB_ENCRYPTION_KEY": "your_64_hex_char_encryption_key"
225
263
  }
226
264
  }
227
265
  }
@@ -231,6 +269,7 @@ Uso vía `npx` después de publicar el paquete:
231
269
  Puntos importantes para ese modo:
232
270
 
233
271
  - en configuración por `command`, el transporte correcto es `stdio`, por eso hay que pasar `MCP_TRANSPORT=stdio`
272
+ - si el servidor va a usar persistencia de secretos en DB, además necesita `DATABASE_URL` y `DB_ENCRYPTION_KEY`
234
273
 
235
274
  Flujo típico de publicación:
236
275
 
@@ -245,6 +284,91 @@ En desarrollo, `mcp-use` expone el inspector para probar el servidor localmente.
245
284
  http://localhost:3000/inspector
246
285
  ```
247
286
 
287
+ ## Scripts operativos de base y perfiles
288
+
289
+ Estos scripts viven en `scripts/` y usan Postgres como store de perfiles e integraciones VTEX.
290
+
291
+ ### `test-db-connection.ts`
292
+
293
+ - propósito: probar que `DATABASE_URL` responde
294
+ - muta datos: no
295
+ - requiere Postgres levantado: sí
296
+ - comando:
297
+
298
+ ```bash
299
+ pnpm run db:test
300
+ ```
301
+
302
+ ### `run-migrations.ts`
303
+
304
+ - propósito: aplicar migraciones SQL pendientes desde `db/migrations/`
305
+ - muta datos: sí, cambia estructura de DB
306
+ - requiere Postgres levantado: sí
307
+ - comando:
308
+
309
+ ```bash
310
+ pnpm run db:migrate
311
+ ```
312
+
313
+ ### `admin-profile-upsert.ts`
314
+
315
+ - propósito: crear o actualizar un perfil
316
+ - muta datos: sí
317
+ - requiere Postgres levantado: sí
318
+ - comando:
319
+
320
+ ```bash
321
+ pnpm run admin:profile-upsert -- --profile-id default --name "Default"
322
+ ```
323
+
324
+ ### `admin-profile-list.ts`
325
+
326
+ - propósito: listar perfiles cargados
327
+ - muta datos: no
328
+ - requiere Postgres levantado: sí
329
+ - comando:
330
+
331
+ ```bash
332
+ pnpm run admin:profile-list
333
+ ```
334
+
335
+ ### `admin-vtex-upsert.ts`
336
+
337
+ - propósito: crear o actualizar la conexión VTEX de un perfil y validarla
338
+ - muta datos: sí
339
+ - requiere Postgres levantado: sí
340
+ - comando:
341
+
342
+ ```bash
343
+ pnpm run admin:vtex-upsert -- \
344
+ --profile-id default \
345
+ --account-name miaccount \
346
+ --api-key xxx \
347
+ --api-token yyy
348
+ ```
349
+
350
+ ### `admin-vtex-validate.ts`
351
+
352
+ - propósito: revalidar una conexión VTEX ya guardada
353
+ - muta datos: sí, actualiza estado y timestamps
354
+ - requiere Postgres levantado: sí
355
+ - comando:
356
+
357
+ ```bash
358
+ pnpm run admin:vtex-validate -- --profile-id default
359
+ ```
360
+
361
+ ### `admin-vtex-list.ts`
362
+
363
+ - propósito: listar conexiones VTEX registradas
364
+ - muta datos: no
365
+ - requiere Postgres levantado: sí
366
+ - comando:
367
+
368
+ ```bash
369
+ pnpm run admin:vtex-list
370
+ ```
371
+
248
372
  ## Estructura del repositorio
249
373
 
250
374
  Resumen de las rutas más importantes:
@@ -253,9 +377,12 @@ Resumen de las rutas más importantes:
253
377
  bi-mcp/
254
378
  ├── AGENTS.md
255
379
  ├── README.md
380
+ ├── db/
256
381
  ├── docs/
257
382
  ├── index.ts
383
+ ├── scripts/
258
384
  ├── src/
385
+ │ ├── db/
259
386
  │ ├── config/
260
387
  │ ├── services/
261
388
  │ │ ├── analytics/
@@ -263,6 +390,7 @@ bi-mcp/
263
390
  │ │ ├── search-console/
264
391
  │ │ └── vtex/
265
392
  │ ├── tools/
393
+ │ │ ├── config/
266
394
  │ │ ├── analytics/
267
395
  │ │ ├── google-ads/
268
396
  │ │ ├── search-console/
@@ -284,6 +412,9 @@ Puntos de entrada y referencia:
284
412
  - [src/config/benchmarks.ts](/home/yoryo/apps/bi-mcp/src/config/benchmarks.ts)
285
413
  Benchmarks argentinos expuestos por el servidor.
286
414
 
415
+ - [db/AGENTS.md](/home/yoryo/apps/bi-mcp/db/AGENTS.md)
416
+ Reglas de la capa de persistencia y de las migraciones SQL.
417
+
287
418
  ## Flujo de trabajo para desarrollo
288
419
 
289
420
  Si vas a tocar código en este repo, la referencia obligatoria es [AGENTS.md](/home/yoryo/apps/bi-mcp/AGENTS.md).