harmony-mcp 1.0.3 → 1.0.4
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 +50 -7
- package/dist/index.js +50 -7
- package/package.json +2 -2
package/dist/cli.js
CHANGED
|
@@ -24960,8 +24960,18 @@ class HarmonyApiClient {
|
|
|
24960
24960
|
async listProjects(workspaceId) {
|
|
24961
24961
|
return this.request("GET", `/workspaces/${workspaceId}/projects`);
|
|
24962
24962
|
}
|
|
24963
|
-
async getBoard(projectId) {
|
|
24964
|
-
|
|
24963
|
+
async getBoard(projectId, options) {
|
|
24964
|
+
const params = new URLSearchParams;
|
|
24965
|
+
if (options?.limit !== undefined)
|
|
24966
|
+
params.set("limit", String(options.limit));
|
|
24967
|
+
if (options?.offset !== undefined)
|
|
24968
|
+
params.set("offset", String(options.offset));
|
|
24969
|
+
if (options?.columnId)
|
|
24970
|
+
params.set("column_id", options.columnId);
|
|
24971
|
+
if (options?.summary)
|
|
24972
|
+
params.set("summary", "true");
|
|
24973
|
+
const query = params.toString() ? `?${params.toString()}` : "";
|
|
24974
|
+
return this.request("GET", `/board/${projectId}${query}`);
|
|
24965
24975
|
}
|
|
24966
24976
|
async createCard(projectId, data) {
|
|
24967
24977
|
return this.request("POST", "/cards", { projectId, ...data });
|
|
@@ -24978,6 +24988,9 @@ class HarmonyApiClient {
|
|
|
24978
24988
|
async getCard(cardId) {
|
|
24979
24989
|
return this.request("GET", `/cards/${cardId}`);
|
|
24980
24990
|
}
|
|
24991
|
+
async getCardByShortId(projectId, shortId) {
|
|
24992
|
+
return this.request("GET", `/projects/${projectId}/cards/${shortId}`);
|
|
24993
|
+
}
|
|
24981
24994
|
async searchCards(query, options) {
|
|
24982
24995
|
const params = new URLSearchParams({ q: query });
|
|
24983
24996
|
if (options?.projectId) {
|
|
@@ -25101,15 +25114,26 @@ var TOOLS = {
|
|
|
25101
25114
|
}
|
|
25102
25115
|
},
|
|
25103
25116
|
harmony_get_card: {
|
|
25104
|
-
description: "Get detailed information about a specific card",
|
|
25117
|
+
description: "Get detailed information about a specific card by UUID",
|
|
25105
25118
|
inputSchema: {
|
|
25106
25119
|
type: "object",
|
|
25107
25120
|
properties: {
|
|
25108
|
-
cardId: { type: "string", description: "Card
|
|
25121
|
+
cardId: { type: "string", description: "Card UUID" }
|
|
25109
25122
|
},
|
|
25110
25123
|
required: ["cardId"]
|
|
25111
25124
|
}
|
|
25112
25125
|
},
|
|
25126
|
+
harmony_get_card_by_short_id: {
|
|
25127
|
+
description: "Get a card by its short ID (e.g., #42) within a project",
|
|
25128
|
+
inputSchema: {
|
|
25129
|
+
type: "object",
|
|
25130
|
+
properties: {
|
|
25131
|
+
projectId: { type: "string", description: "Project ID (optional if context set)" },
|
|
25132
|
+
shortId: { type: "number", description: "Short ID number (e.g., 42 for card #42)" }
|
|
25133
|
+
},
|
|
25134
|
+
required: ["shortId"]
|
|
25135
|
+
}
|
|
25136
|
+
},
|
|
25113
25137
|
harmony_create_column: {
|
|
25114
25138
|
description: "Create a new column in a project",
|
|
25115
25139
|
inputSchema: {
|
|
@@ -25224,11 +25248,15 @@ var TOOLS = {
|
|
|
25224
25248
|
}
|
|
25225
25249
|
},
|
|
25226
25250
|
harmony_get_board: {
|
|
25227
|
-
description: "Get
|
|
25251
|
+
description: "Get board state (columns, cards, labels). Use limit/offset for pagination on large boards. Use summary=true for just column counts without card details.",
|
|
25228
25252
|
inputSchema: {
|
|
25229
25253
|
type: "object",
|
|
25230
25254
|
properties: {
|
|
25231
|
-
projectId: { type: "string", description: "Project ID (optional if context set)" }
|
|
25255
|
+
projectId: { type: "string", description: "Project ID (optional if context set)" },
|
|
25256
|
+
limit: { type: "number", description: "Max cards to return (default: 50)" },
|
|
25257
|
+
offset: { type: "number", description: "Skip N cards for pagination (default: 0)" },
|
|
25258
|
+
columnId: { type: "string", description: "Filter cards by column ID" },
|
|
25259
|
+
summary: { type: "boolean", description: "Return only columns with card counts, no card details" }
|
|
25232
25260
|
}
|
|
25233
25261
|
}
|
|
25234
25262
|
},
|
|
@@ -25481,6 +25509,12 @@ Include: cards moved recently, current in-progress items, blocked or high-priori
|
|
|
25481
25509
|
const result = await client2.getCard(cardId);
|
|
25482
25510
|
return { success: true, ...result };
|
|
25483
25511
|
}
|
|
25512
|
+
case "harmony_get_card_by_short_id": {
|
|
25513
|
+
const shortId = exports_external.number().int().positive().parse(args.shortId);
|
|
25514
|
+
const projectId = args.projectId || getProjectId();
|
|
25515
|
+
const result = await client2.getCardByShortId(projectId, shortId);
|
|
25516
|
+
return { success: true, ...result };
|
|
25517
|
+
}
|
|
25484
25518
|
case "harmony_create_column": {
|
|
25485
25519
|
const name2 = exports_external.string().min(1).parse(args.name);
|
|
25486
25520
|
const projectId = args.projectId || getProjectId();
|
|
@@ -25544,7 +25578,16 @@ Include: cards moved recently, current in-progress items, blocked or high-priori
|
|
|
25544
25578
|
}
|
|
25545
25579
|
case "harmony_get_board": {
|
|
25546
25580
|
const projectId = getProjectId();
|
|
25547
|
-
const
|
|
25581
|
+
const options = {};
|
|
25582
|
+
if (args.limit !== undefined)
|
|
25583
|
+
options.limit = Number(args.limit);
|
|
25584
|
+
if (args.offset !== undefined)
|
|
25585
|
+
options.offset = Number(args.offset);
|
|
25586
|
+
if (args.columnId)
|
|
25587
|
+
options.columnId = String(args.columnId);
|
|
25588
|
+
if (args.summary === true || args.summary === "true")
|
|
25589
|
+
options.summary = true;
|
|
25590
|
+
const result = await client2.getBoard(projectId, options);
|
|
25548
25591
|
return { success: true, board: result };
|
|
25549
25592
|
}
|
|
25550
25593
|
case "harmony_get_workspace_members": {
|
package/dist/index.js
CHANGED
|
@@ -23102,8 +23102,18 @@ class HarmonyApiClient {
|
|
|
23102
23102
|
async listProjects(workspaceId) {
|
|
23103
23103
|
return this.request("GET", `/workspaces/${workspaceId}/projects`);
|
|
23104
23104
|
}
|
|
23105
|
-
async getBoard(projectId) {
|
|
23106
|
-
|
|
23105
|
+
async getBoard(projectId, options) {
|
|
23106
|
+
const params = new URLSearchParams;
|
|
23107
|
+
if (options?.limit !== undefined)
|
|
23108
|
+
params.set("limit", String(options.limit));
|
|
23109
|
+
if (options?.offset !== undefined)
|
|
23110
|
+
params.set("offset", String(options.offset));
|
|
23111
|
+
if (options?.columnId)
|
|
23112
|
+
params.set("column_id", options.columnId);
|
|
23113
|
+
if (options?.summary)
|
|
23114
|
+
params.set("summary", "true");
|
|
23115
|
+
const query = params.toString() ? `?${params.toString()}` : "";
|
|
23116
|
+
return this.request("GET", `/board/${projectId}${query}`);
|
|
23107
23117
|
}
|
|
23108
23118
|
async createCard(projectId, data) {
|
|
23109
23119
|
return this.request("POST", "/cards", { projectId, ...data });
|
|
@@ -23120,6 +23130,9 @@ class HarmonyApiClient {
|
|
|
23120
23130
|
async getCard(cardId) {
|
|
23121
23131
|
return this.request("GET", `/cards/${cardId}`);
|
|
23122
23132
|
}
|
|
23133
|
+
async getCardByShortId(projectId, shortId) {
|
|
23134
|
+
return this.request("GET", `/projects/${projectId}/cards/${shortId}`);
|
|
23135
|
+
}
|
|
23123
23136
|
async searchCards(query, options) {
|
|
23124
23137
|
const params = new URLSearchParams({ q: query });
|
|
23125
23138
|
if (options?.projectId) {
|
|
@@ -23243,15 +23256,26 @@ var TOOLS = {
|
|
|
23243
23256
|
}
|
|
23244
23257
|
},
|
|
23245
23258
|
harmony_get_card: {
|
|
23246
|
-
description: "Get detailed information about a specific card",
|
|
23259
|
+
description: "Get detailed information about a specific card by UUID",
|
|
23247
23260
|
inputSchema: {
|
|
23248
23261
|
type: "object",
|
|
23249
23262
|
properties: {
|
|
23250
|
-
cardId: { type: "string", description: "Card
|
|
23263
|
+
cardId: { type: "string", description: "Card UUID" }
|
|
23251
23264
|
},
|
|
23252
23265
|
required: ["cardId"]
|
|
23253
23266
|
}
|
|
23254
23267
|
},
|
|
23268
|
+
harmony_get_card_by_short_id: {
|
|
23269
|
+
description: "Get a card by its short ID (e.g., #42) within a project",
|
|
23270
|
+
inputSchema: {
|
|
23271
|
+
type: "object",
|
|
23272
|
+
properties: {
|
|
23273
|
+
projectId: { type: "string", description: "Project ID (optional if context set)" },
|
|
23274
|
+
shortId: { type: "number", description: "Short ID number (e.g., 42 for card #42)" }
|
|
23275
|
+
},
|
|
23276
|
+
required: ["shortId"]
|
|
23277
|
+
}
|
|
23278
|
+
},
|
|
23255
23279
|
harmony_create_column: {
|
|
23256
23280
|
description: "Create a new column in a project",
|
|
23257
23281
|
inputSchema: {
|
|
@@ -23366,11 +23390,15 @@ var TOOLS = {
|
|
|
23366
23390
|
}
|
|
23367
23391
|
},
|
|
23368
23392
|
harmony_get_board: {
|
|
23369
|
-
description: "Get
|
|
23393
|
+
description: "Get board state (columns, cards, labels). Use limit/offset for pagination on large boards. Use summary=true for just column counts without card details.",
|
|
23370
23394
|
inputSchema: {
|
|
23371
23395
|
type: "object",
|
|
23372
23396
|
properties: {
|
|
23373
|
-
projectId: { type: "string", description: "Project ID (optional if context set)" }
|
|
23397
|
+
projectId: { type: "string", description: "Project ID (optional if context set)" },
|
|
23398
|
+
limit: { type: "number", description: "Max cards to return (default: 50)" },
|
|
23399
|
+
offset: { type: "number", description: "Skip N cards for pagination (default: 0)" },
|
|
23400
|
+
columnId: { type: "string", description: "Filter cards by column ID" },
|
|
23401
|
+
summary: { type: "boolean", description: "Return only columns with card counts, no card details" }
|
|
23374
23402
|
}
|
|
23375
23403
|
}
|
|
23376
23404
|
},
|
|
@@ -23623,6 +23651,12 @@ Include: cards moved recently, current in-progress items, blocked or high-priori
|
|
|
23623
23651
|
const result = await client2.getCard(cardId);
|
|
23624
23652
|
return { success: true, ...result };
|
|
23625
23653
|
}
|
|
23654
|
+
case "harmony_get_card_by_short_id": {
|
|
23655
|
+
const shortId = exports_external.number().int().positive().parse(args.shortId);
|
|
23656
|
+
const projectId = args.projectId || getProjectId();
|
|
23657
|
+
const result = await client2.getCardByShortId(projectId, shortId);
|
|
23658
|
+
return { success: true, ...result };
|
|
23659
|
+
}
|
|
23626
23660
|
case "harmony_create_column": {
|
|
23627
23661
|
const name2 = exports_external.string().min(1).parse(args.name);
|
|
23628
23662
|
const projectId = args.projectId || getProjectId();
|
|
@@ -23686,7 +23720,16 @@ Include: cards moved recently, current in-progress items, blocked or high-priori
|
|
|
23686
23720
|
}
|
|
23687
23721
|
case "harmony_get_board": {
|
|
23688
23722
|
const projectId = getProjectId();
|
|
23689
|
-
const
|
|
23723
|
+
const options = {};
|
|
23724
|
+
if (args.limit !== undefined)
|
|
23725
|
+
options.limit = Number(args.limit);
|
|
23726
|
+
if (args.offset !== undefined)
|
|
23727
|
+
options.offset = Number(args.offset);
|
|
23728
|
+
if (args.columnId)
|
|
23729
|
+
options.columnId = String(args.columnId);
|
|
23730
|
+
if (args.summary === true || args.summary === "true")
|
|
23731
|
+
options.summary = true;
|
|
23732
|
+
const result = await client2.getBoard(projectId, options);
|
|
23690
23733
|
return { success: true, board: result };
|
|
23691
23734
|
}
|
|
23692
23735
|
case "harmony_get_workspace_members": {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "harmony-mcp",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.4",
|
|
4
4
|
"description": "MCP server for Harmony Kanban board - enables Claude Code to manage your boards",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
],
|
|
14
14
|
"repository": {
|
|
15
15
|
"type": "git",
|
|
16
|
-
"url": "https://github.com/nicholasgriffintn/harmony"
|
|
16
|
+
"url": "git+https://github.com/nicholasgriffintn/harmony.git"
|
|
17
17
|
},
|
|
18
18
|
"homepage": "https://gethmy.com",
|
|
19
19
|
"bugs": {
|