@helmdesk/mcp 0.3.0 → 0.4.1
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 +3 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +2 -0
- package/dist/server.js.map +1 -1
- package/dist/tools/logs.d.ts +4 -0
- package/dist/tools/logs.d.ts.map +1 -0
- package/dist/tools/logs.js +42 -0
- package/dist/tools/logs.js.map +1 -0
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -56,8 +56,10 @@ HELMDESK_API_KEY=sk_live_xxx npx @helmdesk/mcp
|
|
|
56
56
|
| `get_template_schema` | Get the variable schema for an email template |
|
|
57
57
|
| `search_articles` | Search the knowledge base |
|
|
58
58
|
| `create_article` | Create a knowledge-base article (draft or published) |
|
|
59
|
+
| `query_logs` | Query raw application log events (filter by level, search, fingerprint) |
|
|
60
|
+
| `list_log_issues` | List grouped error issues — "did anything break?" |
|
|
59
61
|
|
|
60
|
-
|
|
62
|
+
15 tools in total — `tickets:write` is required for ticket mutations and `add_ticket_tag`/`remove_ticket_tag`, `emails:send` for `send_email`/`send_email_batch` (batch also needs the Pro plan or higher), `articles:write` for `create_article`, `logs:read` for `query_logs`/`list_log_issues`. A key with empty scopes has full access.
|
|
61
63
|
|
|
62
64
|
## Available Resources
|
|
63
65
|
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AASnE,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,kBAAkB,GAAG,SAAS,CAwB9E"}
|
package/dist/server.js
CHANGED
|
@@ -3,6 +3,7 @@ import { HelmdeskClient } from '@helmdesk/sdk';
|
|
|
3
3
|
import { registerTicketTools } from './tools/tickets.js';
|
|
4
4
|
import { registerEmailTools } from './tools/emails.js';
|
|
5
5
|
import { registerArticleTools } from './tools/articles.js';
|
|
6
|
+
import { registerLogTools } from './tools/logs.js';
|
|
6
7
|
import { registerTicketResources } from './resources/tickets.js';
|
|
7
8
|
import { registerArticleResources } from './resources/articles.js';
|
|
8
9
|
export function createHelmdeskMcpServer(options) {
|
|
@@ -19,6 +20,7 @@ export function createHelmdeskMcpServer(options) {
|
|
|
19
20
|
registerTicketTools(server, getClient);
|
|
20
21
|
registerEmailTools(server, getClient);
|
|
21
22
|
registerArticleTools(server, getClient);
|
|
23
|
+
registerLogTools(server, getClient);
|
|
22
24
|
// Register all resources
|
|
23
25
|
registerTicketResources(server, getClient);
|
|
24
26
|
registerArticleResources(server, getClient);
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAC1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAA;AAChE,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAA;AAOlE,MAAM,UAAU,uBAAuB,CAAC,OAA2B;IACjE,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,OAAO;KACjB,CAAC,CAAA;IAEF,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC;QAChC,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,OAAO,EAAE,OAAO,CAAC,OAAO;KACzB,CAAC,CAAA;IAEF,MAAM,SAAS,GAAG,GAAG,EAAE,CAAC,MAAM,CAAA;IAE9B,qBAAqB;IACrB,mBAAmB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;IACtC,kBAAkB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;IACrC,oBAAoB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAClD,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAA;AAChE,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAA;AAOlE,MAAM,UAAU,uBAAuB,CAAC,OAA2B;IACjE,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,OAAO;KACjB,CAAC,CAAA;IAEF,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC;QAChC,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,OAAO,EAAE,OAAO,CAAC,OAAO;KACzB,CAAC,CAAA;IAEF,MAAM,SAAS,GAAG,GAAG,EAAE,CAAC,MAAM,CAAA;IAE9B,qBAAqB;IACrB,mBAAmB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;IACtC,kBAAkB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;IACrC,oBAAoB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;IACvC,gBAAgB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;IAEnC,yBAAyB;IACzB,uBAAuB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;IAC1C,wBAAwB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;IAE3C,OAAO,MAAM,CAAA;AACf,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logs.d.ts","sourceRoot":"","sources":["../../src/tools/logs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AAEnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAEnD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,QAkDlF"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export function registerLogTools(server, getClient) {
|
|
3
|
+
server.tool('query_logs', 'Query raw application log events shipped to this project, newest first. Use this to investigate an error: filter by level (e.g. "error,fatal"), search message text, or pass a fingerprint from list_log_issues to see every occurrence of one error group.', {
|
|
4
|
+
level: z.string().optional()
|
|
5
|
+
.describe('Level or comma-separated levels: debug, info, warn, error, fatal (e.g. "error,fatal")'),
|
|
6
|
+
scope: z.string().optional().describe('Exact logger scope/source, e.g. "checkout" or "api"'),
|
|
7
|
+
search: z.string().optional().describe('Substring match on message or scope'),
|
|
8
|
+
fingerprint: z.string().optional()
|
|
9
|
+
.describe('Fingerprint from list_log_issues — returns every event in that error group'),
|
|
10
|
+
dateFrom: z.string().optional().describe('ISO date lower bound, e.g. "2026-07-16"'),
|
|
11
|
+
dateTo: z.string().optional().describe('ISO date upper bound (inclusive day)'),
|
|
12
|
+
page: z.number().optional().describe('Page number (default: 1)'),
|
|
13
|
+
limit: z.number().optional().describe('Results per page (default: 50, max: 100)'),
|
|
14
|
+
}, async (params) => {
|
|
15
|
+
const client = getClient();
|
|
16
|
+
const result = await client.logs.list(params);
|
|
17
|
+
return {
|
|
18
|
+
content: [{
|
|
19
|
+
type: 'text',
|
|
20
|
+
text: JSON.stringify(result, null, 2),
|
|
21
|
+
}],
|
|
22
|
+
};
|
|
23
|
+
});
|
|
24
|
+
server.tool('list_log_issues', 'List grouped error issues (one per error fingerprint) for this project, most recently seen first. Each issue has a running count, first/last seen, and a status (open/acknowledged/resolved). Start here to answer "did anything break?" — then drill into one group with query_logs and its fingerprint.', {
|
|
25
|
+
status: z.string().optional()
|
|
26
|
+
.describe('Status or comma-separated statuses: open, acknowledged, resolved (e.g. "open")'),
|
|
27
|
+
level: z.string().optional().describe('Level or comma-separated levels, e.g. "error,fatal"'),
|
|
28
|
+
search: z.string().optional().describe('Substring match on the sample message or scope'),
|
|
29
|
+
page: z.number().optional().describe('Page number (default: 1)'),
|
|
30
|
+
limit: z.number().optional().describe('Results per page (default: 25, max: 100)'),
|
|
31
|
+
}, async (params) => {
|
|
32
|
+
const client = getClient();
|
|
33
|
+
const result = await client.logs.issues(params);
|
|
34
|
+
return {
|
|
35
|
+
content: [{
|
|
36
|
+
type: 'text',
|
|
37
|
+
text: JSON.stringify(result, null, 2),
|
|
38
|
+
}],
|
|
39
|
+
};
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=logs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logs.js","sourceRoot":"","sources":["../../src/tools/logs.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,MAAM,UAAU,gBAAgB,CAAC,MAAiB,EAAE,SAA+B;IACjF,MAAM,CAAC,IAAI,CACT,YAAY,EACZ,6PAA6P,EAC7P;QACE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;aACzB,QAAQ,CAAC,uFAAuF,CAAC;QACpG,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qDAAqD,CAAC;QAC5F,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;QAC7E,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;aAC/B,QAAQ,CAAC,4EAA4E,CAAC;QACzF,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;QACnF,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;QAC9E,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;QAChE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;KAClF,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;QAC1B,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAC7C,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;iBACtC,CAAC;SACH,CAAA;IACH,CAAC,CACF,CAAA;IAED,MAAM,CAAC,IAAI,CACT,iBAAiB,EACjB,2SAA2S,EAC3S;QACE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;aAC1B,QAAQ,CAAC,gFAAgF,CAAC;QAC7F,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qDAAqD,CAAC;QAC5F,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gDAAgD,CAAC;QACxF,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;QAChE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;KAClF,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;QAC1B,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QAC/C,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;iBACtC,CAAC;SACH,CAAA;IACH,CAAC,CACF,CAAA;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@helmdesk/mcp",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.1",
|
|
4
4
|
"description": "MCP server for Helmdesk — let AI agents manage tickets, send emails, and search your knowledge base",
|
|
5
|
+
"type": "module",
|
|
5
6
|
"main": "./dist/index.js",
|
|
6
7
|
"types": "./dist/index.d.ts",
|
|
7
8
|
"bin": {
|
|
@@ -21,7 +22,7 @@
|
|
|
21
22
|
"dependencies": {
|
|
22
23
|
"@modelcontextprotocol/sdk": "^1.12.1",
|
|
23
24
|
"zod": "^3.25.23",
|
|
24
|
-
"@helmdesk/sdk": "0.
|
|
25
|
+
"@helmdesk/sdk": "0.6.1"
|
|
25
26
|
},
|
|
26
27
|
"devDependencies": {
|
|
27
28
|
"@types/node": "^20",
|