orquestra-mcp 1.8.0 → 1.9.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/package.json +2 -2
- package/src/server.mjs +26 -2
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "orquestra-mcp",
|
|
3
|
-
"version": "1.
|
|
4
|
-
"description": "Servidor MCP de Orquestra --
|
|
3
|
+
"version": "1.9.0",
|
|
4
|
+
"description": "Servidor MCP de Orquestra -- 71 tools para leer y escribir tareas, ideas, changelog, infraestructura, contenido, QA y más desde un agente de IA",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
7
7
|
"orquestra-mcp": "./bin/orquestra-mcp.mjs"
|
package/src/server.mjs
CHANGED
|
@@ -44,7 +44,7 @@ const SETUP_GUIDE = {
|
|
|
44
44
|
{ step: 4, section: 'Módulos', check: 'list_modules', createOrUpdate: 'create_module / update_module', matchBy: 'name', dependsOn: ['statusId (paso 1)', 'categoryId (paso 2)'] },
|
|
45
45
|
{ step: 5, section: 'Tareas', check: 'list_tasks', createOrUpdate: 'create_task / update_task', matchBy: 'title', dependsOn: ['statusId', 'categoryId', 'moduleId'] },
|
|
46
46
|
{ step: 6, section: 'Ideas', check: 'search', createOrUpdate: 'create_idea / update_idea / convert_idea_to_task', matchBy: 'title' },
|
|
47
|
-
{ step: 7, section: 'Notas', check: '
|
|
47
|
+
{ step: 7, section: 'Notas', check: 'list_notes', createOrUpdate: 'create_note / update_note', matchBy: 'title' },
|
|
48
48
|
{ step: 8, section: 'Changelog', check: 'list_changelog', createOrUpdate: 'create_changelog_entry / update_changelog_entry', matchBy: 'text' },
|
|
49
49
|
{ step: 9, section: 'Docs', check: 'search', createOrUpdate: 'create_doc (sin update_doc todavía)', matchBy: 'title' },
|
|
50
50
|
],
|
|
@@ -796,6 +796,10 @@ export function createServer() {
|
|
|
796
796
|
}
|
|
797
797
|
)
|
|
798
798
|
|
|
799
|
+
registerRead('list_notes', '/v1/notes',
|
|
800
|
+
'Lista TODAS las notas de un proyecto de Orquestra, con todos sus campos -- a diferencia de get_project_context/search (resumen recortado), útil para auditar o encontrar el id exacto antes de update_note.',
|
|
801
|
+
{}, (args, projectId) => ({ projectId }))
|
|
802
|
+
|
|
799
803
|
registerCreate(
|
|
800
804
|
'create_note',
|
|
801
805
|
'/v1/notes',
|
|
@@ -816,6 +820,24 @@ export function createServer() {
|
|
|
816
820
|
}
|
|
817
821
|
)
|
|
818
822
|
|
|
823
|
+
registerUpdate('update_note', '/v1/notes',
|
|
824
|
+
'Edita una nota existente. Todos los campos son opcionales -- solo se cambian los que mandes.',
|
|
825
|
+
{
|
|
826
|
+
title: z.string().optional(),
|
|
827
|
+
body: z.string().optional(),
|
|
828
|
+
pinned: z.boolean().optional(),
|
|
829
|
+
moduleId: z.string().optional(),
|
|
830
|
+
taskId: z.string().optional(),
|
|
831
|
+
type: z.enum(NOTE_TYPES).optional(),
|
|
832
|
+
alternativesConsidered: z.string().optional(),
|
|
833
|
+
wouldRevertIf: z.string().optional(),
|
|
834
|
+
visibility: z.enum(NOTE_VISIBILITY).optional(),
|
|
835
|
+
relatedNoteId: z.string().optional(),
|
|
836
|
+
adrDocId: z.string().optional().describe('Liga esta nota a un doc ADR ya creado. No lo mandes junto con publishAsAdr.'),
|
|
837
|
+
publishAsAdr: z.boolean().optional().describe('Genera el doc ADR recién ahora (útil si la nota se marcó "decision" después de creada) y liga adrDocId -- falla si la nota ya tiene uno.'),
|
|
838
|
+
}
|
|
839
|
+
)
|
|
840
|
+
|
|
819
841
|
registerCreate(
|
|
820
842
|
'create_doc',
|
|
821
843
|
'/v1/docs',
|
|
@@ -1251,6 +1273,7 @@ export function createServer() {
|
|
|
1251
1273
|
description: z.string().optional(),
|
|
1252
1274
|
phase: z.string().optional().describe('idea | mvp | v1 | v2 | beta | produccion (default: idea)'),
|
|
1253
1275
|
projectType: z.enum(['code', 'content', 'hybrid']).optional().describe('Default: hybrid'),
|
|
1276
|
+
scale: z.enum(['landing', 'app', 'platform']).optional().describe('Default implícito: app. Eje ORTOGONAL a projectType -- "landing" es una página estática sin backend/auth/db propios (evita que las sugerencias de setup propongan infra que no aplica).'),
|
|
1254
1277
|
url: z.string().optional(),
|
|
1255
1278
|
distributions: z.array(z.enum(PLATFORM_TYPES)).optional().describe('Plataformas a crear, ej: ["web","ios"]'),
|
|
1256
1279
|
categories: z.array(z.string()).optional().describe('Nombres de categorías a crear (default: ["General"])'),
|
|
@@ -1269,13 +1292,14 @@ export function createServer() {
|
|
|
1269
1292
|
server.registerTool(
|
|
1270
1293
|
'update_project',
|
|
1271
1294
|
{
|
|
1272
|
-
description: 'Edita el proyecto configurado (name, description, phase, projectType, url). Útil para sincronizar la fase real de un proyecto que ya estaba avanzado antes de conectarlo a Orquestra -- get_project_context puede verse "vacío" (sin módulos/tareas) sin que eso signifique que el proyecto recién empieza.',
|
|
1295
|
+
description: 'Edita el proyecto configurado (name, description, phase, projectType, scale, url). Útil para sincronizar la fase real de un proyecto que ya estaba avanzado antes de conectarlo a Orquestra -- get_project_context puede verse "vacío" (sin módulos/tareas) sin que eso signifique que el proyecto recién empieza.',
|
|
1273
1296
|
inputSchema: {
|
|
1274
1297
|
projectId: z.string().optional().describe(PROJECT_ID_DESC),
|
|
1275
1298
|
name: z.string().optional(),
|
|
1276
1299
|
description: z.string().optional(),
|
|
1277
1300
|
phase: z.string().optional().describe('idea | mvp | v1 | v2 | beta | produccion'),
|
|
1278
1301
|
projectType: z.enum(['code', 'content', 'hybrid']).optional(),
|
|
1302
|
+
scale: z.enum(['landing', 'app', 'platform']).optional().describe('Eje ORTOGONAL a projectType, no lo reemplaza -- "landing" es una página estática sin backend/auth/db propios (ej. un portafolio o sitio de marketing): marcalo así si el proyecto es claramente eso, para que las sugerencias de setup dejen de proponer backend/auth/database. Default implícito "app" si no se manda -- sin este campo, el comportamiento es igual que antes.'),
|
|
1279
1303
|
url: z.string().optional(),
|
|
1280
1304
|
},
|
|
1281
1305
|
},
|