@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/index.js
CHANGED
|
@@ -37,7 +37,7 @@ var import_mcp = require("@modelcontextprotocol/sdk/server/mcp.js");
|
|
|
37
37
|
var import_stdio = require("@modelcontextprotocol/sdk/server/stdio.js");
|
|
38
38
|
|
|
39
39
|
// src/version.ts
|
|
40
|
-
var VERSION = "0.2.
|
|
40
|
+
var VERSION = "0.2.3";
|
|
41
41
|
|
|
42
42
|
// src/index.ts
|
|
43
43
|
var import_zod3 = require("zod");
|
|
@@ -452,12 +452,33 @@ var AbandonTaskInputSchema = import_zod2.z.object({
|
|
|
452
452
|
taskId: cuidOrPrefixedId,
|
|
453
453
|
deleteBranch: import_zod2.z.boolean().optional()
|
|
454
454
|
});
|
|
455
|
+
var RequestChangesInputSchema = import_zod2.z.object({
|
|
456
|
+
projectId: cuidOrPrefixedId,
|
|
457
|
+
taskId: cuidOrPrefixedId,
|
|
458
|
+
reviewComments: import_zod2.z.string().min(1).max(5e3),
|
|
459
|
+
requestedChanges: import_zod2.z.array(import_zod2.z.string().min(1).max(500)).optional()
|
|
460
|
+
});
|
|
461
|
+
var ApproveTaskInputSchema = import_zod2.z.object({
|
|
462
|
+
projectId: cuidOrPrefixedId,
|
|
463
|
+
taskId: cuidOrPrefixedId,
|
|
464
|
+
reviewComments: import_zod2.z.string().max(2e3).optional()
|
|
465
|
+
});
|
|
455
466
|
var CreatePersonalProjectInputSchema = import_zod2.z.object({
|
|
456
467
|
name: import_zod2.z.string().min(1).max(100),
|
|
457
468
|
description: import_zod2.z.string().max(500).optional(),
|
|
458
469
|
repositoryUrl: import_zod2.z.string().url()
|
|
459
470
|
});
|
|
460
471
|
var CheckActiveTaskInputSchema = import_zod2.z.object({});
|
|
472
|
+
var CreateTaskMCPInputSchema = import_zod2.z.object({
|
|
473
|
+
projectId: cuidOrPrefixedId,
|
|
474
|
+
epicId: cuidOrPrefixedId.nullable().optional(),
|
|
475
|
+
title: import_zod2.z.string().min(1).max(200),
|
|
476
|
+
description: import_zod2.z.string().max(5e3),
|
|
477
|
+
priority: import_zod2.z.nativeEnum(TaskPriority).default(TaskPriority.MEDIUM),
|
|
478
|
+
acceptanceCriteria: import_zod2.z.array(import_zod2.z.object({
|
|
479
|
+
description: import_zod2.z.string().min(1).max(500)
|
|
480
|
+
})).min(1)
|
|
481
|
+
});
|
|
461
482
|
var CreateOrganizationInputSchema = import_zod2.z.object({
|
|
462
483
|
name: import_zod2.z.string().min(1).max(255),
|
|
463
484
|
slug: import_zod2.z.string().min(1).max(100).regex(/^[a-z0-9-]+$/).optional()
|
|
@@ -995,6 +1016,12 @@ var MCPApiClient = class {
|
|
|
995
1016
|
{ name, description, repositoryUrl }
|
|
996
1017
|
);
|
|
997
1018
|
}
|
|
1019
|
+
/**
|
|
1020
|
+
* Create a task in a project
|
|
1021
|
+
*/
|
|
1022
|
+
async createTask(input) {
|
|
1023
|
+
return this.request("POST", "/api/mcp/tasks", input);
|
|
1024
|
+
}
|
|
998
1025
|
/**
|
|
999
1026
|
* List tasks with optional filters
|
|
1000
1027
|
*/
|
|
@@ -1063,6 +1090,25 @@ var MCPApiClient = class {
|
|
|
1063
1090
|
async addNote(taskId, content) {
|
|
1064
1091
|
return this.request("POST", `/api/mcp/tasks/${taskId}/notes`, { content });
|
|
1065
1092
|
}
|
|
1093
|
+
/**
|
|
1094
|
+
* Request changes on a task in review
|
|
1095
|
+
*/
|
|
1096
|
+
async requestChanges(taskId, projectId, reviewComments, requestedChanges) {
|
|
1097
|
+
return this.request("POST", `/api/mcp/tasks/${taskId}/request-changes`, {
|
|
1098
|
+
projectId,
|
|
1099
|
+
reviewComments,
|
|
1100
|
+
requestedChanges
|
|
1101
|
+
});
|
|
1102
|
+
}
|
|
1103
|
+
/**
|
|
1104
|
+
* Approve a task in review and mark as DONE
|
|
1105
|
+
*/
|
|
1106
|
+
async approveTask(taskId, projectId, reviewComments) {
|
|
1107
|
+
return this.request("POST", `/api/mcp/tasks/${taskId}/approve`, {
|
|
1108
|
+
projectId,
|
|
1109
|
+
reviewComments
|
|
1110
|
+
});
|
|
1111
|
+
}
|
|
1066
1112
|
/**
|
|
1067
1113
|
* Get GitHub token
|
|
1068
1114
|
*/
|
|
@@ -1522,6 +1568,126 @@ async function createMCPServer() {
|
|
|
1522
1568
|
}
|
|
1523
1569
|
}
|
|
1524
1570
|
);
|
|
1571
|
+
server.registerTool(
|
|
1572
|
+
"create_task",
|
|
1573
|
+
{
|
|
1574
|
+
description: "Create a new task in a project. Requires WRITE permission and project access.",
|
|
1575
|
+
inputSchema: {
|
|
1576
|
+
projectId: import_zod3.z.string().describe("The project ID to create the task in"),
|
|
1577
|
+
epicId: import_zod3.z.string().nullable().optional().describe("Optional epic ID to associate the task with"),
|
|
1578
|
+
title: import_zod3.z.string().describe("Task title (max 200 chars)"),
|
|
1579
|
+
description: import_zod3.z.string().describe("Task description (max 5000 chars)"),
|
|
1580
|
+
priority: import_zod3.z.nativeEnum(TaskPriority).optional().describe("Task priority: LOW, MEDIUM, HIGH, CRITICAL (default: MEDIUM)"),
|
|
1581
|
+
acceptanceCriteria: import_zod3.z.array(
|
|
1582
|
+
import_zod3.z.object({
|
|
1583
|
+
description: import_zod3.z.string().describe("Acceptance criterion description (max 500 chars)")
|
|
1584
|
+
})
|
|
1585
|
+
).describe("Array of acceptance criteria (at least 1 required)")
|
|
1586
|
+
}
|
|
1587
|
+
},
|
|
1588
|
+
async (args) => {
|
|
1589
|
+
assertApiKeyPermission(
|
|
1590
|
+
mockApiKey,
|
|
1591
|
+
ApiKeyPermission.WRITE,
|
|
1592
|
+
"create_task"
|
|
1593
|
+
);
|
|
1594
|
+
const validated = CreateTaskMCPInputSchema.parse(args);
|
|
1595
|
+
try {
|
|
1596
|
+
const result = await apiClient.createTask({
|
|
1597
|
+
projectId: validated.projectId,
|
|
1598
|
+
epicId: validated.epicId,
|
|
1599
|
+
title: validated.title,
|
|
1600
|
+
description: validated.description,
|
|
1601
|
+
priority: validated.priority,
|
|
1602
|
+
acceptanceCriteria: validated.acceptanceCriteria
|
|
1603
|
+
});
|
|
1604
|
+
return {
|
|
1605
|
+
content: [
|
|
1606
|
+
{
|
|
1607
|
+
type: "text",
|
|
1608
|
+
text: JSON.stringify(result, null, 2)
|
|
1609
|
+
}
|
|
1610
|
+
]
|
|
1611
|
+
};
|
|
1612
|
+
} catch (error) {
|
|
1613
|
+
return handleApiError(error);
|
|
1614
|
+
}
|
|
1615
|
+
}
|
|
1616
|
+
);
|
|
1617
|
+
server.registerTool(
|
|
1618
|
+
"request_changes",
|
|
1619
|
+
{
|
|
1620
|
+
description: "Submit review comments requesting changes on a task in REVIEW state",
|
|
1621
|
+
inputSchema: {
|
|
1622
|
+
projectId: import_zod3.z.string().describe("The project ID"),
|
|
1623
|
+
taskId: import_zod3.z.string().describe("The task ID to review"),
|
|
1624
|
+
reviewComments: import_zod3.z.string().describe("Review comments explaining requested changes (max 5000 chars)"),
|
|
1625
|
+
requestedChanges: import_zod3.z.array(import_zod3.z.string()).optional().describe("List of specific changes requested")
|
|
1626
|
+
}
|
|
1627
|
+
},
|
|
1628
|
+
async (args) => {
|
|
1629
|
+
assertApiKeyPermission(
|
|
1630
|
+
mockApiKey,
|
|
1631
|
+
ApiKeyPermission.WRITE,
|
|
1632
|
+
"request_changes"
|
|
1633
|
+
);
|
|
1634
|
+
const validated = RequestChangesInputSchema.parse(args);
|
|
1635
|
+
try {
|
|
1636
|
+
const result = await apiClient.requestChanges(
|
|
1637
|
+
validated.taskId,
|
|
1638
|
+
validated.projectId,
|
|
1639
|
+
validated.reviewComments,
|
|
1640
|
+
validated.requestedChanges
|
|
1641
|
+
);
|
|
1642
|
+
return {
|
|
1643
|
+
content: [
|
|
1644
|
+
{
|
|
1645
|
+
type: "text",
|
|
1646
|
+
text: JSON.stringify(result, null, 2)
|
|
1647
|
+
}
|
|
1648
|
+
]
|
|
1649
|
+
};
|
|
1650
|
+
} catch (error) {
|
|
1651
|
+
return handleApiError(error);
|
|
1652
|
+
}
|
|
1653
|
+
}
|
|
1654
|
+
);
|
|
1655
|
+
server.registerTool(
|
|
1656
|
+
"approve_task",
|
|
1657
|
+
{
|
|
1658
|
+
description: "Approve a task in REVIEW state and mark it as DONE",
|
|
1659
|
+
inputSchema: {
|
|
1660
|
+
projectId: import_zod3.z.string().describe("The project ID"),
|
|
1661
|
+
taskId: import_zod3.z.string().describe("The task ID to approve"),
|
|
1662
|
+
reviewComments: import_zod3.z.string().optional().describe("Optional approval comments (max 2000 chars)")
|
|
1663
|
+
}
|
|
1664
|
+
},
|
|
1665
|
+
async (args) => {
|
|
1666
|
+
assertApiKeyPermission(
|
|
1667
|
+
mockApiKey,
|
|
1668
|
+
ApiKeyPermission.WRITE,
|
|
1669
|
+
"approve_task"
|
|
1670
|
+
);
|
|
1671
|
+
const validated = ApproveTaskInputSchema.parse(args);
|
|
1672
|
+
try {
|
|
1673
|
+
const result = await apiClient.approveTask(
|
|
1674
|
+
validated.taskId,
|
|
1675
|
+
validated.projectId,
|
|
1676
|
+
validated.reviewComments
|
|
1677
|
+
);
|
|
1678
|
+
return {
|
|
1679
|
+
content: [
|
|
1680
|
+
{
|
|
1681
|
+
type: "text",
|
|
1682
|
+
text: JSON.stringify(result, null, 2)
|
|
1683
|
+
}
|
|
1684
|
+
]
|
|
1685
|
+
};
|
|
1686
|
+
} catch (error) {
|
|
1687
|
+
return handleApiError(error);
|
|
1688
|
+
}
|
|
1689
|
+
}
|
|
1690
|
+
);
|
|
1525
1691
|
server.registerTool(
|
|
1526
1692
|
"get_version",
|
|
1527
1693
|
{
|