@mtaap/mcp 0.2.2 → 0.2.3
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/dist/cli.js +167 -1
- package/dist/cli.js.map +1 -1
- package/dist/index.js +167 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -28,7 +28,7 @@ var import_mcp = require("@modelcontextprotocol/sdk/server/mcp.js");
|
|
|
28
28
|
var import_stdio = require("@modelcontextprotocol/sdk/server/stdio.js");
|
|
29
29
|
|
|
30
30
|
// src/version.ts
|
|
31
|
-
var VERSION = "0.2.
|
|
31
|
+
var VERSION = "0.2.3";
|
|
32
32
|
|
|
33
33
|
// src/index.ts
|
|
34
34
|
var import_zod3 = require("zod");
|
|
@@ -443,12 +443,33 @@ var AbandonTaskInputSchema = import_zod2.z.object({
|
|
|
443
443
|
taskId: cuidOrPrefixedId,
|
|
444
444
|
deleteBranch: import_zod2.z.boolean().optional()
|
|
445
445
|
});
|
|
446
|
+
var RequestChangesInputSchema = import_zod2.z.object({
|
|
447
|
+
projectId: cuidOrPrefixedId,
|
|
448
|
+
taskId: cuidOrPrefixedId,
|
|
449
|
+
reviewComments: import_zod2.z.string().min(1).max(5e3),
|
|
450
|
+
requestedChanges: import_zod2.z.array(import_zod2.z.string().min(1).max(500)).optional()
|
|
451
|
+
});
|
|
452
|
+
var ApproveTaskInputSchema = import_zod2.z.object({
|
|
453
|
+
projectId: cuidOrPrefixedId,
|
|
454
|
+
taskId: cuidOrPrefixedId,
|
|
455
|
+
reviewComments: import_zod2.z.string().max(2e3).optional()
|
|
456
|
+
});
|
|
446
457
|
var CreatePersonalProjectInputSchema = import_zod2.z.object({
|
|
447
458
|
name: import_zod2.z.string().min(1).max(100),
|
|
448
459
|
description: import_zod2.z.string().max(500).optional(),
|
|
449
460
|
repositoryUrl: import_zod2.z.string().url()
|
|
450
461
|
});
|
|
451
462
|
var CheckActiveTaskInputSchema = import_zod2.z.object({});
|
|
463
|
+
var CreateTaskMCPInputSchema = import_zod2.z.object({
|
|
464
|
+
projectId: cuidOrPrefixedId,
|
|
465
|
+
epicId: cuidOrPrefixedId.nullable().optional(),
|
|
466
|
+
title: import_zod2.z.string().min(1).max(200),
|
|
467
|
+
description: import_zod2.z.string().max(5e3),
|
|
468
|
+
priority: import_zod2.z.nativeEnum(TaskPriority).default(TaskPriority.MEDIUM),
|
|
469
|
+
acceptanceCriteria: import_zod2.z.array(import_zod2.z.object({
|
|
470
|
+
description: import_zod2.z.string().min(1).max(500)
|
|
471
|
+
})).min(1)
|
|
472
|
+
});
|
|
452
473
|
var CreateOrganizationInputSchema = import_zod2.z.object({
|
|
453
474
|
name: import_zod2.z.string().min(1).max(255),
|
|
454
475
|
slug: import_zod2.z.string().min(1).max(100).regex(/^[a-z0-9-]+$/).optional()
|
|
@@ -986,6 +1007,12 @@ var MCPApiClient = class {
|
|
|
986
1007
|
{ name, description, repositoryUrl }
|
|
987
1008
|
);
|
|
988
1009
|
}
|
|
1010
|
+
/**
|
|
1011
|
+
* Create a task in a project
|
|
1012
|
+
*/
|
|
1013
|
+
async createTask(input) {
|
|
1014
|
+
return this.request("POST", "/api/mcp/tasks", input);
|
|
1015
|
+
}
|
|
989
1016
|
/**
|
|
990
1017
|
* List tasks with optional filters
|
|
991
1018
|
*/
|
|
@@ -1054,6 +1081,25 @@ var MCPApiClient = class {
|
|
|
1054
1081
|
async addNote(taskId, content) {
|
|
1055
1082
|
return this.request("POST", `/api/mcp/tasks/${taskId}/notes`, { content });
|
|
1056
1083
|
}
|
|
1084
|
+
/**
|
|
1085
|
+
* Request changes on a task in review
|
|
1086
|
+
*/
|
|
1087
|
+
async requestChanges(taskId, projectId, reviewComments, requestedChanges) {
|
|
1088
|
+
return this.request("POST", `/api/mcp/tasks/${taskId}/request-changes`, {
|
|
1089
|
+
projectId,
|
|
1090
|
+
reviewComments,
|
|
1091
|
+
requestedChanges
|
|
1092
|
+
});
|
|
1093
|
+
}
|
|
1094
|
+
/**
|
|
1095
|
+
* Approve a task in review and mark as DONE
|
|
1096
|
+
*/
|
|
1097
|
+
async approveTask(taskId, projectId, reviewComments) {
|
|
1098
|
+
return this.request("POST", `/api/mcp/tasks/${taskId}/approve`, {
|
|
1099
|
+
projectId,
|
|
1100
|
+
reviewComments
|
|
1101
|
+
});
|
|
1102
|
+
}
|
|
1057
1103
|
/**
|
|
1058
1104
|
* Get GitHub token
|
|
1059
1105
|
*/
|
|
@@ -1513,6 +1559,126 @@ async function createMCPServer() {
|
|
|
1513
1559
|
}
|
|
1514
1560
|
}
|
|
1515
1561
|
);
|
|
1562
|
+
server.registerTool(
|
|
1563
|
+
"create_task",
|
|
1564
|
+
{
|
|
1565
|
+
description: "Create a new task in a project. Requires WRITE permission and project access.",
|
|
1566
|
+
inputSchema: {
|
|
1567
|
+
projectId: import_zod3.z.string().describe("The project ID to create the task in"),
|
|
1568
|
+
epicId: import_zod3.z.string().nullable().optional().describe("Optional epic ID to associate the task with"),
|
|
1569
|
+
title: import_zod3.z.string().describe("Task title (max 200 chars)"),
|
|
1570
|
+
description: import_zod3.z.string().describe("Task description (max 5000 chars)"),
|
|
1571
|
+
priority: import_zod3.z.nativeEnum(TaskPriority).optional().describe("Task priority: LOW, MEDIUM, HIGH, CRITICAL (default: MEDIUM)"),
|
|
1572
|
+
acceptanceCriteria: import_zod3.z.array(
|
|
1573
|
+
import_zod3.z.object({
|
|
1574
|
+
description: import_zod3.z.string().describe("Acceptance criterion description (max 500 chars)")
|
|
1575
|
+
})
|
|
1576
|
+
).describe("Array of acceptance criteria (at least 1 required)")
|
|
1577
|
+
}
|
|
1578
|
+
},
|
|
1579
|
+
async (args) => {
|
|
1580
|
+
assertApiKeyPermission(
|
|
1581
|
+
mockApiKey,
|
|
1582
|
+
ApiKeyPermission.WRITE,
|
|
1583
|
+
"create_task"
|
|
1584
|
+
);
|
|
1585
|
+
const validated = CreateTaskMCPInputSchema.parse(args);
|
|
1586
|
+
try {
|
|
1587
|
+
const result = await apiClient.createTask({
|
|
1588
|
+
projectId: validated.projectId,
|
|
1589
|
+
epicId: validated.epicId,
|
|
1590
|
+
title: validated.title,
|
|
1591
|
+
description: validated.description,
|
|
1592
|
+
priority: validated.priority,
|
|
1593
|
+
acceptanceCriteria: validated.acceptanceCriteria
|
|
1594
|
+
});
|
|
1595
|
+
return {
|
|
1596
|
+
content: [
|
|
1597
|
+
{
|
|
1598
|
+
type: "text",
|
|
1599
|
+
text: JSON.stringify(result, null, 2)
|
|
1600
|
+
}
|
|
1601
|
+
]
|
|
1602
|
+
};
|
|
1603
|
+
} catch (error) {
|
|
1604
|
+
return handleApiError(error);
|
|
1605
|
+
}
|
|
1606
|
+
}
|
|
1607
|
+
);
|
|
1608
|
+
server.registerTool(
|
|
1609
|
+
"request_changes",
|
|
1610
|
+
{
|
|
1611
|
+
description: "Submit review comments requesting changes on a task in REVIEW state",
|
|
1612
|
+
inputSchema: {
|
|
1613
|
+
projectId: import_zod3.z.string().describe("The project ID"),
|
|
1614
|
+
taskId: import_zod3.z.string().describe("The task ID to review"),
|
|
1615
|
+
reviewComments: import_zod3.z.string().describe("Review comments explaining requested changes (max 5000 chars)"),
|
|
1616
|
+
requestedChanges: import_zod3.z.array(import_zod3.z.string()).optional().describe("List of specific changes requested")
|
|
1617
|
+
}
|
|
1618
|
+
},
|
|
1619
|
+
async (args) => {
|
|
1620
|
+
assertApiKeyPermission(
|
|
1621
|
+
mockApiKey,
|
|
1622
|
+
ApiKeyPermission.WRITE,
|
|
1623
|
+
"request_changes"
|
|
1624
|
+
);
|
|
1625
|
+
const validated = RequestChangesInputSchema.parse(args);
|
|
1626
|
+
try {
|
|
1627
|
+
const result = await apiClient.requestChanges(
|
|
1628
|
+
validated.taskId,
|
|
1629
|
+
validated.projectId,
|
|
1630
|
+
validated.reviewComments,
|
|
1631
|
+
validated.requestedChanges
|
|
1632
|
+
);
|
|
1633
|
+
return {
|
|
1634
|
+
content: [
|
|
1635
|
+
{
|
|
1636
|
+
type: "text",
|
|
1637
|
+
text: JSON.stringify(result, null, 2)
|
|
1638
|
+
}
|
|
1639
|
+
]
|
|
1640
|
+
};
|
|
1641
|
+
} catch (error) {
|
|
1642
|
+
return handleApiError(error);
|
|
1643
|
+
}
|
|
1644
|
+
}
|
|
1645
|
+
);
|
|
1646
|
+
server.registerTool(
|
|
1647
|
+
"approve_task",
|
|
1648
|
+
{
|
|
1649
|
+
description: "Approve a task in REVIEW state and mark it as DONE",
|
|
1650
|
+
inputSchema: {
|
|
1651
|
+
projectId: import_zod3.z.string().describe("The project ID"),
|
|
1652
|
+
taskId: import_zod3.z.string().describe("The task ID to approve"),
|
|
1653
|
+
reviewComments: import_zod3.z.string().optional().describe("Optional approval comments (max 2000 chars)")
|
|
1654
|
+
}
|
|
1655
|
+
},
|
|
1656
|
+
async (args) => {
|
|
1657
|
+
assertApiKeyPermission(
|
|
1658
|
+
mockApiKey,
|
|
1659
|
+
ApiKeyPermission.WRITE,
|
|
1660
|
+
"approve_task"
|
|
1661
|
+
);
|
|
1662
|
+
const validated = ApproveTaskInputSchema.parse(args);
|
|
1663
|
+
try {
|
|
1664
|
+
const result = await apiClient.approveTask(
|
|
1665
|
+
validated.taskId,
|
|
1666
|
+
validated.projectId,
|
|
1667
|
+
validated.reviewComments
|
|
1668
|
+
);
|
|
1669
|
+
return {
|
|
1670
|
+
content: [
|
|
1671
|
+
{
|
|
1672
|
+
type: "text",
|
|
1673
|
+
text: JSON.stringify(result, null, 2)
|
|
1674
|
+
}
|
|
1675
|
+
]
|
|
1676
|
+
};
|
|
1677
|
+
} catch (error) {
|
|
1678
|
+
return handleApiError(error);
|
|
1679
|
+
}
|
|
1680
|
+
}
|
|
1681
|
+
);
|
|
1516
1682
|
server.registerTool(
|
|
1517
1683
|
"get_version",
|
|
1518
1684
|
{
|