@studiometa/productive-mcp 0.8.4 → 0.9.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 +84 -412
- package/dist/auth.js +37 -36
- package/dist/auth.js.map +1 -1
- package/dist/crypto.js +100 -61
- package/dist/crypto.js.map +1 -1
- package/dist/formatters.d.ts +18 -2
- package/dist/formatters.d.ts.map +1 -1
- package/dist/handlers/attachments.d.ts +6 -0
- package/dist/handlers/attachments.d.ts.map +1 -0
- package/dist/handlers/bookings.d.ts +1 -1
- package/dist/handlers/bookings.d.ts.map +1 -1
- package/dist/handlers/budgets.d.ts +9 -0
- package/dist/handlers/budgets.d.ts.map +1 -0
- package/dist/handlers/comments.d.ts +1 -1
- package/dist/handlers/comments.d.ts.map +1 -1
- package/dist/handlers/companies.d.ts +6 -2
- package/dist/handlers/companies.d.ts.map +1 -1
- package/dist/handlers/deals.d.ts +6 -2
- package/dist/handlers/deals.d.ts.map +1 -1
- package/dist/handlers/discussions.d.ts +13 -0
- package/dist/handlers/discussions.d.ts.map +1 -0
- package/dist/handlers/help.d.ts.map +1 -1
- package/dist/handlers/index.d.ts.map +1 -1
- package/dist/handlers/pages.d.ts +13 -0
- package/dist/handlers/pages.d.ts.map +1 -0
- package/dist/handlers/people.d.ts +6 -2
- package/dist/handlers/people.d.ts.map +1 -1
- package/dist/handlers/projects.d.ts +6 -2
- package/dist/handlers/projects.d.ts.map +1 -1
- package/dist/handlers/reports.d.ts +1 -4
- package/dist/handlers/reports.d.ts.map +1 -1
- package/dist/handlers/resolve.d.ts +24 -0
- package/dist/handlers/resolve.d.ts.map +1 -0
- package/dist/handlers/services.d.ts +1 -1
- package/dist/handlers/services.d.ts.map +1 -1
- package/dist/handlers/tasks.d.ts +6 -2
- package/dist/handlers/tasks.d.ts.map +1 -1
- package/dist/handlers/time.d.ts +10 -2
- package/dist/handlers/time.d.ts.map +1 -1
- package/dist/handlers/timers.d.ts +1 -1
- package/dist/handlers/timers.d.ts.map +1 -1
- package/dist/handlers/types.d.ts +42 -3
- package/dist/handlers/types.d.ts.map +1 -1
- package/dist/handlers-BYE2INiR.js +2681 -0
- package/dist/handlers-BYE2INiR.js.map +1 -0
- package/dist/handlers.js +2 -5
- package/dist/hints.d.ts +16 -0
- package/dist/hints.d.ts.map +1 -1
- package/dist/http.js +139 -160
- package/dist/http.js.map +1 -1
- package/dist/index.js +74 -54
- package/dist/index.js.map +1 -1
- package/dist/oauth.js +285 -255
- package/dist/oauth.js.map +1 -1
- package/dist/schema.d.ts +17 -0
- package/dist/schema.d.ts.map +1 -1
- package/dist/server.js +67 -50
- package/dist/server.js.map +1 -1
- package/dist/stdio.js +85 -105
- package/dist/stdio.js.map +1 -1
- package/dist/tools.js +155 -145
- package/dist/tools.js.map +1 -1
- package/dist/version-Dj8VXyV0.js +29 -0
- package/dist/version-Dj8VXyV0.js.map +1 -0
- package/package.json +10 -10
- package/skills/SKILL.md +209 -13
- package/Dockerfile +0 -36
- package/dist/handlers.js.map +0 -1
- package/dist/index-CZpVCEu4.js +0 -1681
- package/dist/index-CZpVCEu4.js.map +0 -1
- package/dist/version-DLWm7CFT.js +0 -21
- package/dist/version-DLWm7CFT.js.map +0 -1
package/skills/SKILL.md
CHANGED
|
@@ -17,19 +17,36 @@ productive(resource, action, [parameters...])
|
|
|
17
17
|
|
|
18
18
|
### Resources & Actions
|
|
19
19
|
|
|
20
|
-
| Resource
|
|
21
|
-
|
|
|
22
|
-
| `projects`
|
|
23
|
-
| `time`
|
|
24
|
-
| `tasks`
|
|
25
|
-
| `services`
|
|
26
|
-
| `people`
|
|
27
|
-
| `companies`
|
|
28
|
-
| `comments`
|
|
29
|
-
| `
|
|
30
|
-
| `
|
|
31
|
-
| `
|
|
32
|
-
| `
|
|
20
|
+
| Resource | Actions | Description |
|
|
21
|
+
| ------------- | ------------------------------------------------------------------------ | ----------------------- |
|
|
22
|
+
| `projects` | `list`, `get`, `resolve`, `help` | Project management |
|
|
23
|
+
| `time` | `list`, `get`, `create`, `update`, `resolve`, `help` | Time tracking |
|
|
24
|
+
| `tasks` | `list`, `get`, `create`, `update`, `resolve`, `help` | Task management |
|
|
25
|
+
| `services` | `list`, `get`, `resolve`, `help` | Budget line items |
|
|
26
|
+
| `people` | `list`, `get`, `me`, `resolve`, `help` | Team members |
|
|
27
|
+
| `companies` | `list`, `get`, `create`, `update`, `resolve`, `help` | Client companies |
|
|
28
|
+
| `comments` | `list`, `get`, `create`, `update`, `help` | Comments on tasks/deals |
|
|
29
|
+
| `attachments` | `list`, `get`, `delete`, `help` | File attachments |
|
|
30
|
+
| `timers` | `list`, `get`, `start`, `stop`, `help` | Active timers |
|
|
31
|
+
| `deals` | `list`, `get`, `create`, `update`, `resolve`, `help` | Sales deals |
|
|
32
|
+
| `bookings` | `list`, `get`, `create`, `update`, `help` | Resource scheduling |
|
|
33
|
+
| `budgets` | `list`, `get`, `help` | Budget tracking |
|
|
34
|
+
| `reports` | `get`, `help` | Generate reports |
|
|
35
|
+
| Resource | Actions | Description |
|
|
36
|
+
| ------------- | ------------------------------------------------------------------------ | ----------------------- |
|
|
37
|
+
| `projects` | `list`, `get`, `resolve`, `help` | Project management |
|
|
38
|
+
| `time` | `list`, `get`, `create`, `update`, `resolve`, `help` | Time tracking |
|
|
39
|
+
| `tasks` | `list`, `get`, `create`, `update`, `resolve`, `help` | Task management |
|
|
40
|
+
| `services` | `list`, `get`, `resolve`, `help` | Budget line items |
|
|
41
|
+
| `people` | `list`, `get`, `me`, `resolve`, `help` | Team members |
|
|
42
|
+
| `companies` | `list`, `get`, `create`, `update`, `resolve`, `help` | Client companies |
|
|
43
|
+
| `comments` | `list`, `get`, `create`, `update`, `help` | Comments on tasks/deals |
|
|
44
|
+
| `timers` | `list`, `get`, `start`, `stop`, `help` | Active timers |
|
|
45
|
+
| `deals` | `list`, `get`, `create`, `update`, `resolve`, `help` | Sales deals |
|
|
46
|
+
| `bookings` | `list`, `get`, `create`, `update`, `help` | Resource scheduling |
|
|
47
|
+
| `pages` | `list`, `get`, `create`, `update`, `delete`, `help` | Wiki/docs pages |
|
|
48
|
+
| `discussions` | `list`, `get`, `create`, `update`, `delete`, `resolve`, `reopen`, `help` | Discussions on pages |
|
|
49
|
+
| `reports` | `get`, `help` | Generate reports |
|
|
33
50
|
|
|
34
51
|
### Getting Help
|
|
35
52
|
|
|
@@ -59,6 +76,92 @@ Returns filters, fields, includes, and examples for that resource.
|
|
|
59
76
|
| `query` | string | Text search (behavior varies by resource - may search related fields like project names) |
|
|
60
77
|
| `no_hints` | boolean | Disable contextual hints in responses (default: false) |
|
|
61
78
|
|
|
79
|
+
## Smart ID Resolution
|
|
80
|
+
|
|
81
|
+
Use human-friendly identifiers instead of numeric IDs. The server automatically resolves:
|
|
82
|
+
|
|
83
|
+
- **Emails** → Person IDs: `user@example.com` → `500521`
|
|
84
|
+
- **Project numbers** → Project IDs: `PRJ-123` or `P-123` → `777332`
|
|
85
|
+
- **Deal numbers** → Deal IDs: `D-456` or `DEAL-456` → `888123`
|
|
86
|
+
- **Names** → IDs: Company names, service names (with project context)
|
|
87
|
+
|
|
88
|
+
### Auto-Resolution in Filters
|
|
89
|
+
|
|
90
|
+
Filters automatically resolve human-friendly values:
|
|
91
|
+
|
|
92
|
+
```json
|
|
93
|
+
// Email resolved to person ID
|
|
94
|
+
{
|
|
95
|
+
"resource": "tasks",
|
|
96
|
+
"action": "list",
|
|
97
|
+
"filter": { "assignee_id": "user@example.com" }
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
// Project number resolved
|
|
101
|
+
{
|
|
102
|
+
"resource": "time",
|
|
103
|
+
"action": "list",
|
|
104
|
+
"filter": { "project_id": "PRJ-123" }
|
|
105
|
+
}
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
Response includes `_resolved` metadata showing what was resolved:
|
|
109
|
+
|
|
110
|
+
```json
|
|
111
|
+
{
|
|
112
|
+
"data": [...],
|
|
113
|
+
"_resolved": {
|
|
114
|
+
"assignee_id": {
|
|
115
|
+
"input": "user@example.com",
|
|
116
|
+
"id": "500521",
|
|
117
|
+
"label": "John Doe"
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
### Auto-Resolution in Get Actions
|
|
124
|
+
|
|
125
|
+
Use human-friendly IDs directly in `get` actions:
|
|
126
|
+
|
|
127
|
+
```json
|
|
128
|
+
{ "resource": "projects", "action": "get", "id": "PRJ-123" }
|
|
129
|
+
{ "resource": "people", "action": "get", "id": "user@example.com" }
|
|
130
|
+
{ "resource": "deals", "action": "get", "id": "D-456" }
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
### Explicit Resolution with `resolve` Action
|
|
134
|
+
|
|
135
|
+
Look up resources by human-friendly identifiers:
|
|
136
|
+
|
|
137
|
+
```json
|
|
138
|
+
// Resolve email to person
|
|
139
|
+
{ "resource": "people", "action": "resolve", "query": "user@example.com" }
|
|
140
|
+
|
|
141
|
+
// Resolve project number
|
|
142
|
+
{ "resource": "projects", "action": "resolve", "query": "PRJ-123" }
|
|
143
|
+
|
|
144
|
+
// Resolve with type hint (when pattern is ambiguous)
|
|
145
|
+
{ "resource": "time", "action": "resolve", "query": "Development", "type": "service", "project_id": "777332" }
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
Response:
|
|
149
|
+
|
|
150
|
+
```json
|
|
151
|
+
{
|
|
152
|
+
"matches": [
|
|
153
|
+
{
|
|
154
|
+
"id": "500521",
|
|
155
|
+
"label": "John Doe",
|
|
156
|
+
"type": "person",
|
|
157
|
+
"exact": true
|
|
158
|
+
}
|
|
159
|
+
],
|
|
160
|
+
"query": "user@example.com",
|
|
161
|
+
"detected_type": "person"
|
|
162
|
+
}
|
|
163
|
+
```
|
|
164
|
+
|
|
62
165
|
## Examples by Resource
|
|
63
166
|
|
|
64
167
|
### Projects
|
|
@@ -199,6 +302,22 @@ Returns filters, fields, includes, and examples for that resource.
|
|
|
199
302
|
{ "resource": "timers", "action": "stop", "id": "67890" }
|
|
200
303
|
```
|
|
201
304
|
|
|
305
|
+
### Budgets
|
|
306
|
+
|
|
307
|
+
```json
|
|
308
|
+
// List all budgets
|
|
309
|
+
{ "resource": "budgets", "action": "list" }
|
|
310
|
+
|
|
311
|
+
// List budgets for a project
|
|
312
|
+
{ "resource": "budgets", "action": "list", "filter": { "project_id": "12345" } }
|
|
313
|
+
|
|
314
|
+
// Get budget details
|
|
315
|
+
{ "resource": "budgets", "action": "get", "id": "67890" }
|
|
316
|
+
|
|
317
|
+
// List billable budgets
|
|
318
|
+
{ "resource": "budgets", "action": "list", "filter": { "billable": "true" } }
|
|
319
|
+
```
|
|
320
|
+
|
|
202
321
|
### Reports
|
|
203
322
|
|
|
204
323
|
```json
|
|
@@ -221,6 +340,64 @@ Returns filters, fields, includes, and examples for that resource.
|
|
|
221
340
|
}
|
|
222
341
|
```
|
|
223
342
|
|
|
343
|
+
### Pages (Docs)
|
|
344
|
+
|
|
345
|
+
```json
|
|
346
|
+
// List pages for a project
|
|
347
|
+
{ "resource": "pages", "action": "list", "filter": { "project_id": "12345" } }
|
|
348
|
+
|
|
349
|
+
// Get page details
|
|
350
|
+
{ "resource": "pages", "action": "get", "id": "67890" }
|
|
351
|
+
|
|
352
|
+
// Create a page
|
|
353
|
+
{
|
|
354
|
+
"resource": "pages",
|
|
355
|
+
"action": "create",
|
|
356
|
+
"title": "Getting Started",
|
|
357
|
+
"project_id": "12345"
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
// Create a sub-page
|
|
361
|
+
{
|
|
362
|
+
"resource": "pages",
|
|
363
|
+
"action": "create",
|
|
364
|
+
"title": "Installation",
|
|
365
|
+
"project_id": "12345",
|
|
366
|
+
"parent_page_id": "67890"
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
// Delete a page
|
|
370
|
+
{ "resource": "pages", "action": "delete", "id": "67890" }
|
|
371
|
+
```
|
|
372
|
+
|
|
373
|
+
### Discussions
|
|
374
|
+
|
|
375
|
+
```json
|
|
376
|
+
// List discussions on a page
|
|
377
|
+
{
|
|
378
|
+
"resource": "discussions",
|
|
379
|
+
"action": "list",
|
|
380
|
+
"filter": { "page_id": "12345" }
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
// List active discussions
|
|
384
|
+
{ "resource": "discussions", "action": "list", "status": "active" }
|
|
385
|
+
|
|
386
|
+
// Create a discussion
|
|
387
|
+
{
|
|
388
|
+
"resource": "discussions",
|
|
389
|
+
"action": "create",
|
|
390
|
+
"page_id": "12345",
|
|
391
|
+
"body": "This section needs review"
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
// Resolve a discussion
|
|
395
|
+
{ "resource": "discussions", "action": "resolve", "id": "67890" }
|
|
396
|
+
|
|
397
|
+
// Reopen a resolved discussion
|
|
398
|
+
{ "resource": "discussions", "action": "reopen", "id": "67890" }
|
|
399
|
+
```
|
|
400
|
+
|
|
224
401
|
## Filters Reference
|
|
225
402
|
|
|
226
403
|
### Time Entries
|
|
@@ -299,6 +476,25 @@ Returns filters, fields, includes, and examples for that resource.
|
|
|
299
476
|
- `booking_type` - Type: `event` (absence) or `service` (budget)
|
|
300
477
|
- `draft` - Tentative status: `true`/`false`
|
|
301
478
|
|
|
479
|
+
### Budgets
|
|
480
|
+
|
|
481
|
+
- `project_id` - Filter by project
|
|
482
|
+
- `company_id` - Filter by company
|
|
483
|
+
- `deal_id` - Filter by deal
|
|
484
|
+
- `billable` - Filter by billable status: `true`/`false`
|
|
485
|
+
- `budget_type` - Filter by budget type
|
|
486
|
+
|
|
487
|
+
### Pages
|
|
488
|
+
|
|
489
|
+
- `project_id` - Filter by project
|
|
490
|
+
- `creator_id` - Filter by creator
|
|
491
|
+
- `parent_page_id` - Filter by parent page (for sub-pages)
|
|
492
|
+
|
|
493
|
+
### Discussions
|
|
494
|
+
|
|
495
|
+
- `page_id` - Filter by page
|
|
496
|
+
- `status` - Status: `1`=active, `2`=resolved (or "active", "resolved")
|
|
497
|
+
|
|
302
498
|
### Comments
|
|
303
499
|
|
|
304
500
|
- `task_id` - Filter by task
|
package/Dockerfile
DELETED
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
# Productive MCP Server - HTTP Transport
|
|
2
|
-
#
|
|
3
|
-
# Build from the repository root:
|
|
4
|
-
# docker build -t productive-mcp-server -f packages/productive-mcp/Dockerfile .
|
|
5
|
-
#
|
|
6
|
-
# Or from the package directory with published packages:
|
|
7
|
-
# docker build -t productive-mcp-server .
|
|
8
|
-
|
|
9
|
-
FROM node:20-alpine
|
|
10
|
-
|
|
11
|
-
WORKDIR /app
|
|
12
|
-
|
|
13
|
-
# Install the package globally from npm
|
|
14
|
-
RUN npm install -g @studiometa/productive-mcp
|
|
15
|
-
|
|
16
|
-
# Set environment variables
|
|
17
|
-
ENV NODE_ENV=production
|
|
18
|
-
ENV PORT=3000
|
|
19
|
-
ENV HOST=0.0.0.0
|
|
20
|
-
|
|
21
|
-
# Create non-root user for security
|
|
22
|
-
RUN addgroup -g 1001 -S nodejs && \
|
|
23
|
-
adduser -S nodejs -u 1001 -G nodejs
|
|
24
|
-
|
|
25
|
-
# Expose port
|
|
26
|
-
EXPOSE 3000
|
|
27
|
-
|
|
28
|
-
# Health check
|
|
29
|
-
HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
|
|
30
|
-
CMD wget --no-verbose --tries=1 --spider http://localhost:3000/health || exit 1
|
|
31
|
-
|
|
32
|
-
# Switch to non-root user
|
|
33
|
-
USER nodejs
|
|
34
|
-
|
|
35
|
-
# Run the HTTP server
|
|
36
|
-
CMD ["productive-mcp-server"]
|
package/dist/handlers.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"handlers.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
|