dspot-trello-gantt 0.2.2 → 0.3.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/README.md +33 -0
- package/dist/main.js +8 -0
- package/dist/main.js.map +1 -1
- package/dist/mcp.d.ts +3 -0
- package/dist/mcp.d.ts.map +1 -0
- package/dist/mcp.js +116 -0
- package/dist/mcp.js.map +1 -0
- package/package.json +2 -1
package/README.md
CHANGED
|
@@ -102,6 +102,39 @@ Add a `## Progress` section to a card's description to set completion:
|
|
|
102
102
|
|
|
103
103
|
Values 0–100. The `%` symbol is optional. No section = 0%.
|
|
104
104
|
|
|
105
|
+
## MCP server
|
|
106
|
+
|
|
107
|
+
Run as an [MCP](https://modelcontextprotocol.io) server so Claude Desktop, Claude Code, or any MCP client can generate Gantt charts directly.
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
trello-gantt-js mcp
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### Claude Desktop / Claude Code configuration
|
|
114
|
+
|
|
115
|
+
Add to your `claude_desktop_config.json` or Claude Code settings:
|
|
116
|
+
|
|
117
|
+
```json
|
|
118
|
+
{
|
|
119
|
+
"mcpServers": {
|
|
120
|
+
"trello-gantt": {
|
|
121
|
+
"command": "npx",
|
|
122
|
+
"args": ["-y", "dspot-trello-gantt", "mcp"],
|
|
123
|
+
"env": {
|
|
124
|
+
"TRELLO_API_KEY": "your_api_key",
|
|
125
|
+
"TRELLO_API_TOKEN": "your_api_token"
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
### Available tools
|
|
133
|
+
|
|
134
|
+
| Tool | Description |
|
|
135
|
+
|---|---|
|
|
136
|
+
| `generate_gantt` | Fetches a Trello board and generates a standalone Gantt HTML file |
|
|
137
|
+
|
|
105
138
|
## Programmatic usage
|
|
106
139
|
|
|
107
140
|
```typescript
|
package/dist/main.js
CHANGED
|
@@ -16,6 +16,7 @@ const trello_js_1 = require("./trello.js");
|
|
|
16
16
|
const validator_js_1 = require("./validator.js");
|
|
17
17
|
const models_js_1 = require("./models.js");
|
|
18
18
|
const publisher_js_1 = require("./publisher.js");
|
|
19
|
+
const mcp_js_1 = require("./mcp.js");
|
|
19
20
|
function parseListsArg(raw) {
|
|
20
21
|
if (!raw)
|
|
21
22
|
return [];
|
|
@@ -150,6 +151,13 @@ async function main() {
|
|
|
150
151
|
process.exit(1);
|
|
151
152
|
}
|
|
152
153
|
});
|
|
154
|
+
// mcp command
|
|
155
|
+
program
|
|
156
|
+
.command('mcp')
|
|
157
|
+
.description('Start the MCP server (stdio transport).')
|
|
158
|
+
.action(async () => {
|
|
159
|
+
await (0, mcp_js_1.runMcpServer)();
|
|
160
|
+
});
|
|
153
161
|
try {
|
|
154
162
|
await program.parseAsync(process.argv);
|
|
155
163
|
}
|
package/dist/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":";;AACA,8DAA8D;;;;;AAE9D,yCAAoC;AACpC,mCAA8C;AAC9C,4CAAoB;AACpB,gDAAwB;AACxB,2CAAmD;AACnD,6CAAuE;AACvE,+CAAqD;AACrD,2CAOqB;AACrB,iDAAuE;AACvE,2CAAwC;AACxC,iDAAqD;
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"AAAA,iEAAiE;AAkIjE,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAGlD"}
|
package/dist/mcp.js
ADDED
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/** MCP server that generates Gantt charts from Trello boards. */
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.runMcpServer = runMcpServer;
|
|
5
|
+
const mcp_js_1 = require("@modelcontextprotocol/sdk/server/mcp.js");
|
|
6
|
+
const stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js");
|
|
7
|
+
const zod_1 = require("zod");
|
|
8
|
+
const mapper_js_1 = require("./mapper.js");
|
|
9
|
+
const mermaid_js_1 = require("./mermaid.js");
|
|
10
|
+
const renderer_js_1 = require("./renderer.js");
|
|
11
|
+
const trello_js_1 = require("./trello.js");
|
|
12
|
+
const validator_js_1 = require("./validator.js");
|
|
13
|
+
const models_js_1 = require("./models.js");
|
|
14
|
+
function parseCsv(value) {
|
|
15
|
+
if (!value)
|
|
16
|
+
return [];
|
|
17
|
+
return value.split(',').map((s) => s.trim()).filter(Boolean);
|
|
18
|
+
}
|
|
19
|
+
const server = new mcp_js_1.McpServer({
|
|
20
|
+
name: 'trello-gantt',
|
|
21
|
+
version: '0.3.0',
|
|
22
|
+
});
|
|
23
|
+
server.tool('generate_gantt', 'Generate a Mermaid Gantt chart HTML file from a Trello board.', {
|
|
24
|
+
board_id: zod_1.z
|
|
25
|
+
.string()
|
|
26
|
+
.describe('Trello board ID or full URL (e.g. "abc123" or "https://trello.com/b/abc123/board-name")'),
|
|
27
|
+
lists: zod_1.z
|
|
28
|
+
.string()
|
|
29
|
+
.optional()
|
|
30
|
+
.describe('Comma-separated list names to include. Omit to use all open lists.'),
|
|
31
|
+
title: zod_1.z
|
|
32
|
+
.string()
|
|
33
|
+
.optional()
|
|
34
|
+
.default('Project Gantt Chart')
|
|
35
|
+
.describe('Chart title displayed in the HTML output.'),
|
|
36
|
+
milestone_list: zod_1.z
|
|
37
|
+
.string()
|
|
38
|
+
.optional()
|
|
39
|
+
.describe('Comma-separated list names to render as milestones.'),
|
|
40
|
+
output: zod_1.z
|
|
41
|
+
.string()
|
|
42
|
+
.optional()
|
|
43
|
+
.default('gantt.html')
|
|
44
|
+
.describe('Output HTML file path.'),
|
|
45
|
+
}, async ({ board_id, lists, title, milestone_list, output }) => {
|
|
46
|
+
let boardId;
|
|
47
|
+
try {
|
|
48
|
+
boardId = (0, trello_js_1.parseBoardId)(board_id);
|
|
49
|
+
}
|
|
50
|
+
catch (err) {
|
|
51
|
+
return { content: [{ type: 'text', text: `Error parsing board ID: ${err}` }] };
|
|
52
|
+
}
|
|
53
|
+
let fetchResult;
|
|
54
|
+
try {
|
|
55
|
+
fetchResult = await (0, trello_js_1.getCardsForLists)(boardId, parseCsv(lists));
|
|
56
|
+
}
|
|
57
|
+
catch (err) {
|
|
58
|
+
if (err instanceof trello_js_1.TrelloAuthError) {
|
|
59
|
+
return { content: [{ type: 'text', text: `Authentication error: ${err.message}. Check TRELLO_API_KEY and TRELLO_API_TOKEN.` }] };
|
|
60
|
+
}
|
|
61
|
+
if (err instanceof trello_js_1.TrelloBoardNotFoundError) {
|
|
62
|
+
return { content: [{ type: 'text', text: `Board not found: ${err.message}` }] };
|
|
63
|
+
}
|
|
64
|
+
if (err instanceof trello_js_1.TrelloDataError) {
|
|
65
|
+
return { content: [{ type: 'text', text: `Trello error: ${err.message}` }] };
|
|
66
|
+
}
|
|
67
|
+
return { content: [{ type: 'text', text: `Unexpected error: ${String(err)}` }] };
|
|
68
|
+
}
|
|
69
|
+
const { tasks, warnings, stats, assigneeLegend } = (0, mapper_js_1.mapCardsToGanttTasks)(fetchResult.cardsByList, { milestoneLists: parseCsv(milestone_list) });
|
|
70
|
+
const allWarnings = [...fetchResult.warnings, ...warnings];
|
|
71
|
+
const report = (0, validator_js_1.validateTasks)(tasks, allWarnings, stats);
|
|
72
|
+
if ((0, models_js_1.hasErrors)(report)) {
|
|
73
|
+
return {
|
|
74
|
+
content: [{
|
|
75
|
+
type: 'text',
|
|
76
|
+
text: `Validation failed. HTML was not generated.\n\n${(0, validator_js_1.formatValidationReport)(report)}`,
|
|
77
|
+
}],
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
let boardName = boardId;
|
|
81
|
+
try {
|
|
82
|
+
boardName = await (0, trello_js_1.getBoardName)(boardId);
|
|
83
|
+
}
|
|
84
|
+
catch { /* fallback */ }
|
|
85
|
+
const mermaidSyntax = (0, mermaid_js_1.generateMermaidGantt)(tasks, title);
|
|
86
|
+
const metadata = {
|
|
87
|
+
title,
|
|
88
|
+
boardId,
|
|
89
|
+
boardName,
|
|
90
|
+
listsUsed: fetchResult.matchedLists.map((l) => l.name),
|
|
91
|
+
generatedAt: new Date().toISOString().replace(/\.\d{3}Z$/, ''),
|
|
92
|
+
assigneeLegend,
|
|
93
|
+
ganttTotalDays: (0, mermaid_js_1.ganttDateSpanDays)(tasks),
|
|
94
|
+
};
|
|
95
|
+
const html = (0, renderer_js_1.renderHtml)(mermaidSyntax, report, metadata, tasks);
|
|
96
|
+
const outputPath = (0, renderer_js_1.saveHtml)(html, output ?? 'gantt.html');
|
|
97
|
+
return {
|
|
98
|
+
content: [{
|
|
99
|
+
type: 'text',
|
|
100
|
+
text: [
|
|
101
|
+
'Gantt chart generated successfully.',
|
|
102
|
+
`Output: ${outputPath}`,
|
|
103
|
+
`Board: ${boardName}`,
|
|
104
|
+
`Cards processed: ${stats.totalCards}`,
|
|
105
|
+
`Tasks generated: ${stats.mappedTasks}`,
|
|
106
|
+
`Warnings: ${report.warnings.length}`,
|
|
107
|
+
`Errors: ${report.errors.length}`,
|
|
108
|
+
].join('\n'),
|
|
109
|
+
}],
|
|
110
|
+
};
|
|
111
|
+
});
|
|
112
|
+
async function runMcpServer() {
|
|
113
|
+
const transport = new stdio_js_1.StdioServerTransport();
|
|
114
|
+
await server.connect(transport);
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=mcp.js.map
|
package/dist/mcp.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dspot-trello-gantt",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "Generate Gantt chart HTML from Trello board data",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"trello",
|
|
@@ -30,6 +30,7 @@
|
|
|
30
30
|
"prepublishOnly": "npm run build"
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
|
+
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
33
34
|
"commander": "^12.0.0",
|
|
34
35
|
"dotenv": "^16.0.0",
|
|
35
36
|
"googleapis": "^171.4.0"
|