basecamp-mcp 1.0.1 → 1.0.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/README.md +9 -7
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/tools/activity.d.ts +13 -0
- package/dist/tools/activity.d.ts.map +1 -0
- package/dist/tools/activity.js +321 -0
- package/dist/tools/activity.js.map +1 -0
- package/dist/tools/kanban.d.ts.map +1 -1
- package/dist/tools/kanban.js +221 -48
- package/dist/tools/kanban.js.map +1 -1
- package/dist/tools/todos.d.ts.map +1 -1
- package/dist/tools/todos.js +101 -5
- package/dist/tools/todos.js.map +1 -1
- package/dist/utils/contentOperations.d.ts +1 -1
- package/dist/utils/contentOperations.d.ts.map +1 -1
- package/dist/utils/contentOperations.js +7 -2
- package/dist/utils/contentOperations.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -15,7 +15,7 @@ The baseline setup applies across most tools:
|
|
|
15
15
|
"mcpServers": {
|
|
16
16
|
"basecamp": {
|
|
17
17
|
"command": "npx",
|
|
18
|
-
"args": ["-y", "
|
|
18
|
+
"args": ["-y", "basecamp-mcp@latest"],
|
|
19
19
|
"env": {
|
|
20
20
|
"BASECAMP_CLIENT_ID": "your_client_id",
|
|
21
21
|
"BASECAMP_CLIENT_SECRET": "your_client_secret",
|
|
@@ -32,7 +32,7 @@ The baseline setup applies across most tools:
|
|
|
32
32
|
|
|
33
33
|
**Claude Code CLI:**
|
|
34
34
|
```bash
|
|
35
|
-
claude mcp add basecamp npx
|
|
35
|
+
claude mcp add basecamp npx basecamp-mcp@latest \
|
|
36
36
|
-e BASECAMP_CLIENT_ID=your_client_id \
|
|
37
37
|
-e BASECAMP_CLIENT_SECRET=your_client_secret \
|
|
38
38
|
-e BASECAMP_REFRESH_TOKEN=your_refresh_token \
|
|
@@ -46,7 +46,7 @@ claude mcp add basecamp npx @basecamp/mcp@latest \
|
|
|
46
46
|
|
|
47
47
|
**VS Code:** One-click installation provided, or use the CLI:
|
|
48
48
|
```bash
|
|
49
|
-
code --add-mcp '{"name":"basecamp","command":"npx","args":["-y", "
|
|
49
|
+
code --add-mcp '{"name":"basecamp","command":"npx","args":["-y", "basecamp-mcp@latest"]}'
|
|
50
50
|
```
|
|
51
51
|
|
|
52
52
|
**Gemini CLI & Windsurf:** Refer to their respective documentation; use the standard config template.
|
|
@@ -68,7 +68,7 @@ The server requires the following environment variables:
|
|
|
68
68
|
"mcpServers": {
|
|
69
69
|
"basecamp": {
|
|
70
70
|
"command": "npx",
|
|
71
|
-
"args": ["-y", "
|
|
71
|
+
"args": ["-y", "basecamp-mcp@latest"],
|
|
72
72
|
"env": {
|
|
73
73
|
"BASECAMP_CLIENT_ID": "your_client_id",
|
|
74
74
|
"BASECAMP_CLIENT_SECRET": "your_client_secret",
|
|
@@ -129,10 +129,12 @@ npm run dev
|
|
|
129
129
|
- `basecamp_list_kanban_columns` - List all columns in a kanban board
|
|
130
130
|
- `basecamp_list_kanban_cards` - List cards in a column with steps and assignees
|
|
131
131
|
- `basecamp_get_kanban_card` - Get complete details of a specific card
|
|
132
|
-
- `basecamp_create_kanban_card` - Create new card with title and optional
|
|
133
|
-
- `basecamp_update_kanban_card` - Update card with advanced content editing (supports full replacement, append, prepend, search/replace, plus title, due date, assignees, notifications)
|
|
132
|
+
- `basecamp_create_kanban_card` - Create new card with title, content, and optional checklist steps
|
|
133
|
+
- `basecamp_update_kanban_card` - Update card with advanced content editing (supports full replacement, append, prepend, search/replace, plus title, due date, assignees, notifications, and complete step array management)
|
|
134
134
|
- `basecamp_move_kanban_card` - Move a card to a different column and/or position
|
|
135
|
-
|
|
135
|
+
|
|
136
|
+
#### Activity
|
|
137
|
+
- `basecamp_list_recordings` - Browse recent activity globally or across specific projects, with filtering by type, date range, person, and text search. All filters except text search support multiple values (e.g., multiple project IDs, person IDs, or types for OR-matching)
|
|
136
138
|
|
|
137
139
|
## Development
|
|
138
140
|
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;GAiBG"}
|
package/dist/index.js
CHANGED
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
* - Comments (universal - work on any resource)
|
|
10
10
|
* - People
|
|
11
11
|
* - Kanban (cards, columns, steps)
|
|
12
|
+
* - Activity (recordings browsing)
|
|
12
13
|
*
|
|
13
14
|
* Environment variables required:
|
|
14
15
|
* - BASECAMP_CLIENT_ID
|
|
@@ -18,6 +19,7 @@
|
|
|
18
19
|
*/
|
|
19
20
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
20
21
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
22
|
+
import { registerActivityTools } from "./tools/activity.js";
|
|
21
23
|
import { registerCommentTools } from "./tools/comments.js";
|
|
22
24
|
import { registerKanbanTools } from "./tools/kanban.js";
|
|
23
25
|
import { registerMessageTools } from "./tools/messages.js";
|
|
@@ -55,6 +57,7 @@ async function main() {
|
|
|
55
57
|
registerCommentTools(server);
|
|
56
58
|
registerPeopleTools(server);
|
|
57
59
|
registerKanbanTools(server);
|
|
60
|
+
registerActivityTools(server);
|
|
58
61
|
console.error("Tools registered successfully");
|
|
59
62
|
// Create stdio transport
|
|
60
63
|
const transport = new StdioServerTransport();
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,qCAAqC;AACrC,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD;;GAEG;AACH,KAAK,UAAU,IAAI;IACjB,0CAA0C;IAC1C,MAAM,eAAe,GAAG;QACtB,oBAAoB;QACpB,wBAAwB;QACxB,wBAAwB;QACxB,qBAAqB;KACtB,CAAC;IAEF,MAAM,OAAO,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3E,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,KAAK,CACX,kDAAkD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACvE,CAAC;QACF,OAAO,CAAC,KAAK,CACX,+EAA+E,CAChF,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,6BAA6B;IAC7B,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,IAAI,EAAE,qBAAqB;QAC3B,OAAO,EAAE,OAAO;KACjB,CAAC,CAAC;IAEH,+BAA+B;IAC/B,OAAO,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;IACtC,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC7B,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC7B,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC1B,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC7B,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAC5B,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAC5B,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAC9B,OAAO,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;IAE/C,yBAAyB;IACzB,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAE7C,8BAA8B;IAC9B,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAEhC,OAAO,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;IACtD,OAAO,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;AACpD,CAAC;AAED,iBAAiB;AACjB,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,2CAA2C,EAAE,KAAK,CAAC,CAAC;IAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Activity browsing tools for Basecamp MCP server
|
|
3
|
+
*
|
|
4
|
+
* Uses the Basecamp recordings API to provide activity browsing:
|
|
5
|
+
* listing recent changes across projects with filtering by type,
|
|
6
|
+
* date range, person, project, and text search.
|
|
7
|
+
*/
|
|
8
|
+
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
9
|
+
/**
|
|
10
|
+
* Register all activity-related tools with the MCP server
|
|
11
|
+
*/
|
|
12
|
+
export declare function registerActivityTools(server: McpServer): void;
|
|
13
|
+
//# sourceMappingURL=activity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"activity.d.ts","sourceRoot":"","sources":["../../src/tools/activity.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAuHzE;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAqQ7D"}
|
|
@@ -0,0 +1,321 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Activity browsing tools for Basecamp MCP server
|
|
3
|
+
*
|
|
4
|
+
* Uses the Basecamp recordings API to provide activity browsing:
|
|
5
|
+
* listing recent changes across projects with filtering by type,
|
|
6
|
+
* date range, person, project, and text search.
|
|
7
|
+
*/
|
|
8
|
+
import { asyncPagedIterator } from "basecamp-client";
|
|
9
|
+
import { z } from "zod";
|
|
10
|
+
import { CHARACTER_LIMIT, DEFAULT_LIMIT } from "../constants.js";
|
|
11
|
+
import { BasecampIdSchema } from "../schemas/common.js";
|
|
12
|
+
import { initializeBasecampClient } from "../utils/auth.js";
|
|
13
|
+
import { handleBasecampError } from "../utils/errorHandlers.js";
|
|
14
|
+
/** Default recording types to fetch when no type filter is specified */
|
|
15
|
+
const DEFAULT_RECORDING_TYPES = [
|
|
16
|
+
"Todo",
|
|
17
|
+
"Message",
|
|
18
|
+
"Document",
|
|
19
|
+
"Comment",
|
|
20
|
+
"Upload",
|
|
21
|
+
];
|
|
22
|
+
/** Map of friendly type aliases to canonical Basecamp API type names */
|
|
23
|
+
const TYPE_ALIASES = {
|
|
24
|
+
todo: "Todo",
|
|
25
|
+
todos: "Todo",
|
|
26
|
+
message: "Message",
|
|
27
|
+
messages: "Message",
|
|
28
|
+
msg: "Message",
|
|
29
|
+
document: "Document",
|
|
30
|
+
doc: "Document",
|
|
31
|
+
docs: "Document",
|
|
32
|
+
comment: "Comment",
|
|
33
|
+
comments: "Comment",
|
|
34
|
+
upload: "Upload",
|
|
35
|
+
uploads: "Upload",
|
|
36
|
+
file: "Upload",
|
|
37
|
+
files: "Upload",
|
|
38
|
+
todolist: "Todolist",
|
|
39
|
+
question: "Question::Answer",
|
|
40
|
+
answer: "Question::Answer",
|
|
41
|
+
event: "Schedule::Entry",
|
|
42
|
+
schedule: "Schedule::Entry",
|
|
43
|
+
vault: "Vault",
|
|
44
|
+
card: "Kanban::Card",
|
|
45
|
+
cards: "Kanban::Card",
|
|
46
|
+
kanban: "Kanban::Card",
|
|
47
|
+
step: "Kanban::Step",
|
|
48
|
+
steps: "Kanban::Step",
|
|
49
|
+
};
|
|
50
|
+
/**
|
|
51
|
+
* Parse a "since" value into a Date object.
|
|
52
|
+
*
|
|
53
|
+
* Supports:
|
|
54
|
+
* - Relative durations: "24h", "7d", "2w"
|
|
55
|
+
* - Keywords: "today", "yesterday"
|
|
56
|
+
* - ISO 8601 dates: "2024-01-15", "2024-01-15T10:00:00Z"
|
|
57
|
+
*/
|
|
58
|
+
function parseSince(value) {
|
|
59
|
+
const now = new Date();
|
|
60
|
+
const trimmed = value.trim();
|
|
61
|
+
const lower = trimmed.toLowerCase();
|
|
62
|
+
// Relative durations: Nh, Nd, Nw
|
|
63
|
+
const hourMatch = lower.match(/^(\d+)h$/);
|
|
64
|
+
if (hourMatch) {
|
|
65
|
+
return new Date(now.getTime() - Number.parseInt(hourMatch[1], 10) * 3600000);
|
|
66
|
+
}
|
|
67
|
+
const dayMatch = lower.match(/^(\d+)d$/);
|
|
68
|
+
if (dayMatch) {
|
|
69
|
+
return new Date(now.getTime() - Number.parseInt(dayMatch[1], 10) * 86400000);
|
|
70
|
+
}
|
|
71
|
+
const weekMatch = lower.match(/^(\d+)w$/);
|
|
72
|
+
if (weekMatch) {
|
|
73
|
+
return new Date(now.getTime() - Number.parseInt(weekMatch[1], 10) * 7 * 86400000);
|
|
74
|
+
}
|
|
75
|
+
// Keywords
|
|
76
|
+
if (lower === "today") {
|
|
77
|
+
const d = new Date(now);
|
|
78
|
+
d.setHours(0, 0, 0, 0);
|
|
79
|
+
return d;
|
|
80
|
+
}
|
|
81
|
+
if (lower === "yesterday") {
|
|
82
|
+
const d = new Date(now);
|
|
83
|
+
d.setDate(d.getDate() - 1);
|
|
84
|
+
d.setHours(0, 0, 0, 0);
|
|
85
|
+
return d;
|
|
86
|
+
}
|
|
87
|
+
// ISO 8601 / date string
|
|
88
|
+
const parsed = new Date(trimmed);
|
|
89
|
+
if (Number.isNaN(parsed.getTime())) {
|
|
90
|
+
throw new Error(`Invalid since value: "${value}". ` +
|
|
91
|
+
'Use ISO 8601 (e.g., "2024-01-15"), relative duration (e.g., "24h", "7d", "2w"), ' +
|
|
92
|
+
'or keyword ("today", "yesterday").');
|
|
93
|
+
}
|
|
94
|
+
return parsed;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Resolve an array of type strings (possibly using aliases)
|
|
98
|
+
* to deduplicated canonical Basecamp API type names.
|
|
99
|
+
*/
|
|
100
|
+
function resolveTypes(types) {
|
|
101
|
+
const resolved = new Set();
|
|
102
|
+
for (const t of types) {
|
|
103
|
+
const lower = t.trim().toLowerCase();
|
|
104
|
+
resolved.add(TYPE_ALIASES[lower] || t.trim());
|
|
105
|
+
}
|
|
106
|
+
return [...resolved];
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Register all activity-related tools with the MCP server
|
|
110
|
+
*/
|
|
111
|
+
export function registerActivityTools(server) {
|
|
112
|
+
server.registerTool("basecamp_list_recordings", {
|
|
113
|
+
title: "List Basecamp Activity (Recordings)",
|
|
114
|
+
description: `Browse recent activity across Basecamp by listing recordings. Recordings represent all content in Basecamp: todos, messages, documents, comments, uploads, and more.
|
|
115
|
+
|
|
116
|
+
Use this tool to:
|
|
117
|
+
- See what's been happening across all projects or specific projects
|
|
118
|
+
- Find recent activity by one or more people
|
|
119
|
+
- Review changes since a specific date or time period
|
|
120
|
+
- Filter activity by content type (todos, messages, documents, etc.)
|
|
121
|
+
- Search activity by title text
|
|
122
|
+
|
|
123
|
+
All filters except query support multiple values for OR-matching.
|
|
124
|
+
|
|
125
|
+
Examples:
|
|
126
|
+
- "What happened in the last 24 hours?" → since: "24h"
|
|
127
|
+
- "Show recent todos in project 12345" → project_ids: [12345], type: ["todo"]
|
|
128
|
+
- "What did Alice and Bob do this week?" → person_ids: [111, 222], since: "7d"
|
|
129
|
+
- "Find messages mentioning launch across projects 1 and 2" → project_ids: [1, 2], type: ["message"], query: "launch"
|
|
130
|
+
- "List all messages across projects" → type: ["message"]`,
|
|
131
|
+
inputSchema: {
|
|
132
|
+
project_ids: z
|
|
133
|
+
.array(BasecampIdSchema)
|
|
134
|
+
.optional()
|
|
135
|
+
.describe("Filter to specific projects (bucket IDs). Supports multiple IDs for OR-matching. Omit to browse across all projects."),
|
|
136
|
+
type: z
|
|
137
|
+
.array(z.string())
|
|
138
|
+
.optional()
|
|
139
|
+
.describe('Recording type filter. Options: "todo", "message", "document", "comment", "upload", ' +
|
|
140
|
+
'"todolist", "question", "schedule", "vault". ' +
|
|
141
|
+
"Supports multiple values for OR-matching. " +
|
|
142
|
+
"Omit to fetch all common types (todo, message, document, comment, upload)."),
|
|
143
|
+
since: z
|
|
144
|
+
.string()
|
|
145
|
+
.optional()
|
|
146
|
+
.describe('Show activity since this time. Accepts ISO 8601 dates (e.g., "2024-01-15"), ' +
|
|
147
|
+
'relative durations ("24h", "7d", "2w"), or keywords ("today", "yesterday").'),
|
|
148
|
+
person_ids: z
|
|
149
|
+
.array(BasecampIdSchema)
|
|
150
|
+
.optional()
|
|
151
|
+
.describe("Filter by creator person IDs. Supports multiple IDs for OR-matching. Use basecamp_list_people to find person IDs."),
|
|
152
|
+
query: z
|
|
153
|
+
.string()
|
|
154
|
+
.optional()
|
|
155
|
+
.describe("Case-insensitive text search against recording titles."),
|
|
156
|
+
sort: z
|
|
157
|
+
.enum(["created_at", "updated_at"])
|
|
158
|
+
.optional()
|
|
159
|
+
.describe('Sort field: "created_at" (default) or "updated_at".'),
|
|
160
|
+
direction: z
|
|
161
|
+
.enum(["desc", "asc"])
|
|
162
|
+
.optional()
|
|
163
|
+
.describe('Sort direction: "desc" (default, newest first) or "asc" (oldest first).'),
|
|
164
|
+
status: z
|
|
165
|
+
.enum(["active", "archived", "trashed"])
|
|
166
|
+
.optional()
|
|
167
|
+
.describe('Recording status filter: "active" (default), "archived", or "trashed".'),
|
|
168
|
+
limit: z
|
|
169
|
+
.number()
|
|
170
|
+
.min(1)
|
|
171
|
+
.max(100)
|
|
172
|
+
.optional()
|
|
173
|
+
.describe(`Maximum number of recordings to return (default: ${DEFAULT_LIMIT}, max: 100).`),
|
|
174
|
+
},
|
|
175
|
+
annotations: {
|
|
176
|
+
readOnlyHint: true,
|
|
177
|
+
destructiveHint: false,
|
|
178
|
+
idempotentHint: true,
|
|
179
|
+
openWorldHint: true,
|
|
180
|
+
},
|
|
181
|
+
}, async (params) => {
|
|
182
|
+
try {
|
|
183
|
+
const client = await initializeBasecampClient();
|
|
184
|
+
// Determine which types to fetch
|
|
185
|
+
const types = params.type
|
|
186
|
+
? resolveTypes(params.type)
|
|
187
|
+
: DEFAULT_RECORDING_TYPES;
|
|
188
|
+
// Build shared query params
|
|
189
|
+
const baseQuery = {};
|
|
190
|
+
if (params.project_ids && params.project_ids.length > 0) {
|
|
191
|
+
baseQuery.bucket = params.project_ids.join(",");
|
|
192
|
+
}
|
|
193
|
+
if (params.sort) {
|
|
194
|
+
baseQuery.sort = params.sort;
|
|
195
|
+
}
|
|
196
|
+
if (params.direction) {
|
|
197
|
+
baseQuery.direction = params.direction;
|
|
198
|
+
}
|
|
199
|
+
if (params.status) {
|
|
200
|
+
baseQuery.status = params.status;
|
|
201
|
+
}
|
|
202
|
+
// Parse since date upfront if provided
|
|
203
|
+
const sinceDate = params.since ? parseSince(params.since) : null;
|
|
204
|
+
const sortField = params.sort || "created_at";
|
|
205
|
+
// Fetch recordings for each type in parallel, with early termination if since is set
|
|
206
|
+
const fetchPromises = types.map(async (type) => {
|
|
207
|
+
const items = [];
|
|
208
|
+
for await (const item of asyncPagedIterator({
|
|
209
|
+
fetchPage: client.recordings.list,
|
|
210
|
+
request: {
|
|
211
|
+
query: { type, ...baseQuery },
|
|
212
|
+
},
|
|
213
|
+
})) {
|
|
214
|
+
// If filtering by date and results are sorted desc (default),
|
|
215
|
+
// stop once we hit records older than the cutoff
|
|
216
|
+
if (sinceDate && params.direction !== "asc") {
|
|
217
|
+
const itemDate = new Date(sortField === "updated_at" ? item.updated_at : item.created_at);
|
|
218
|
+
if (itemDate < sinceDate) {
|
|
219
|
+
break;
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
items.push(item);
|
|
223
|
+
}
|
|
224
|
+
return items;
|
|
225
|
+
});
|
|
226
|
+
const results = await Promise.all(fetchPromises);
|
|
227
|
+
let filtered = results.flat();
|
|
228
|
+
// If direction is asc, we couldn't do early termination, so filter now
|
|
229
|
+
if (sinceDate && params.direction === "asc") {
|
|
230
|
+
filtered = filtered.filter((r) => {
|
|
231
|
+
const date = new Date(sortField === "updated_at" ? r.updated_at : r.created_at);
|
|
232
|
+
return date >= sinceDate;
|
|
233
|
+
});
|
|
234
|
+
}
|
|
235
|
+
// Filter by person IDs (OR-match)
|
|
236
|
+
if (params.person_ids && params.person_ids.length > 0) {
|
|
237
|
+
const personIdSet = new Set(params.person_ids);
|
|
238
|
+
filtered = filtered.filter((r) => r.creator && personIdSet.has(r.creator.id));
|
|
239
|
+
}
|
|
240
|
+
// Filter by text search (case-insensitive substring match on title)
|
|
241
|
+
if (params.query) {
|
|
242
|
+
const lowerQuery = params.query.toLowerCase();
|
|
243
|
+
filtered = filtered.filter((r) => r.title.toLowerCase().includes(lowerQuery));
|
|
244
|
+
}
|
|
245
|
+
// Sort merged results
|
|
246
|
+
const sortDir = params.direction || "desc";
|
|
247
|
+
filtered.sort((a, b) => {
|
|
248
|
+
const dateA = new Date(sortField === "updated_at" ? a.updated_at : a.created_at).getTime();
|
|
249
|
+
const dateB = new Date(sortField === "updated_at" ? b.updated_at : b.created_at).getTime();
|
|
250
|
+
return sortDir === "desc" ? dateB - dateA : dateA - dateB;
|
|
251
|
+
});
|
|
252
|
+
// Apply limit
|
|
253
|
+
const limit = params.limit || DEFAULT_LIMIT;
|
|
254
|
+
const total = filtered.length;
|
|
255
|
+
filtered = filtered.slice(0, limit);
|
|
256
|
+
// Serialize response
|
|
257
|
+
const serialized = filtered.map((r) => ({
|
|
258
|
+
id: r.id,
|
|
259
|
+
type: r.type,
|
|
260
|
+
title: r.title,
|
|
261
|
+
status: r.status,
|
|
262
|
+
created_at: r.created_at,
|
|
263
|
+
updated_at: r.updated_at,
|
|
264
|
+
url: r.app_url,
|
|
265
|
+
creator: r.creator
|
|
266
|
+
? {
|
|
267
|
+
id: r.creator.id,
|
|
268
|
+
name: r.creator.name,
|
|
269
|
+
email: r.creator.email_address,
|
|
270
|
+
}
|
|
271
|
+
: null,
|
|
272
|
+
project: r.bucket
|
|
273
|
+
? {
|
|
274
|
+
id: r.bucket.id,
|
|
275
|
+
name: r.bucket.name,
|
|
276
|
+
}
|
|
277
|
+
: null,
|
|
278
|
+
...(r.parent
|
|
279
|
+
? {
|
|
280
|
+
parent: {
|
|
281
|
+
id: r.parent.id,
|
|
282
|
+
title: r.parent.title,
|
|
283
|
+
type: r.parent.type,
|
|
284
|
+
},
|
|
285
|
+
}
|
|
286
|
+
: {}),
|
|
287
|
+
}));
|
|
288
|
+
const result = {
|
|
289
|
+
recordings: serialized,
|
|
290
|
+
total_fetched: total,
|
|
291
|
+
returned: serialized.length,
|
|
292
|
+
};
|
|
293
|
+
if (total > limit) {
|
|
294
|
+
result.truncated = true;
|
|
295
|
+
result.truncation_message = `Showing ${limit} of ${total} recordings. Increase limit or narrow filters to see more.`;
|
|
296
|
+
}
|
|
297
|
+
let jsonStr = JSON.stringify(result, null, 2);
|
|
298
|
+
// Handle response size limit
|
|
299
|
+
if (jsonStr.length > CHARACTER_LIMIT) {
|
|
300
|
+
const reducedLimit = Math.floor(serialized.length / 2);
|
|
301
|
+
const reduced = serialized.slice(0, reducedLimit);
|
|
302
|
+
jsonStr = JSON.stringify({
|
|
303
|
+
recordings: reduced,
|
|
304
|
+
total_fetched: total,
|
|
305
|
+
returned: reduced.length,
|
|
306
|
+
truncated: true,
|
|
307
|
+
truncation_message: `Response truncated to ${reduced.length} recordings due to size limits. Use more specific filters or a smaller limit.`,
|
|
308
|
+
}, null, 2);
|
|
309
|
+
}
|
|
310
|
+
return {
|
|
311
|
+
content: [{ type: "text", text: jsonStr }],
|
|
312
|
+
};
|
|
313
|
+
}
|
|
314
|
+
catch (error) {
|
|
315
|
+
return {
|
|
316
|
+
content: [{ type: "text", text: handleBasecampError(error) }],
|
|
317
|
+
};
|
|
318
|
+
}
|
|
319
|
+
});
|
|
320
|
+
}
|
|
321
|
+
//# sourceMappingURL=activity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"activity.js","sourceRoot":"","sources":["../../src/tools/activity.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kanban.d.ts","sourceRoot":"","sources":["../../src/tools/kanban.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"kanban.d.ts","sourceRoot":"","sources":["../../src/tools/kanban.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAwNzE,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA4e3D"}
|
package/dist/tools/kanban.js
CHANGED
|
@@ -8,6 +8,146 @@ import { initializeBasecampClient } from "../utils/auth.js";
|
|
|
8
8
|
import { applyContentOperations, ContentOperationFields, htmlRules, validateContentOperations, } from "../utils/contentOperations.js";
|
|
9
9
|
import { handleBasecampError } from "../utils/errorHandlers.js";
|
|
10
10
|
import { serializePerson } from "../utils/serializers.js";
|
|
11
|
+
/**
|
|
12
|
+
* Process step operations for a kanban card (create, update, delete, reposition, setCompletion)
|
|
13
|
+
* Uses complete array replacement approach - steps not in desired array will be deleted
|
|
14
|
+
*/
|
|
15
|
+
async function processStepOperations(client, bucketId, cardId, currentSteps, desiredSteps) {
|
|
16
|
+
// ===== VALIDATION =====
|
|
17
|
+
// Validate new steps have titles
|
|
18
|
+
for (const step of desiredSteps) {
|
|
19
|
+
if (!step.id && !step.title) {
|
|
20
|
+
throw new Error("New steps (without id) must have a title");
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
// Check for duplicate IDs
|
|
24
|
+
const stepIds = desiredSteps.filter((s) => s.id).map((s) => s.id);
|
|
25
|
+
if (new Set(stepIds).size !== stepIds.length) {
|
|
26
|
+
throw new Error("Duplicate step IDs found in steps array");
|
|
27
|
+
}
|
|
28
|
+
// Validate all step IDs exist on current card
|
|
29
|
+
const currentStepIds = new Set(currentSteps.map((s) => s.id));
|
|
30
|
+
for (const id of stepIds) {
|
|
31
|
+
if (!currentStepIds.has(id)) {
|
|
32
|
+
const available = Array.from(currentStepIds).join(", ");
|
|
33
|
+
throw new Error(`Step ID ${id} not found on card. ${available
|
|
34
|
+
? `Available IDs: ${available}`
|
|
35
|
+
: "No steps exist on this card."}`);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
// ===== IDENTIFY OPERATIONS =====
|
|
39
|
+
const desiredStepIds = new Set(stepIds);
|
|
40
|
+
// Steps to delete: in current but not in desired
|
|
41
|
+
const toDelete = currentSteps.filter((s) => !desiredStepIds.has(s.id));
|
|
42
|
+
// Steps to create: no ID provided
|
|
43
|
+
const toCreate = desiredSteps.filter((s) => !s.id);
|
|
44
|
+
// Steps to update/reposition/complete
|
|
45
|
+
const toProcess = desiredSteps.filter((s) => s.id);
|
|
46
|
+
// ===== DELETE OPERATIONS =====
|
|
47
|
+
for (const step of toDelete) {
|
|
48
|
+
await client.recordings.trash({
|
|
49
|
+
params: { bucketId, recordingId: step.id },
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
// ===== CREATE OPERATIONS =====
|
|
53
|
+
const createdStepIds = []; // Track new IDs for repositioning
|
|
54
|
+
for (const step of toCreate) {
|
|
55
|
+
const response = await client.cardTableSteps.create({
|
|
56
|
+
params: { bucketId, cardId },
|
|
57
|
+
body: {
|
|
58
|
+
title: step.title,
|
|
59
|
+
...(step.due_on !== undefined
|
|
60
|
+
? { due_on: step.due_on || undefined }
|
|
61
|
+
: {}),
|
|
62
|
+
...(step.assignee_ids
|
|
63
|
+
? { assignees: step.assignee_ids.join(",") }
|
|
64
|
+
: {}),
|
|
65
|
+
},
|
|
66
|
+
});
|
|
67
|
+
if (response.status !== 201 || !response.body) {
|
|
68
|
+
throw new Error(`Failed to create step: ${step.title}`);
|
|
69
|
+
}
|
|
70
|
+
createdStepIds.push(response.body.id);
|
|
71
|
+
// Set completion if specified
|
|
72
|
+
if (step.completed !== undefined && step.completed) {
|
|
73
|
+
await client.cardTableSteps.setCompletion({
|
|
74
|
+
params: { bucketId, stepId: response.body.id },
|
|
75
|
+
body: { completion: "on" },
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
// ===== UPDATE OPERATIONS =====
|
|
80
|
+
// Build a map of current steps for comparison
|
|
81
|
+
const currentStepMap = new Map(currentSteps.map((s) => [s.id, s]));
|
|
82
|
+
for (const step of toProcess) {
|
|
83
|
+
const currentStep = currentStepMap.get(step.id);
|
|
84
|
+
if (!currentStep)
|
|
85
|
+
continue; // Should not happen due to validation
|
|
86
|
+
// Check what changed
|
|
87
|
+
const titleChanged = step.title && step.title !== currentStep.title;
|
|
88
|
+
const dueOnChanged = step.due_on !== undefined && step.due_on !== currentStep.due_on;
|
|
89
|
+
const currentAssigneeIds = currentStep.assignees?.map((a) => a.id) || [];
|
|
90
|
+
const desiredAssigneeIds = step.assignee_ids || [];
|
|
91
|
+
const assigneesChanged = step.assignee_ids !== undefined &&
|
|
92
|
+
(currentAssigneeIds.length !== desiredAssigneeIds.length ||
|
|
93
|
+
!currentAssigneeIds.every((id, i) => id === desiredAssigneeIds[i]));
|
|
94
|
+
// Only update if something changed
|
|
95
|
+
if (titleChanged || dueOnChanged || assigneesChanged) {
|
|
96
|
+
await client.cardTableSteps.update({
|
|
97
|
+
params: { bucketId, stepId: step.id },
|
|
98
|
+
body: {
|
|
99
|
+
...(step.title ? { title: step.title } : {}),
|
|
100
|
+
...(step.due_on !== undefined
|
|
101
|
+
? { due_on: step.due_on || undefined }
|
|
102
|
+
: {}),
|
|
103
|
+
...(step.assignee_ids
|
|
104
|
+
? { assignees: step.assignee_ids.join(",") }
|
|
105
|
+
: {}),
|
|
106
|
+
},
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
// Handle completion status changes
|
|
110
|
+
if (step.completed !== undefined &&
|
|
111
|
+
step.completed !== currentStep.completed) {
|
|
112
|
+
await client.cardTableSteps.setCompletion({
|
|
113
|
+
params: { bucketId, stepId: step.id },
|
|
114
|
+
body: { completion: step.completed ? "on" : "off" },
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
// ===== REPOSITION OPERATIONS =====
|
|
119
|
+
// Build final list of step IDs in desired order (mix of existing and new)
|
|
120
|
+
const finalStepIds = [];
|
|
121
|
+
let createIndex = 0;
|
|
122
|
+
for (const step of desiredSteps) {
|
|
123
|
+
if (step.id) {
|
|
124
|
+
finalStepIds.push(step.id);
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
// This was a created step, use the ID we tracked
|
|
128
|
+
if (createIndex < createdStepIds.length) {
|
|
129
|
+
finalStepIds.push(createdStepIds[createIndex++]);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
// Get current positions after all operations
|
|
134
|
+
// We need to reposition if the order doesn't match
|
|
135
|
+
const currentPositions = new Map(currentSteps
|
|
136
|
+
.filter((s) => finalStepIds.includes(s.id))
|
|
137
|
+
.map((s, i) => [s.id, i]));
|
|
138
|
+
// Reposition each step to match the desired array order
|
|
139
|
+
for (let i = 0; i < finalStepIds.length; i++) {
|
|
140
|
+
const stepId = finalStepIds[i];
|
|
141
|
+
const currentPos = currentPositions.get(stepId);
|
|
142
|
+
// Only reposition if needed
|
|
143
|
+
if (currentPos !== undefined && currentPos !== i) {
|
|
144
|
+
await client.cardTableSteps.reposition({
|
|
145
|
+
params: { bucketId, cardId },
|
|
146
|
+
body: { source_id: stepId, position: i },
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
11
151
|
export function registerKanbanTools(server) {
|
|
12
152
|
server.registerTool("basecamp_list_kanban_columns", {
|
|
13
153
|
title: "List Kanban Columns",
|
|
@@ -167,12 +307,37 @@ export function registerKanbanTools(server) {
|
|
|
167
307
|
});
|
|
168
308
|
server.registerTool("basecamp_create_kanban_card", {
|
|
169
309
|
title: "Create Kanban Card",
|
|
170
|
-
description: `Create a new card in a kanban column. ${htmlRules}`,
|
|
310
|
+
description: `Create a new card in a kanban column with optional checklist steps. ${htmlRules}`,
|
|
171
311
|
inputSchema: {
|
|
172
312
|
bucket_id: BasecampIdSchema,
|
|
173
313
|
column_id: BasecampIdSchema,
|
|
174
314
|
title: z.string().min(1),
|
|
175
315
|
content: z.string().optional(),
|
|
316
|
+
due_on: z.string().optional().describe("Due date in YYYY-MM-DD format"),
|
|
317
|
+
assignee_ids: z
|
|
318
|
+
.array(z.number())
|
|
319
|
+
.optional()
|
|
320
|
+
.describe("Array of user IDs to assign to the card"),
|
|
321
|
+
notify: z.boolean().optional().describe("Whether to notify assignees"),
|
|
322
|
+
steps: z
|
|
323
|
+
.array(z.object({
|
|
324
|
+
title: z.string().describe("Step title"),
|
|
325
|
+
due_on: z
|
|
326
|
+
.string()
|
|
327
|
+
.nullable()
|
|
328
|
+
.optional()
|
|
329
|
+
.describe("Due date (YYYY-MM-DD) or null"),
|
|
330
|
+
assignee_ids: z
|
|
331
|
+
.array(z.number())
|
|
332
|
+
.optional()
|
|
333
|
+
.describe("Array of user IDs to assign"),
|
|
334
|
+
completed: z
|
|
335
|
+
.boolean()
|
|
336
|
+
.optional()
|
|
337
|
+
.describe("Whether step is completed"),
|
|
338
|
+
}))
|
|
339
|
+
.optional()
|
|
340
|
+
.describe("Array of steps to create. Array order defines position."),
|
|
176
341
|
},
|
|
177
342
|
annotations: {
|
|
178
343
|
readOnlyHint: false,
|
|
@@ -185,11 +350,24 @@ export function registerKanbanTools(server) {
|
|
|
185
350
|
const client = await initializeBasecampClient();
|
|
186
351
|
const response = await client.cardTableCards.create({
|
|
187
352
|
params: { bucketId: params.bucket_id, columnId: params.column_id },
|
|
188
|
-
body: {
|
|
353
|
+
body: {
|
|
354
|
+
title: params.title,
|
|
355
|
+
content: params.content,
|
|
356
|
+
...(params.due_on ? { due_on: params.due_on } : {}),
|
|
357
|
+
...(params.assignee_ids
|
|
358
|
+
? { assignee_ids: params.assignee_ids }
|
|
359
|
+
: {}),
|
|
360
|
+
...(params.notify !== undefined ? { notify: params.notify } : {}),
|
|
361
|
+
},
|
|
189
362
|
});
|
|
190
363
|
if (response.status !== 201 || !response.body) {
|
|
191
364
|
throw new Error("Failed to create card");
|
|
192
365
|
}
|
|
366
|
+
// Process step operations if provided (for new card, currentSteps is empty)
|
|
367
|
+
if (params.steps) {
|
|
368
|
+
await processStepOperations(client, params.bucket_id, response.body.id, [], // No current steps for a new card
|
|
369
|
+
params.steps);
|
|
370
|
+
}
|
|
193
371
|
return {
|
|
194
372
|
content: [
|
|
195
373
|
{
|
|
@@ -207,7 +385,7 @@ export function registerKanbanTools(server) {
|
|
|
207
385
|
});
|
|
208
386
|
server.registerTool("basecamp_update_kanban_card", {
|
|
209
387
|
title: "Update Kanban Card",
|
|
210
|
-
description: `Update a kanban card. At least one field (title, content,
|
|
388
|
+
description: `Update a kanban card including its steps. At least one field (title, content, partial content operations, or steps) must be provided. Use partial content operations when possible to save on token usage. ${htmlRules}`,
|
|
211
389
|
inputSchema: {
|
|
212
390
|
bucket_id: BasecampIdSchema,
|
|
213
391
|
card_id: BasecampIdSchema,
|
|
@@ -225,6 +403,29 @@ export function registerKanbanTools(server) {
|
|
|
225
403
|
.array(z.number())
|
|
226
404
|
.optional()
|
|
227
405
|
.describe("Array of user IDs to assign to the card"),
|
|
406
|
+
steps: z
|
|
407
|
+
.array(z.object({
|
|
408
|
+
id: z
|
|
409
|
+
.number()
|
|
410
|
+
.optional()
|
|
411
|
+
.describe("Step ID for updates. Omit for new steps."),
|
|
412
|
+
title: z.string().describe("Step title. Required for new steps."),
|
|
413
|
+
due_on: z
|
|
414
|
+
.string()
|
|
415
|
+
.nullable()
|
|
416
|
+
.optional()
|
|
417
|
+
.describe("Due date (YYYY-MM-DD) or null to clear"),
|
|
418
|
+
assignee_ids: z
|
|
419
|
+
.array(z.number())
|
|
420
|
+
.optional()
|
|
421
|
+
.describe("Array of user IDs to assign"),
|
|
422
|
+
completed: z
|
|
423
|
+
.boolean()
|
|
424
|
+
.optional()
|
|
425
|
+
.describe("Whether step is completed"),
|
|
426
|
+
}))
|
|
427
|
+
.optional()
|
|
428
|
+
.describe("Complete array of desired steps. Array order defines position. Steps not in array will be deleted."),
|
|
228
429
|
},
|
|
229
430
|
annotations: {
|
|
230
431
|
readOnlyHint: false,
|
|
@@ -240,16 +441,18 @@ export function registerKanbanTools(server) {
|
|
|
240
441
|
"due_on",
|
|
241
442
|
"notify",
|
|
242
443
|
"assignee_ids",
|
|
444
|
+
"steps",
|
|
243
445
|
]);
|
|
244
446
|
const client = await initializeBasecampClient();
|
|
245
447
|
let finalContent;
|
|
448
|
+
let currentCard = null;
|
|
246
449
|
// Check if we need to fetch current content for partial operations
|
|
247
450
|
const hasPartialOps = params.content_append ||
|
|
248
451
|
params.content_prepend ||
|
|
249
452
|
params.search_replace;
|
|
250
|
-
if (hasPartialOps || params.content !== undefined) {
|
|
251
|
-
// Fetch current card if needed for partial operations
|
|
252
|
-
if (hasPartialOps) {
|
|
453
|
+
if (hasPartialOps || params.content !== undefined || params.steps) {
|
|
454
|
+
// Fetch current card if needed for partial operations or steps
|
|
455
|
+
if (hasPartialOps || params.steps) {
|
|
253
456
|
const currentResponse = await client.cardTableCards.get({
|
|
254
457
|
params: {
|
|
255
458
|
bucketId: params.bucket_id,
|
|
@@ -259,8 +462,11 @@ export function registerKanbanTools(server) {
|
|
|
259
462
|
if (currentResponse.status !== 200 || !currentResponse.body) {
|
|
260
463
|
throw new Error(`Failed to fetch current card: ${currentResponse.status}`);
|
|
261
464
|
}
|
|
262
|
-
|
|
263
|
-
|
|
465
|
+
currentCard = currentResponse.body;
|
|
466
|
+
if (hasPartialOps) {
|
|
467
|
+
const currentContent = currentCard.content || "";
|
|
468
|
+
finalContent = applyContentOperations(currentContent, params);
|
|
469
|
+
}
|
|
264
470
|
}
|
|
265
471
|
else {
|
|
266
472
|
// Full content replacement
|
|
@@ -282,6 +488,10 @@ export function registerKanbanTools(server) {
|
|
|
282
488
|
if (response.status !== 200 || !response.body) {
|
|
283
489
|
throw new Error("Failed to update card");
|
|
284
490
|
}
|
|
491
|
+
// Process step operations if provided
|
|
492
|
+
if (params.steps) {
|
|
493
|
+
await processStepOperations(client, params.bucket_id, params.card_id, currentCard?.steps || [], params.steps);
|
|
494
|
+
}
|
|
285
495
|
return {
|
|
286
496
|
content: [
|
|
287
497
|
{
|
|
@@ -336,46 +546,9 @@ export function registerKanbanTools(server) {
|
|
|
336
546
|
content: [
|
|
337
547
|
{
|
|
338
548
|
type: "text",
|
|
339
|
-
text: `Card moved successfully to column ${params.column_id}${params.position !== undefined
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
};
|
|
343
|
-
}
|
|
344
|
-
catch (error) {
|
|
345
|
-
return {
|
|
346
|
-
content: [{ type: "text", text: handleBasecampError(error) }],
|
|
347
|
-
};
|
|
348
|
-
}
|
|
349
|
-
});
|
|
350
|
-
server.registerTool("basecamp_create_kanban_step", {
|
|
351
|
-
title: "Create Kanban Step",
|
|
352
|
-
description: "Add a checklist step to a kanban card.",
|
|
353
|
-
inputSchema: {
|
|
354
|
-
bucket_id: BasecampIdSchema,
|
|
355
|
-
card_id: BasecampIdSchema,
|
|
356
|
-
title: z.string().min(1),
|
|
357
|
-
},
|
|
358
|
-
annotations: {
|
|
359
|
-
readOnlyHint: false,
|
|
360
|
-
destructiveHint: false,
|
|
361
|
-
idempotentHint: false,
|
|
362
|
-
openWorldHint: true,
|
|
363
|
-
},
|
|
364
|
-
}, async (params) => {
|
|
365
|
-
try {
|
|
366
|
-
const client = await initializeBasecampClient();
|
|
367
|
-
const response = await client.cardTableSteps.create({
|
|
368
|
-
params: { bucketId: params.bucket_id, cardId: params.card_id },
|
|
369
|
-
body: { title: params.title },
|
|
370
|
-
});
|
|
371
|
-
if (response.status !== 201 || !response.body) {
|
|
372
|
-
throw new Error("Failed to create step");
|
|
373
|
-
}
|
|
374
|
-
return {
|
|
375
|
-
content: [
|
|
376
|
-
{
|
|
377
|
-
type: "text",
|
|
378
|
-
text: `Step created!\n\nID: ${response.body.id}\nTitle: ${response.body.title}`,
|
|
549
|
+
text: `Card moved successfully to column ${params.column_id}${params.position !== undefined
|
|
550
|
+
? ` at position ${params.position}`
|
|
551
|
+
: ""}!`,
|
|
379
552
|
},
|
|
380
553
|
],
|
|
381
554
|
};
|
package/dist/tools/kanban.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kanban.js","sourceRoot":"","sources":["../../src/tools/kanban.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"kanban.js","sourceRoot":"","sources":["../../src/tools/kanban.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"todos.d.ts","sourceRoot":"","sources":["../../src/tools/todos.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"todos.d.ts","sourceRoot":"","sources":["../../src/tools/todos.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAczE,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAwWzD"}
|
package/dist/tools/todos.js
CHANGED
|
@@ -5,8 +5,9 @@ import { asyncPagedToArray } from "basecamp-client";
|
|
|
5
5
|
import { z } from "zod";
|
|
6
6
|
import { BasecampIdSchema } from "../schemas/common.js";
|
|
7
7
|
import { initializeBasecampClient } from "../utils/auth.js";
|
|
8
|
-
import { htmlRules } from "../utils/contentOperations.js";
|
|
8
|
+
import { applyContentOperations, ContentOperationFields, htmlRules, validateContentOperations, } from "../utils/contentOperations.js";
|
|
9
9
|
import { handleBasecampError } from "../utils/errorHandlers.js";
|
|
10
|
+
import { serializePerson } from "../utils/serializers.js";
|
|
10
11
|
export function registerTodoTools(server) {
|
|
11
12
|
server.registerTool("basecamp_get_todoset", {
|
|
12
13
|
title: "Get Basecamp Todo Set",
|
|
@@ -104,8 +105,9 @@ export function registerTodoTools(server) {
|
|
|
104
105
|
count: todos.length,
|
|
105
106
|
todos: todos.map((t) => ({
|
|
106
107
|
id: t.id,
|
|
107
|
-
|
|
108
|
+
title: t.content,
|
|
108
109
|
completed: t.completed,
|
|
110
|
+
assignees: t.assignees.map(serializePerson),
|
|
109
111
|
})),
|
|
110
112
|
}, null, 2),
|
|
111
113
|
},
|
|
@@ -124,8 +126,12 @@ export function registerTodoTools(server) {
|
|
|
124
126
|
inputSchema: {
|
|
125
127
|
bucket_id: BasecampIdSchema,
|
|
126
128
|
todolist_id: BasecampIdSchema,
|
|
127
|
-
|
|
128
|
-
|
|
129
|
+
title: z.string().min(1),
|
|
130
|
+
content: z.string().optional(),
|
|
131
|
+
assignee_ids: z
|
|
132
|
+
.array(BasecampIdSchema)
|
|
133
|
+
.optional()
|
|
134
|
+
.describe("Array of person IDs to assign to this todo"),
|
|
129
135
|
},
|
|
130
136
|
annotations: {
|
|
131
137
|
readOnlyHint: false,
|
|
@@ -141,7 +147,11 @@ export function registerTodoTools(server) {
|
|
|
141
147
|
bucketId: params.bucket_id,
|
|
142
148
|
todolistId: params.todolist_id,
|
|
143
149
|
},
|
|
144
|
-
body: {
|
|
150
|
+
body: {
|
|
151
|
+
content: params.title,
|
|
152
|
+
description: params.content,
|
|
153
|
+
assignee_ids: params.assignee_ids,
|
|
154
|
+
},
|
|
145
155
|
});
|
|
146
156
|
if (response.status !== 201 || !response.body) {
|
|
147
157
|
throw new Error("Failed to create todo");
|
|
@@ -219,5 +229,91 @@ export function registerTodoTools(server) {
|
|
|
219
229
|
};
|
|
220
230
|
}
|
|
221
231
|
});
|
|
232
|
+
server.registerTool("basecamp_update_todo", {
|
|
233
|
+
title: "Update Basecamp Todo",
|
|
234
|
+
description: `Update a todo item. Use partial content operations when possible to save on token usage. ${htmlRules}`,
|
|
235
|
+
inputSchema: {
|
|
236
|
+
bucket_id: BasecampIdSchema,
|
|
237
|
+
todo_id: BasecampIdSchema,
|
|
238
|
+
title: z.string().optional().describe("New todo title"),
|
|
239
|
+
assignee_ids: z
|
|
240
|
+
.array(BasecampIdSchema)
|
|
241
|
+
.optional()
|
|
242
|
+
.describe("Array of person IDs to assign to this todo"),
|
|
243
|
+
...ContentOperationFields,
|
|
244
|
+
},
|
|
245
|
+
annotations: {
|
|
246
|
+
readOnlyHint: false,
|
|
247
|
+
destructiveHint: false,
|
|
248
|
+
idempotentHint: true,
|
|
249
|
+
openWorldHint: true,
|
|
250
|
+
},
|
|
251
|
+
}, async (params) => {
|
|
252
|
+
try {
|
|
253
|
+
// Validate at least one operation is provided
|
|
254
|
+
validateContentOperations(params, ["title", "assignee_ids"]);
|
|
255
|
+
const client = await initializeBasecampClient();
|
|
256
|
+
// Fetch current todo to get existing values
|
|
257
|
+
const currentResponse = await client.todos.get({
|
|
258
|
+
params: {
|
|
259
|
+
bucketId: params.bucket_id,
|
|
260
|
+
todoId: params.todo_id,
|
|
261
|
+
},
|
|
262
|
+
});
|
|
263
|
+
if (currentResponse.status !== 200 || !currentResponse.body) {
|
|
264
|
+
throw new Error(`Failed to fetch current todo: ${currentResponse.status}`);
|
|
265
|
+
}
|
|
266
|
+
// Determine final title (maps to Basecamp's content field)
|
|
267
|
+
const finalTitle = params.title ?? currentResponse.body.content;
|
|
268
|
+
// Determine final content (maps to Basecamp's description field)
|
|
269
|
+
let finalContent;
|
|
270
|
+
const hasPartialOps = params.content_append ||
|
|
271
|
+
params.content_prepend ||
|
|
272
|
+
params.search_replace;
|
|
273
|
+
if (hasPartialOps) {
|
|
274
|
+
const currentContent = currentResponse.body.description || "";
|
|
275
|
+
const result = applyContentOperations(currentContent, params);
|
|
276
|
+
if (result === undefined) {
|
|
277
|
+
throw new Error("Content operations resulted in undefined content");
|
|
278
|
+
}
|
|
279
|
+
finalContent = result;
|
|
280
|
+
}
|
|
281
|
+
else if (params.content !== undefined) {
|
|
282
|
+
// Full content replacement
|
|
283
|
+
finalContent = params.content;
|
|
284
|
+
}
|
|
285
|
+
const response = await client.todos.update({
|
|
286
|
+
params: {
|
|
287
|
+
bucketId: params.bucket_id,
|
|
288
|
+
todoId: params.todo_id,
|
|
289
|
+
},
|
|
290
|
+
body: {
|
|
291
|
+
content: finalTitle,
|
|
292
|
+
...(finalContent !== undefined
|
|
293
|
+
? { description: finalContent }
|
|
294
|
+
: {}),
|
|
295
|
+
...(params.assignee_ids !== undefined
|
|
296
|
+
? { assignee_ids: params.assignee_ids }
|
|
297
|
+
: {}),
|
|
298
|
+
},
|
|
299
|
+
});
|
|
300
|
+
if (response.status !== 200 || !response.body) {
|
|
301
|
+
throw new Error("Failed to update todo");
|
|
302
|
+
}
|
|
303
|
+
return {
|
|
304
|
+
content: [
|
|
305
|
+
{
|
|
306
|
+
type: "text",
|
|
307
|
+
text: `Todo updated!\n\nID: ${response.body.id}\nContent: ${response.body.content}`,
|
|
308
|
+
},
|
|
309
|
+
],
|
|
310
|
+
};
|
|
311
|
+
}
|
|
312
|
+
catch (error) {
|
|
313
|
+
return {
|
|
314
|
+
content: [{ type: "text", text: handleBasecampError(error) }],
|
|
315
|
+
};
|
|
316
|
+
}
|
|
317
|
+
});
|
|
222
318
|
}
|
|
223
319
|
//# sourceMappingURL=todos.js.map
|
package/dist/tools/todos.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"todos.js","sourceRoot":"","sources":["../../src/tools/todos.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,
|
|
1
|
+
{"version":3,"file":"todos.js","sourceRoot":"","sources":["../../src/tools/todos.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Used by messages, comments, and other content-based tools
|
|
4
4
|
*/
|
|
5
5
|
import { z } from "zod";
|
|
6
|
-
export declare const htmlRules = "\n\nHTML rules for content:\n\n* Allowed tags: div, h1, br, strong, em, strike, a (with an href attribute), pre, ol, ul, li, blockquote, bc-attachment (with sgid attribute).\n* Try to be semantic despite the limitations of tags. Use double <br>
|
|
6
|
+
export declare const htmlRules = "\n\nHTML rules for content:\n\n* Allowed tags: div, span, h1, br, strong, em, strike, a (with an href attribute), pre, ol, ul, li, blockquote, bc-attachment (with sgid attribute).\n* Try to be semantic despite the limitations of tags. Use double <br> to create paragraph spacing\n* To mention people: <bc-attachment sgid=\"{ person.attachable_sgid }\"></bc-attachment>\n* To consume less tokens, existing <bc-attachment> tags can be rewritten by dropping any attributes/inner content and just leave the \"sgid\" and \"caption\" attributes, without loosing any information\n* You can highlight parts of the content in this format <span style=\"background-color: rgb(...);\">...</span> valid colors are:\n * red: 255, 229, 229\n * yellow: 250, 247, 133\n * green: 228, 248, 226\n";
|
|
7
7
|
/**
|
|
8
8
|
* Shared Zod schema for content operation fields
|
|
9
9
|
* These fields can be composed into tool-specific schemas
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contentOperations.d.ts","sourceRoot":"","sources":["../../src/utils/contentOperations.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,SAAS,
|
|
1
|
+
{"version":3,"file":"contentOperations.d.ts","sourceRoot":"","sources":["../../src/utils/contentOperations.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,SAAS,ixBAYrB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;CAgClC,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC3D;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CACpC,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,sBAAsB,GACjC,MAAM,GAAG,SAAS,CAkDpB;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,sBAAsB,EAClC,gBAAgB,GAAE,MAAM,EAAO,GAC9B,IAAI,CAmBN"}
|
|
@@ -7,9 +7,14 @@ export const htmlRules = `
|
|
|
7
7
|
|
|
8
8
|
HTML rules for content:
|
|
9
9
|
|
|
10
|
-
* Allowed tags: div, h1, br, strong, em, strike, a (with an href attribute), pre, ol, ul, li, blockquote, bc-attachment (with sgid attribute).
|
|
11
|
-
* Try to be semantic despite the limitations of tags. Use double <br>
|
|
10
|
+
* Allowed tags: div, span, h1, br, strong, em, strike, a (with an href attribute), pre, ol, ul, li, blockquote, bc-attachment (with sgid attribute).
|
|
11
|
+
* Try to be semantic despite the limitations of tags. Use double <br> to create paragraph spacing
|
|
12
12
|
* To mention people: <bc-attachment sgid="{ person.attachable_sgid }"></bc-attachment>
|
|
13
|
+
* To consume less tokens, existing <bc-attachment> tags can be rewritten by dropping any attributes/inner content and just leave the "sgid" and "caption" attributes, without loosing any information
|
|
14
|
+
* You can highlight parts of the content in this format <span style="background-color: rgb(...);">...</span> valid colors are:
|
|
15
|
+
* red: 255, 229, 229
|
|
16
|
+
* yellow: 250, 247, 133
|
|
17
|
+
* green: 228, 248, 226
|
|
13
18
|
`;
|
|
14
19
|
/**
|
|
15
20
|
* Shared Zod schema for content operation fields
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contentOperations.js","sourceRoot":"","sources":["../../src/utils/contentOperations.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,SAAS,GAAG
|
|
1
|
+
{"version":3,"file":"contentOperations.js","sourceRoot":"","sources":["../../src/utils/contentOperations.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "basecamp-mcp",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.3",
|
|
4
4
|
"description": "Model Context Protocol (MCP) server for Basecamp integration. Enables LLMs to interact with Basecamp projects, messages, todos, comments, people, and kanban boards.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
"homepage": "https://github.com/stefanoverna/basecamp-mcp#readme",
|
|
50
50
|
"dependencies": {
|
|
51
51
|
"@modelcontextprotocol/sdk": "^1.6.1",
|
|
52
|
-
"basecamp-client": "^1.0.
|
|
52
|
+
"basecamp-client": "^1.0.8",
|
|
53
53
|
"zod": "^3.23.8"
|
|
54
54
|
},
|
|
55
55
|
"devDependencies": {
|