@manhq/localmcp 1.0.5 → 1.0.7
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/services/atlassian/tools/jira.d.ts.map +1 -1
- package/dist/services/atlassian/tools/jira.js +136 -16
- package/dist/services/atlassian/tools/jira.js.map +1 -1
- package/dist/services/atlassian/types.d.ts +1 -0
- package/dist/services/atlassian/types.d.ts.map +1 -1
- package/dist/services/figma/desktop-adapter.d.ts +21 -0
- package/dist/services/figma/desktop-adapter.d.ts.map +1 -0
- package/dist/services/figma/desktop-adapter.js +67 -0
- package/dist/services/figma/desktop-adapter.js.map +1 -0
- package/dist/services/figma/desktop.d.ts +4 -0
- package/dist/services/figma/desktop.d.ts.map +1 -0
- package/dist/services/figma/desktop.js +63 -0
- package/dist/services/figma/desktop.js.map +1 -0
- package/docs/atlassian.md +44 -4
- package/docs/vi/atlassian.md +44 -4
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jira.d.ts","sourceRoot":"","sources":["../../../../src/services/atlassian/tools/jira.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"jira.d.ts","sourceRoot":"","sources":["../../../../src/services/atlassian/tools/jira.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAuBpE,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAqZ1E"}
|
|
@@ -2,6 +2,16 @@ import { z } from "zod";
|
|
|
2
2
|
import { getJiraClient } from "../client.js";
|
|
3
3
|
import { handleToolError } from "../../../shared/errors.js";
|
|
4
4
|
import { toTextResponse } from "../../../shared/response.js";
|
|
5
|
+
const jiraFieldValueSchema = z.union([
|
|
6
|
+
z.string(),
|
|
7
|
+
z.number(),
|
|
8
|
+
z.boolean(),
|
|
9
|
+
z.null(),
|
|
10
|
+
z.array(z.unknown()),
|
|
11
|
+
z.record(z.string(), z.unknown()),
|
|
12
|
+
]);
|
|
13
|
+
const jiraFieldsSchema = z.record(z.string(), jiraFieldValueSchema);
|
|
14
|
+
const jiraCustomFieldsSchema = z.record(z.string().regex(/^customfield_\d+$/, "Use Jira custom field IDs like customfield_10015."), jiraFieldValueSchema);
|
|
5
15
|
export function registerJiraTools(server, prefix) {
|
|
6
16
|
const p = (name) => (prefix ? `${prefix}_${name}` : name);
|
|
7
17
|
server.registerTool(p("getJiraIssue"), {
|
|
@@ -37,15 +47,18 @@ export function registerJiraTools(server, prefix) {
|
|
|
37
47
|
}
|
|
38
48
|
});
|
|
39
49
|
server.registerTool(p("createJiraIssue"), {
|
|
40
|
-
description: "Create a new Jira issue in a project. Returns the created issue key and URL.",
|
|
50
|
+
description: "Create a new Jira issue in a project. Returns the created issue key and URL. To create a subtask, set issueType to a subtask issue type and provide parentKey or parentId. Supports customFields keyed by Jira field ID.",
|
|
41
51
|
inputSchema: z.object({
|
|
42
52
|
projectKey: z.string().describe("Project key, e.g. 'PROJ'"),
|
|
43
53
|
summary: z.string().describe("Issue title/summary"),
|
|
44
|
-
issueType: z.string().default("Task").describe("Issue type: 'Task', 'Bug', 'Story', etc."),
|
|
54
|
+
issueType: z.string().default("Task").describe("Issue type: 'Task', 'Bug', 'Story', 'Subtask', etc."),
|
|
45
55
|
description: z.string().optional().describe("Issue description (plain text)"),
|
|
46
56
|
assigneeAccountId: z.string().optional().describe("Assignee account ID"),
|
|
57
|
+
parentKey: z.string().optional().describe("Parent issue key, e.g. 'PROJ-123'. Required when creating a subtask unless parentId is provided."),
|
|
58
|
+
parentId: z.string().optional().describe("Parent issue ID. Required when creating a subtask unless parentKey is provided."),
|
|
59
|
+
customFields: jiraCustomFieldsSchema.optional().describe("Custom field values keyed by Jira field ID, e.g. {\"customfield_10015\":\"2026-07-07\"}. Date fields usually use YYYY-MM-DD."),
|
|
47
60
|
}),
|
|
48
|
-
}, async ({ projectKey, summary, issueType, description, assigneeAccountId }) => {
|
|
61
|
+
}, async ({ projectKey, summary, issueType, description, assigneeAccountId, parentKey, parentId, customFields }) => {
|
|
49
62
|
try {
|
|
50
63
|
const fields = {
|
|
51
64
|
project: { key: projectKey },
|
|
@@ -60,6 +73,13 @@ export function registerJiraTools(server, prefix) {
|
|
|
60
73
|
}
|
|
61
74
|
if (assigneeAccountId)
|
|
62
75
|
fields.assignee = { accountId: assigneeAccountId };
|
|
76
|
+
const parentField = toJiraParentField(parentKey, parentId);
|
|
77
|
+
if (isSubtaskIssueType(issueType) && !parentField) {
|
|
78
|
+
throw new Error("Creating a Jira subtask requires parentKey or parentId.");
|
|
79
|
+
}
|
|
80
|
+
if (parentField)
|
|
81
|
+
fields.parent = parentField;
|
|
82
|
+
applyJiraFields(fields, customFields);
|
|
63
83
|
const { data } = await getJiraClient().post("/issue", { fields });
|
|
64
84
|
return toTextResponse({ id: data.id, key: data.key, url: data.self });
|
|
65
85
|
}
|
|
@@ -68,15 +88,17 @@ export function registerJiraTools(server, prefix) {
|
|
|
68
88
|
}
|
|
69
89
|
});
|
|
70
90
|
server.registerTool(p("editJiraIssue"), {
|
|
71
|
-
description: "Modify field values of an existing Jira issue
|
|
91
|
+
description: "Modify field values of an existing Jira issue. Supports summary, description, assignee, priority, arbitrary Jira fields, and customFields keyed by Jira field ID.",
|
|
72
92
|
inputSchema: z.object({
|
|
73
93
|
issueIdOrKey: z.string().describe("Issue ID or key"),
|
|
74
94
|
summary: z.string().optional().describe("New summary"),
|
|
75
95
|
description: z.string().optional().describe("New description (plain text)"),
|
|
76
96
|
assigneeAccountId: z.string().optional().describe("New assignee account ID"),
|
|
77
97
|
priority: z.string().optional().describe("Priority name, e.g. 'High', 'Medium', 'Low'"),
|
|
98
|
+
fields: jiraFieldsSchema.optional().describe("Additional Jira fields keyed by field ID or system field name, e.g. {\"labels\":[\"backend\"]}."),
|
|
99
|
+
customFields: jiraCustomFieldsSchema.optional().describe("Custom field values keyed by Jira field ID, e.g. {\"customfield_10015\":\"2026-07-07\"}. Date fields usually use YYYY-MM-DD."),
|
|
78
100
|
}),
|
|
79
|
-
}, async ({ issueIdOrKey, summary, description, assigneeAccountId, priority }) => {
|
|
101
|
+
}, async ({ issueIdOrKey, summary, description, assigneeAccountId, priority, fields: additionalFields, customFields }) => {
|
|
80
102
|
try {
|
|
81
103
|
const fields = {};
|
|
82
104
|
if (summary)
|
|
@@ -91,6 +113,10 @@ export function registerJiraTools(server, prefix) {
|
|
|
91
113
|
fields.assignee = { accountId: assigneeAccountId };
|
|
92
114
|
if (priority)
|
|
93
115
|
fields.priority = { name: priority };
|
|
116
|
+
applyJiraFields(fields, additionalFields, customFields);
|
|
117
|
+
if (Object.keys(fields).length === 0) {
|
|
118
|
+
throw new Error("At least one field value must be provided.");
|
|
119
|
+
}
|
|
94
120
|
await getJiraClient().put(`/issue/${issueIdOrKey}`, { fields });
|
|
95
121
|
return toTextResponse({ success: true, issueIdOrKey });
|
|
96
122
|
}
|
|
@@ -99,34 +125,60 @@ export function registerJiraTools(server, prefix) {
|
|
|
99
125
|
}
|
|
100
126
|
});
|
|
101
127
|
server.registerTool(p("transitionJiraIssue"), {
|
|
102
|
-
description: "Execute a workflow state change on a Jira issue,
|
|
128
|
+
description: "Execute a workflow state change on a Jira issue. Supports field values required by transition screens, including customFields keyed by Jira field ID.",
|
|
103
129
|
inputSchema: z.object({
|
|
104
130
|
issueIdOrKey: z.string().describe("Issue ID or key"),
|
|
105
|
-
status: z.string().describe("Target status name, e.g. 'In Progress', 'Done'"),
|
|
131
|
+
status: z.string().optional().describe("Target status name, e.g. 'In Progress', 'Done'. Required unless transitionId is provided."),
|
|
132
|
+
transitionId: z.string().optional().describe("Exact Jira transition ID. Use this when transition names are ambiguous."),
|
|
133
|
+
fields: jiraFieldsSchema.optional().describe("Field values to submit with the transition, keyed by Jira field ID or system field name."),
|
|
134
|
+
customFields: jiraCustomFieldsSchema.optional().describe("Custom field values to submit with the transition, e.g. {\"customfield_10015\":\"2026-07-07\"}. Date fields usually use YYYY-MM-DD."),
|
|
106
135
|
}),
|
|
107
|
-
}, async ({ issueIdOrKey, status }) => {
|
|
136
|
+
}, async ({ issueIdOrKey, status, transitionId, fields: additionalFields, customFields }) => {
|
|
108
137
|
try {
|
|
109
138
|
const { data } = await getJiraClient().get(`/issue/${issueIdOrKey}/transitions`);
|
|
110
|
-
|
|
139
|
+
if (!status && !transitionId) {
|
|
140
|
+
throw new Error("Provide either status or transitionId.");
|
|
141
|
+
}
|
|
142
|
+
const normalizedStatus = status?.trim().toLowerCase();
|
|
143
|
+
const transition = transitionId
|
|
144
|
+
? data.transitions.find(t => t.id === transitionId)
|
|
145
|
+
: data.transitions.find(t => t.name.toLowerCase() === normalizedStatus
|
|
146
|
+
|| t.to.name.toLowerCase() === normalizedStatus);
|
|
111
147
|
if (!transition) {
|
|
112
|
-
const available = data.transitions.map(t => t.name).join(", ");
|
|
113
|
-
return toTextResponse(
|
|
148
|
+
const available = data.transitions.map(t => `${t.name} -> ${t.to.name}`).join(", ");
|
|
149
|
+
return toTextResponse(transitionId
|
|
150
|
+
? `Transition ID "${transitionId}" not found. Available: ${available}`
|
|
151
|
+
: `Status "${status}" not found. Available: ${available}`);
|
|
114
152
|
}
|
|
115
|
-
|
|
116
|
-
|
|
153
|
+
const body = {
|
|
154
|
+
transition: { id: transition.id },
|
|
155
|
+
};
|
|
156
|
+
const fields = {};
|
|
157
|
+
applyJiraFields(fields, additionalFields, customFields);
|
|
158
|
+
if (Object.keys(fields).length > 0)
|
|
159
|
+
body.fields = fields;
|
|
160
|
+
await getJiraClient().post(`/issue/${issueIdOrKey}/transitions`, body);
|
|
161
|
+
return toTextResponse({
|
|
162
|
+
success: true,
|
|
163
|
+
issueIdOrKey,
|
|
164
|
+
transition: transition.name,
|
|
165
|
+
status: transition.to.name,
|
|
166
|
+
transitionId: transition.id,
|
|
167
|
+
});
|
|
117
168
|
}
|
|
118
169
|
catch (error) {
|
|
119
170
|
return handleToolError(error);
|
|
120
171
|
}
|
|
121
172
|
});
|
|
122
173
|
server.registerTool(p("getTransitionsForJiraIssue"), {
|
|
123
|
-
description: "List all available workflow transitions for a Jira issue.",
|
|
174
|
+
description: "List all available workflow transitions for a Jira issue. Use includeFields to see fields required by transition screens.",
|
|
124
175
|
inputSchema: z.object({
|
|
125
176
|
issueIdOrKey: z.string().describe("Issue ID or key"),
|
|
177
|
+
includeFields: z.boolean().default(false).describe("When true, expands transition field metadata including required fields."),
|
|
126
178
|
}),
|
|
127
|
-
}, async ({ issueIdOrKey }) => {
|
|
179
|
+
}, async ({ issueIdOrKey, includeFields }) => {
|
|
128
180
|
try {
|
|
129
|
-
const { data } = await getJiraClient().get(`/issue/${issueIdOrKey}/transitions
|
|
181
|
+
const { data } = await getJiraClient().get(`/issue/${issueIdOrKey}/transitions`, includeFields ? { params: { expand: "transitions.fields" } } : undefined);
|
|
130
182
|
return toTextResponse(data.transitions);
|
|
131
183
|
}
|
|
132
184
|
catch (error) {
|
|
@@ -219,6 +271,55 @@ export function registerJiraTools(server, prefix) {
|
|
|
219
271
|
return handleToolError(error);
|
|
220
272
|
}
|
|
221
273
|
});
|
|
274
|
+
server.registerTool(p("getJiraIssueEditMetadata"), {
|
|
275
|
+
description: "Get editable field metadata for a Jira issue. Use this to confirm custom field IDs and field shapes before editJiraIssue.",
|
|
276
|
+
inputSchema: z.object({
|
|
277
|
+
issueIdOrKey: z.string().describe("Issue ID or key"),
|
|
278
|
+
}),
|
|
279
|
+
}, async ({ issueIdOrKey }) => {
|
|
280
|
+
try {
|
|
281
|
+
const { data } = await getJiraClient().get(`/issue/${issueIdOrKey}/editmeta`);
|
|
282
|
+
return toTextResponse(data);
|
|
283
|
+
}
|
|
284
|
+
catch (error) {
|
|
285
|
+
return handleToolError(error);
|
|
286
|
+
}
|
|
287
|
+
});
|
|
288
|
+
server.registerTool(p("getJiraFields"), {
|
|
289
|
+
description: "List Jira fields and optionally filter by name or ID. Use this to map display names such as 'Target start' to customfield IDs.",
|
|
290
|
+
inputSchema: z.object({
|
|
291
|
+
query: z.string().optional().describe("Optional case-insensitive name or ID filter, e.g. 'Target start' or 'customfield_10015'."),
|
|
292
|
+
customOnly: z.boolean().default(false).describe("When true, returns only custom fields."),
|
|
293
|
+
}),
|
|
294
|
+
}, async ({ query, customOnly }) => {
|
|
295
|
+
try {
|
|
296
|
+
const { data } = await getJiraClient().get("/field");
|
|
297
|
+
const normalizedQuery = query?.trim().toLowerCase();
|
|
298
|
+
const fields = data
|
|
299
|
+
.filter(field => !customOnly || field.custom || field.id.startsWith("customfield_"))
|
|
300
|
+
.filter(field => {
|
|
301
|
+
if (!normalizedQuery)
|
|
302
|
+
return true;
|
|
303
|
+
return field.id.toLowerCase().includes(normalizedQuery)
|
|
304
|
+
|| field.name.toLowerCase().includes(normalizedQuery)
|
|
305
|
+
|| field.clauseNames?.some(name => name.toLowerCase().includes(normalizedQuery));
|
|
306
|
+
})
|
|
307
|
+
.map(field => ({
|
|
308
|
+
id: field.id,
|
|
309
|
+
name: field.name,
|
|
310
|
+
custom: Boolean(field.custom),
|
|
311
|
+
orderable: field.orderable,
|
|
312
|
+
navigable: field.navigable,
|
|
313
|
+
searchable: field.searchable,
|
|
314
|
+
clauseNames: field.clauseNames,
|
|
315
|
+
schema: field.schema,
|
|
316
|
+
}));
|
|
317
|
+
return toTextResponse(fields);
|
|
318
|
+
}
|
|
319
|
+
catch (error) {
|
|
320
|
+
return handleToolError(error);
|
|
321
|
+
}
|
|
322
|
+
});
|
|
222
323
|
server.registerTool(p("getIssueLinkTypes"), {
|
|
223
324
|
description: "Retrieve all available issue link types (e.g. 'blocks', 'duplicates', 'is cloned by').",
|
|
224
325
|
inputSchema: z.object({}),
|
|
@@ -264,4 +365,23 @@ export function registerJiraTools(server, prefix) {
|
|
|
264
365
|
}
|
|
265
366
|
});
|
|
266
367
|
}
|
|
368
|
+
function isSubtaskIssueType(issueType) {
|
|
369
|
+
return ["subtask", "sub-task", "sub task"].includes(issueType.trim().toLowerCase());
|
|
370
|
+
}
|
|
371
|
+
function toJiraParentField(parentKey, parentId) {
|
|
372
|
+
if (parentKey)
|
|
373
|
+
return { key: parentKey };
|
|
374
|
+
if (parentId)
|
|
375
|
+
return { id: parentId };
|
|
376
|
+
return undefined;
|
|
377
|
+
}
|
|
378
|
+
function applyJiraFields(target, ...sources) {
|
|
379
|
+
for (const source of sources) {
|
|
380
|
+
if (!source)
|
|
381
|
+
continue;
|
|
382
|
+
for (const [key, value] of Object.entries(source)) {
|
|
383
|
+
target[key] = value;
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
}
|
|
267
387
|
//# sourceMappingURL=jira.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jira.js","sourceRoot":"","sources":["../../../../src/services/atlassian/tools/jira.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"jira.js","sourceRoot":"","sources":["../../../../src/services/atlassian/tools/jira.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/services/atlassian/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,MAAM,EAAE;YAAE,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC;QACzB,QAAQ,CAAC,EAAE;YAAE,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC;QAC5B,QAAQ,CAAC,EAAE;YAAE,SAAS,EAAE,MAAM,CAAC;YAAC,WAAW,EAAE,MAAM,CAAC;YAAC,YAAY,EAAE,MAAM,CAAA;SAAE,GAAG,IAAI,CAAC;QACnF,QAAQ,CAAC,EAAE;YAAE,WAAW,EAAE,MAAM,CAAC;YAAC,YAAY,EAAE,MAAM,CAAA;SAAE,CAAC;QACzD,SAAS,EAAE;YAAE,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC;QAC5B,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/services/atlassian/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,MAAM,EAAE;YAAE,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC;QACzB,QAAQ,CAAC,EAAE;YAAE,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC;QAC5B,QAAQ,CAAC,EAAE;YAAE,SAAS,EAAE,MAAM,CAAC;YAAC,WAAW,EAAE,MAAM,CAAC;YAAC,YAAY,EAAE,MAAM,CAAA;SAAE,GAAG,IAAI,CAAC;QACnF,QAAQ,CAAC,EAAE;YAAE,WAAW,EAAE,MAAM,CAAC;YAAC,YAAY,EAAE,MAAM,CAAA;SAAE,CAAC;QACzD,SAAS,EAAE;YAAE,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC;QAC5B,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,QAAQ;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5B,IAAI,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC;CACxC;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC;IACvC,OAAO,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CAC9B"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Maps a Figma REST API request to the equivalent Figma Desktop MCP tool call.
|
|
3
|
+
* Returns the tool result, or null if there is no desktop equivalent for the path.
|
|
4
|
+
*
|
|
5
|
+
* Mappings:
|
|
6
|
+
* GET /files/:key → get_metadata (no nodeId)
|
|
7
|
+
* GET /files/:key?depth=N → get_metadata (no nodeId)
|
|
8
|
+
* GET /files/:key/nodes?ids=:nodeId → get_metadata (nodeId)
|
|
9
|
+
* GET /files/:key/nodes → get_design_context (full file)
|
|
10
|
+
* GET /files/:key/variables/local → get_variable_defs
|
|
11
|
+
* GET /files/:key/variables/published → get_variable_defs
|
|
12
|
+
* GET /files/:key/components → get_code_connect_map
|
|
13
|
+
* GET /files/:key/component_sets → get_code_connect_map
|
|
14
|
+
* GET /files/:key/styles → get_variable_defs
|
|
15
|
+
* GET /images/:key?ids=:nodeIds → get_screenshot
|
|
16
|
+
*
|
|
17
|
+
* Note: comments, team components, image fills, and write operations have no
|
|
18
|
+
* desktop MCP equivalent and return null (caller will surface the original error).
|
|
19
|
+
*/
|
|
20
|
+
export declare function callViaDesktop(method: string, path: string, params?: Record<string, string>): Promise<unknown | null>;
|
|
21
|
+
//# sourceMappingURL=desktop-adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"desktop-adapter.d.ts","sourceRoot":"","sources":["../../../src/services/figma/desktop-adapter.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,GAClC,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAmDzB"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { callDesktopTool } from "./desktop.js";
|
|
2
|
+
/**
|
|
3
|
+
* Maps a Figma REST API request to the equivalent Figma Desktop MCP tool call.
|
|
4
|
+
* Returns the tool result, or null if there is no desktop equivalent for the path.
|
|
5
|
+
*
|
|
6
|
+
* Mappings:
|
|
7
|
+
* GET /files/:key → get_metadata (no nodeId)
|
|
8
|
+
* GET /files/:key?depth=N → get_metadata (no nodeId)
|
|
9
|
+
* GET /files/:key/nodes?ids=:nodeId → get_metadata (nodeId)
|
|
10
|
+
* GET /files/:key/nodes → get_design_context (full file)
|
|
11
|
+
* GET /files/:key/variables/local → get_variable_defs
|
|
12
|
+
* GET /files/:key/variables/published → get_variable_defs
|
|
13
|
+
* GET /files/:key/components → get_code_connect_map
|
|
14
|
+
* GET /files/:key/component_sets → get_code_connect_map
|
|
15
|
+
* GET /files/:key/styles → get_variable_defs
|
|
16
|
+
* GET /images/:key?ids=:nodeIds → get_screenshot
|
|
17
|
+
*
|
|
18
|
+
* Note: comments, team components, image fills, and write operations have no
|
|
19
|
+
* desktop MCP equivalent and return null (caller will surface the original error).
|
|
20
|
+
*/
|
|
21
|
+
export async function callViaDesktop(method, path, params = {}) {
|
|
22
|
+
// POST/PUT/DELETE are write operations — desktop has no equivalent
|
|
23
|
+
if (method !== "GET")
|
|
24
|
+
return null;
|
|
25
|
+
// /files/:key or /files/:key/...
|
|
26
|
+
const fileMatch = path.match(/^\/files\/([^/]+)(\/(.+))?$/);
|
|
27
|
+
if (fileMatch) {
|
|
28
|
+
const fileKey = fileMatch[1];
|
|
29
|
+
const sub = fileMatch[3]; // undefined | "nodes" | "variables/local" | ...
|
|
30
|
+
if (!sub) {
|
|
31
|
+
// GET /files/:key — sparse outline
|
|
32
|
+
return callDesktopTool("get_metadata", {
|
|
33
|
+
fileKey,
|
|
34
|
+
...(params["depth"] ? { depth: parseInt(params["depth"], 10) } : {}),
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
if (sub === "nodes") {
|
|
38
|
+
const ids = params["ids"];
|
|
39
|
+
if (ids) {
|
|
40
|
+
// Single node inspection
|
|
41
|
+
return callDesktopTool("get_metadata", { fileKey, nodeId: ids.split(",")[0] });
|
|
42
|
+
}
|
|
43
|
+
// Full file design context
|
|
44
|
+
return callDesktopTool("get_design_context", { fileKey });
|
|
45
|
+
}
|
|
46
|
+
if (sub === "variables/local" || sub === "variables/published" || sub === "styles") {
|
|
47
|
+
return callDesktopTool("get_variable_defs", { fileKey });
|
|
48
|
+
}
|
|
49
|
+
if (sub === "components" || sub === "component_sets") {
|
|
50
|
+
return callDesktopTool("get_code_connect_map", { fileKey });
|
|
51
|
+
}
|
|
52
|
+
// /files/:key/comments, /files/:key/images — no desktop equivalent
|
|
53
|
+
return null;
|
|
54
|
+
}
|
|
55
|
+
// /images/:key?ids=...
|
|
56
|
+
const imageMatch = path.match(/^\/images\/([^/]+)$/);
|
|
57
|
+
if (imageMatch) {
|
|
58
|
+
const fileKey = imageMatch[1];
|
|
59
|
+
const ids = params["ids"];
|
|
60
|
+
if (!ids)
|
|
61
|
+
return null;
|
|
62
|
+
// get_screenshot works on the current selection; pass first node id
|
|
63
|
+
return callDesktopTool("get_screenshot", { fileKey, nodeId: ids.split(",")[0] });
|
|
64
|
+
}
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=desktop-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"desktop-adapter.js","sourceRoot":"","sources":["../../../src/services/figma/desktop-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,MAAc,EACd,IAAY,EACZ,SAAiC,EAAE;IAEnC,mEAAmE;IACnE,IAAI,MAAM,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC;IAElC,mCAAmC;IACnC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;IAC5D,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QAC7B,MAAM,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,gDAAgD;QAE1E,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,mCAAmC;YACnC,OAAO,eAAe,CAAC,cAAc,EAAE;gBACrC,OAAO;gBACP,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACrE,CAAC,CAAC;QACL,CAAC;QAED,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;YACpB,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;YAC1B,IAAI,GAAG,EAAE,CAAC;gBACR,yBAAyB;gBACzB,OAAO,eAAe,CAAC,cAAc,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACjF,CAAC;YACD,2BAA2B;YAC3B,OAAO,eAAe,CAAC,oBAAoB,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;QAC5D,CAAC;QAED,IAAI,GAAG,KAAK,iBAAiB,IAAI,GAAG,KAAK,qBAAqB,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;YACnF,OAAO,eAAe,CAAC,mBAAmB,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;QAC3D,CAAC;QAED,IAAI,GAAG,KAAK,YAAY,IAAI,GAAG,KAAK,gBAAgB,EAAE,CAAC;YACrD,OAAO,eAAe,CAAC,sBAAsB,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;QAC9D,CAAC;QAED,mEAAmE;QACnE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,uBAAuB;IACvB,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;IACrD,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAC1B,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC;QACtB,oEAAoE;QACpE,OAAO,eAAe,CAAC,gBAAgB,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACnF,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export declare function isDesktopAvailable(): Promise<boolean>;
|
|
2
|
+
export declare function invalidateDesktopAvailabilityCache(): void;
|
|
3
|
+
export declare function callDesktopTool(name: string, args: Record<string, unknown>): Promise<unknown>;
|
|
4
|
+
//# sourceMappingURL=desktop.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"desktop.d.ts","sourceRoot":"","sources":["../../../src/services/figma/desktop.ts"],"names":[],"mappings":"AAgBA,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC,CAuB3D;AAED,wBAAgB,kCAAkC,IAAI,IAAI,CAGzD;AAYD,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAcnG"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
|
|
2
|
+
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
|
|
3
|
+
import { env } from "../../shared/env.js";
|
|
4
|
+
const DEFAULT_DESKTOP_MCP_URL = "http://127.0.0.1:3845/mcp";
|
|
5
|
+
const PROBE_TIMEOUT_MS = 1000;
|
|
6
|
+
function getDesktopUrl() {
|
|
7
|
+
return env.figma?.DESKTOP_URL || DEFAULT_DESKTOP_MCP_URL;
|
|
8
|
+
}
|
|
9
|
+
let desktopClient = null;
|
|
10
|
+
let lastAvailabilityCheck = 0;
|
|
11
|
+
let lastAvailableResult = false;
|
|
12
|
+
const AVAILABILITY_CACHE_MS = 10_000;
|
|
13
|
+
export async function isDesktopAvailable() {
|
|
14
|
+
const now = Date.now();
|
|
15
|
+
if (now - lastAvailabilityCheck < AVAILABILITY_CACHE_MS) {
|
|
16
|
+
return lastAvailableResult;
|
|
17
|
+
}
|
|
18
|
+
try {
|
|
19
|
+
const controller = new AbortController();
|
|
20
|
+
const timer = setTimeout(() => controller.abort(), PROBE_TIMEOUT_MS);
|
|
21
|
+
const res = await fetch(getDesktopUrl(), {
|
|
22
|
+
method: "POST",
|
|
23
|
+
signal: controller.signal,
|
|
24
|
+
headers: { "Content-Type": "application/json" },
|
|
25
|
+
body: JSON.stringify({ jsonrpc: "2.0", id: 0, method: "initialize", params: { protocolVersion: "2024-11-05", capabilities: {}, clientInfo: { name: "probe", version: "0" } } }),
|
|
26
|
+
});
|
|
27
|
+
clearTimeout(timer);
|
|
28
|
+
lastAvailableResult = res.status < 500;
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
lastAvailableResult = false;
|
|
32
|
+
}
|
|
33
|
+
lastAvailabilityCheck = Date.now();
|
|
34
|
+
return lastAvailableResult;
|
|
35
|
+
}
|
|
36
|
+
export function invalidateDesktopAvailabilityCache() {
|
|
37
|
+
lastAvailabilityCheck = 0;
|
|
38
|
+
desktopClient = null;
|
|
39
|
+
}
|
|
40
|
+
async function getDesktopClient() {
|
|
41
|
+
if (desktopClient)
|
|
42
|
+
return desktopClient;
|
|
43
|
+
const transport = new StreamableHTTPClientTransport(new URL(getDesktopUrl()));
|
|
44
|
+
const client = new Client({ name: "local-mcp-proxy", version: "1.0.0" });
|
|
45
|
+
await client.connect(transport);
|
|
46
|
+
desktopClient = client;
|
|
47
|
+
return client;
|
|
48
|
+
}
|
|
49
|
+
export async function callDesktopTool(name, args) {
|
|
50
|
+
const client = await getDesktopClient();
|
|
51
|
+
const result = await client.callTool({ name, arguments: args });
|
|
52
|
+
const content = result.content;
|
|
53
|
+
const text = content?.filter((c) => c.type === "text").map((c) => c.text).join("\n") ?? "";
|
|
54
|
+
// Desktop tools return text (often XML-ish metadata), not REST JSON shape.
|
|
55
|
+
// Try to parse JSON for tools that happen to emit it; otherwise pass the raw text through.
|
|
56
|
+
try {
|
|
57
|
+
return JSON.parse(text);
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
return text;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=desktop.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"desktop.js","sourceRoot":"","sources":["../../../src/services/figma/desktop.ts"],"names":[],"mappings":"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"}
|
package/docs/atlassian.md
CHANGED
|
@@ -252,19 +252,59 @@ localmcp playground
|
|
|
252
252
|
|------|-------------|
|
|
253
253
|
| `getJiraIssue` | Gets issue details by ID or key, for example `PROJECT-123`. |
|
|
254
254
|
| `searchJiraIssuesUsingJql` | Searches issues with JQL. |
|
|
255
|
-
| `createJiraIssue` | Creates a new issue in a project. |
|
|
256
|
-
| `editJiraIssue` | Updates summary, description, assignee, or
|
|
257
|
-
| `transitionJiraIssue` | Moves an issue through workflow states, for example to "In Progress" or "Done". |
|
|
258
|
-
| `getTransitionsForJiraIssue` | Lists available transitions for an issue. |
|
|
255
|
+
| `createJiraIssue` | Creates a new issue or sub-task in a project. For sub-tasks, use a sub-task issue type and provide `parentKey` or `parentId`. Supports `customFields`. |
|
|
256
|
+
| `editJiraIssue` | Updates summary, description, assignee, priority, arbitrary fields, or custom fields. |
|
|
257
|
+
| `transitionJiraIssue` | Moves an issue through workflow states, for example to "In Progress" or "Done". Supports transition screen fields. |
|
|
258
|
+
| `getTransitionsForJiraIssue` | Lists available transitions for an issue. Set `includeFields` to see transition screen fields. |
|
|
259
259
|
| `addCommentToJiraIssue` | Adds a comment to an issue. |
|
|
260
260
|
| `addWorklogToJiraIssue` | Logs work time on an issue. |
|
|
261
261
|
| `getVisibleJiraProjects` | Lists all projects the account can access. |
|
|
262
262
|
| `getJiraProjectIssueTypesMetadata` | Lists issue types in a project. |
|
|
263
263
|
| `getJiraIssueTypeMetaWithFields` | Gets field metadata for creating a specific issue type. |
|
|
264
|
+
| `getJiraIssueEditMetadata` | Gets editable field metadata for an issue. |
|
|
265
|
+
| `getJiraFields` | Lists Jira fields and maps display names to IDs such as `customfield_10015`. |
|
|
264
266
|
| `getIssueLinkTypes` | Lists issue link types, such as blocks or duplicates. |
|
|
265
267
|
| `getJiraIssueRemoteIssueLinks` | Lists external links attached to an issue, for example Confluence pages. |
|
|
266
268
|
| `lookupJiraAccountId` | Finds a user's account ID by name or email. |
|
|
267
269
|
|
|
270
|
+
Update custom fields:
|
|
271
|
+
|
|
272
|
+
```json
|
|
273
|
+
{
|
|
274
|
+
"issueIdOrKey": "PROJ-123",
|
|
275
|
+
"customFields": {
|
|
276
|
+
"customfield_10015": "2026-07-07",
|
|
277
|
+
"customfield_10016": "2026-07-10"
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
Complete a transition that requires custom fields:
|
|
283
|
+
|
|
284
|
+
```json
|
|
285
|
+
{
|
|
286
|
+
"issueIdOrKey": "PROJ-123",
|
|
287
|
+
"status": "Done",
|
|
288
|
+
"customFields": {
|
|
289
|
+
"customfield_10015": "2026-07-07",
|
|
290
|
+
"customfield_10016": "2026-07-10"
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
```
|
|
294
|
+
|
|
295
|
+
Use `getJiraFields` with `{"query":"Target"}` or `getTransitionsForJiraIssue` with `{"includeFields":true}` to find the exact field IDs for display names such as "Target start" and "Target end".
|
|
296
|
+
|
|
297
|
+
Create a Jira sub-task:
|
|
298
|
+
|
|
299
|
+
```json
|
|
300
|
+
{
|
|
301
|
+
"projectKey": "PROJ",
|
|
302
|
+
"summary": "Implement validation",
|
|
303
|
+
"issueType": "Subtask",
|
|
304
|
+
"parentKey": "PROJ-123"
|
|
305
|
+
}
|
|
306
|
+
```
|
|
307
|
+
|
|
268
308
|
### Confluence
|
|
269
309
|
|
|
270
310
|
| Tool | Description |
|
package/docs/vi/atlassian.md
CHANGED
|
@@ -252,19 +252,59 @@ localmcp playground
|
|
|
252
252
|
|------|-------|
|
|
253
253
|
| `getJiraIssue` | Lấy chi tiết issue theo ID hoặc key (ví dụ `PROJECT-123`) |
|
|
254
254
|
| `searchJiraIssuesUsingJql` | Tìm kiếm issues bằng JQL |
|
|
255
|
-
| `createJiraIssue` | Tạo issue mới trong một project |
|
|
256
|
-
| `editJiraIssue` | Cập nhật summary, description, assignee, hoặc
|
|
257
|
-
| `transitionJiraIssue` | Chuyển trạng thái workflow (ví dụ sang "In Progress", "Done") |
|
|
258
|
-
| `getTransitionsForJiraIssue` | Liệt kê các transitions khả dụng của một issue |
|
|
255
|
+
| `createJiraIssue` | Tạo issue hoặc sub-task mới trong một project. Với sub-task, dùng issue type dạng sub-task và truyền `parentKey` hoặc `parentId`. Hỗ trợ `customFields`. |
|
|
256
|
+
| `editJiraIssue` | Cập nhật summary, description, assignee, priority, field bất kỳ, hoặc custom fields |
|
|
257
|
+
| `transitionJiraIssue` | Chuyển trạng thái workflow (ví dụ sang "In Progress", "Done"). Hỗ trợ field bắt buộc trên transition screen. |
|
|
258
|
+
| `getTransitionsForJiraIssue` | Liệt kê các transitions khả dụng của một issue. Dùng `includeFields` để xem field trên transition screen. |
|
|
259
259
|
| `addCommentToJiraIssue` | Đăng comment lên issue |
|
|
260
260
|
| `addWorklogToJiraIssue` | Ghi nhận thời gian làm việc lên issue |
|
|
261
261
|
| `getVisibleJiraProjects` | Liệt kê tất cả projects có quyền truy cập |
|
|
262
262
|
| `getJiraProjectIssueTypesMetadata` | Liệt kê các loại issue trong một project |
|
|
263
263
|
| `getJiraIssueTypeMetaWithFields` | Lấy metadata fields khi tạo issue theo loại cụ thể |
|
|
264
|
+
| `getJiraIssueEditMetadata` | Lấy metadata các field có thể chỉnh sửa của một issue |
|
|
265
|
+
| `getJiraFields` | Liệt kê Jira fields và map tên hiển thị sang ID như `customfield_10015` |
|
|
264
266
|
| `getIssueLinkTypes` | Liệt kê các kiểu liên kết issue (blocks, duplicates, v.v.) |
|
|
265
267
|
| `getJiraIssueRemoteIssueLinks` | Liệt kê các link ngoài gắn vào issue (ví dụ trang Confluence) |
|
|
266
268
|
| `lookupJiraAccountId` | Tìm account ID của user theo tên hoặc email |
|
|
267
269
|
|
|
270
|
+
Cập nhật custom fields:
|
|
271
|
+
|
|
272
|
+
```json
|
|
273
|
+
{
|
|
274
|
+
"issueIdOrKey": "PROJ-123",
|
|
275
|
+
"customFields": {
|
|
276
|
+
"customfield_10015": "2026-07-07",
|
|
277
|
+
"customfield_10016": "2026-07-10"
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
Hoàn tất transition có custom fields bắt buộc:
|
|
283
|
+
|
|
284
|
+
```json
|
|
285
|
+
{
|
|
286
|
+
"issueIdOrKey": "PROJ-123",
|
|
287
|
+
"status": "Done",
|
|
288
|
+
"customFields": {
|
|
289
|
+
"customfield_10015": "2026-07-07",
|
|
290
|
+
"customfield_10016": "2026-07-10"
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
```
|
|
294
|
+
|
|
295
|
+
Dùng `getJiraFields` với `{"query":"Target"}` hoặc `getTransitionsForJiraIssue` với `{"includeFields":true}` để tìm đúng field ID cho tên hiển thị như "Target start" và "Target end".
|
|
296
|
+
|
|
297
|
+
Tạo Jira sub-task:
|
|
298
|
+
|
|
299
|
+
```json
|
|
300
|
+
{
|
|
301
|
+
"projectKey": "PROJ",
|
|
302
|
+
"summary": "Implement validation",
|
|
303
|
+
"issueType": "Subtask",
|
|
304
|
+
"parentKey": "PROJ-123"
|
|
305
|
+
}
|
|
306
|
+
```
|
|
307
|
+
|
|
268
308
|
### Confluence
|
|
269
309
|
|
|
270
310
|
| Tool | Mô tả |
|