itglue-mcp 1.3.2 → 1.5.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 +68 -26
- package/dist/index.js +1 -1
- package/dist/lib/api-client.d.ts +21 -1
- package/dist/lib/api-client.d.ts.map +1 -1
- package/dist/lib/api-client.js +72 -0
- package/dist/lib/api-client.js.map +1 -1
- package/dist/lib/batch-processor.d.ts +37 -0
- package/dist/lib/batch-processor.d.ts.map +1 -0
- package/dist/lib/batch-processor.js +72 -0
- package/dist/lib/batch-processor.js.map +1 -0
- package/dist/lib/format-utils.d.ts +47 -0
- package/dist/lib/format-utils.d.ts.map +1 -0
- package/dist/lib/format-utils.js +82 -0
- package/dist/lib/format-utils.js.map +1 -0
- package/dist/tools/attachments.d.ts +8 -9
- package/dist/tools/attachments.d.ts.map +1 -1
- package/dist/tools/attachments.js +18 -13
- package/dist/tools/attachments.js.map +1 -1
- package/dist/tools/auxiliary/audit/compliance-check.d.ts +6 -10
- package/dist/tools/auxiliary/audit/compliance-check.d.ts.map +1 -1
- package/dist/tools/auxiliary/audit/compliance-check.js +15 -34
- package/dist/tools/auxiliary/audit/compliance-check.js.map +1 -1
- package/dist/tools/auxiliary/reporting/organization-report.js +12 -13
- package/dist/tools/auxiliary/reporting/organization-report.js.map +1 -1
- package/dist/tools/auxiliary/staleness/staleness-detector.d.ts.map +1 -1
- package/dist/tools/auxiliary/staleness/staleness-detector.js +10 -25
- package/dist/tools/auxiliary/staleness/staleness-detector.js.map +1 -1
- package/dist/tools/auxiliary/validation/data-validator.js +14 -10
- package/dist/tools/auxiliary/validation/data-validator.js.map +1 -1
- package/dist/tools/configuration-interfaces.d.ts +8 -10
- package/dist/tools/configuration-interfaces.d.ts.map +1 -1
- package/dist/tools/configuration-interfaces.js +18 -12
- package/dist/tools/configuration-interfaces.js.map +1 -1
- package/dist/tools/configurations.d.ts +16 -7
- package/dist/tools/configurations.d.ts.map +1 -1
- package/dist/tools/configurations.js +31 -11
- package/dist/tools/configurations.js.map +1 -1
- package/dist/tools/contacts.d.ts +16 -8
- package/dist/tools/contacts.d.ts.map +1 -1
- package/dist/tools/contacts.js +23 -10
- package/dist/tools/contacts.js.map +1 -1
- package/dist/tools/documents.d.ts +16 -7
- package/dist/tools/documents.d.ts.map +1 -1
- package/dist/tools/documents.js +23 -11
- package/dist/tools/documents.js.map +1 -1
- package/dist/tools/flexible-assets.d.ts +16 -5
- package/dist/tools/flexible-assets.d.ts.map +1 -1
- package/dist/tools/flexible-assets.js +38 -20
- package/dist/tools/flexible-assets.js.map +1 -1
- package/dist/tools/locations.d.ts +16 -6
- package/dist/tools/locations.d.ts.map +1 -1
- package/dist/tools/locations.js +23 -10
- package/dist/tools/locations.js.map +1 -1
- package/dist/tools/organizations.d.ts +16 -6
- package/dist/tools/organizations.d.ts.map +1 -1
- package/dist/tools/organizations.js +32 -14
- package/dist/tools/organizations.js.map +1 -1
- package/dist/tools/passwords.d.ts +16 -6
- package/dist/tools/passwords.d.ts.map +1 -1
- package/dist/tools/passwords.js +30 -10
- package/dist/tools/passwords.js.map +1 -1
- package/dist/tools/related-items.d.ts +8 -8
- package/dist/tools/related-items.d.ts.map +1 -1
- package/dist/tools/related-items.js +18 -12
- package/dist/tools/related-items.js.map +1 -1
- package/dist/tools/search.d.ts +9 -1
- package/dist/tools/search.d.ts.map +1 -1
- package/dist/tools/search.js +16 -8
- package/dist/tools/search.js.map +1 -1
- package/package.json +2 -1
- package/scripts/CLAUDE.md +47 -0
- package/scripts/batch_processor.py +213 -0
- package/scripts/publish_document.sh +347 -0
- package/skills/account-review/SKILL.md +49 -0
- package/skills/compliance-audit/SKILL.md +59 -0
- package/skills/incident-response/CLAUDE.md +2 -2
- package/skills/incident-response/SKILL.md +58 -0
- package/skills/report-generator/SKILL.md +60 -0
package/README.md
CHANGED
|
@@ -32,24 +32,33 @@ This package connects [Claude Code](https://docs.anthropic.com/en/docs/claude-co
|
|
|
32
32
|
|
|
33
33
|
### 2. Add to Claude Code
|
|
34
34
|
|
|
35
|
-
|
|
35
|
+
```bash
|
|
36
|
+
claude mcp add -s user \
|
|
37
|
+
-e "ITGLUE_API_KEY=ITG.your-key-here" \
|
|
38
|
+
-e "ITGLUE_REGION=US" \
|
|
39
|
+
-- itglue npx -y itglue-mcp
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
The `-s user` flag makes it available in every Claude Code session globally. Set `ITGLUE_REGION` to `US`, `EU`, or `AU` depending on your ITGlue instance.
|
|
43
|
+
|
|
44
|
+
<details>
|
|
45
|
+
<summary>Manual JSON configuration (click to expand)</summary>
|
|
46
|
+
|
|
47
|
+
If you prefer editing config files directly, add to the `mcpServers` object in `~/.claude.json`:
|
|
36
48
|
|
|
37
49
|
```json
|
|
38
|
-
{
|
|
39
|
-
"
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
"ITGLUE_REGION": "US"
|
|
46
|
-
}
|
|
47
|
-
}
|
|
50
|
+
"itglue": {
|
|
51
|
+
"type": "stdio",
|
|
52
|
+
"command": "npx",
|
|
53
|
+
"args": ["-y", "itglue-mcp"],
|
|
54
|
+
"env": {
|
|
55
|
+
"ITGLUE_API_KEY": "ITG.your-key-here",
|
|
56
|
+
"ITGLUE_REGION": "US"
|
|
48
57
|
}
|
|
49
58
|
}
|
|
50
59
|
```
|
|
51
60
|
|
|
52
|
-
|
|
61
|
+
</details>
|
|
53
62
|
|
|
54
63
|
### 3. Restart Claude Code
|
|
55
64
|
|
|
@@ -142,6 +151,47 @@ All password retrievals are audit logged automatically.
|
|
|
142
151
|
"Network outage at Contoso, pull all firewall info and contacts"
|
|
143
152
|
```
|
|
144
153
|
|
|
154
|
+
## Publishing Reports to ITGlue
|
|
155
|
+
|
|
156
|
+
Skills that generate HTML reports (Account Review, Report Generator, Compliance Audit, Incident Response) can optionally upload them directly to ITGlue as published documents.
|
|
157
|
+
|
|
158
|
+
### How It Works
|
|
159
|
+
|
|
160
|
+
The `scripts/publish_document.sh` script handles the 3-step ITGlue Document API workflow:
|
|
161
|
+
|
|
162
|
+
1. Creates a document container in the organization
|
|
163
|
+
2. Adds the HTML content as a `Document::Text` section
|
|
164
|
+
3. Publishes the document
|
|
165
|
+
|
|
166
|
+
### Usage
|
|
167
|
+
|
|
168
|
+
```bash
|
|
169
|
+
# Create a new document
|
|
170
|
+
scripts/publish_document.sh \
|
|
171
|
+
--org-id 8128883 \
|
|
172
|
+
--name "Account Review — Acme Corp — Feb 2026" \
|
|
173
|
+
--file reports/acme-corp-account-review.html
|
|
174
|
+
|
|
175
|
+
# Update an existing document (replaces content)
|
|
176
|
+
scripts/publish_document.sh \
|
|
177
|
+
--doc-id 22531267 \
|
|
178
|
+
--file reports/acme-corp-account-review.html
|
|
179
|
+
|
|
180
|
+
# Pipe HTML from stdin
|
|
181
|
+
cat report.html | scripts/publish_document.sh --org-id 8128883 --name "My Report"
|
|
182
|
+
|
|
183
|
+
# Get JSON output for automation
|
|
184
|
+
scripts/publish_document.sh --org-id 8128883 --name "Report" --file report.html --json
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
The script requires `ITGLUE_API_KEY` in the environment (same key used by the MCP server). If section creation fails after the document container is created, the script automatically cleans up the orphan.
|
|
188
|
+
|
|
189
|
+
### Using with Skills
|
|
190
|
+
|
|
191
|
+
When running any report-generating skill, Claude will ask if you want to upload to ITGlue after saving the local HTML file. You can also re-run reports and update existing documents by providing the document ID.
|
|
192
|
+
|
|
193
|
+
---
|
|
194
|
+
|
|
145
195
|
## What's Included (19 Tools)
|
|
146
196
|
|
|
147
197
|
### Finding Things
|
|
@@ -193,21 +243,13 @@ All password retrievals are audit logged automatically.
|
|
|
193
243
|
|
|
194
244
|
### On-Premise ITGlue
|
|
195
245
|
|
|
196
|
-
If you run ITGlue on-premise, add your server URL:
|
|
246
|
+
If you run ITGlue on-premise, add your server URL via the `ITGLUE_BASE_URL` env var:
|
|
197
247
|
|
|
198
|
-
```
|
|
199
|
-
|
|
200
|
-
"
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
"args": ["-y", "itglue-mcp"],
|
|
204
|
-
"env": {
|
|
205
|
-
"ITGLUE_API_KEY": "your-on-prem-key",
|
|
206
|
-
"ITGLUE_BASE_URL": "https://your-itglue-server.com/api"
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
}
|
|
210
|
-
}
|
|
248
|
+
```bash
|
|
249
|
+
claude mcp add -s user \
|
|
250
|
+
-e "ITGLUE_API_KEY=your-on-prem-key" \
|
|
251
|
+
-e "ITGLUE_BASE_URL=https://your-itglue-server.com/api" \
|
|
252
|
+
-- itglue npx -y itglue-mcp
|
|
211
253
|
```
|
|
212
254
|
|
|
213
255
|
## Security
|
package/dist/index.js
CHANGED
package/dist/lib/api-client.d.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* ITGlue API Client
|
|
3
3
|
* Integrates rate limiting, caching, retry logic, and error handling
|
|
4
4
|
*/
|
|
5
|
-
import type { JsonApiResponse, JsonApiWriteBody, ApiParams, ITGlueRegion } from '../types/itglue.js';
|
|
5
|
+
import type { JsonApiResponse, JsonApiResource, JsonApiMeta, JsonApiWriteBody, ApiParams, ITGlueRegion } from '../types/itglue.js';
|
|
6
6
|
export interface APIClientConfig {
|
|
7
7
|
apiKey: string;
|
|
8
8
|
region?: ITGlueRegion;
|
|
@@ -57,6 +57,26 @@ export declare class APIClient {
|
|
|
57
57
|
* Execute GET request with retry logic
|
|
58
58
|
*/
|
|
59
59
|
private requestWithRetry;
|
|
60
|
+
/**
|
|
61
|
+
* Paginated GET — transparently fetches multiple pages when limit > 100.
|
|
62
|
+
* Returns a single merged response with combined data array and pagination metadata.
|
|
63
|
+
*
|
|
64
|
+
* @param endpoint - API endpoint path
|
|
65
|
+
* @param params - Query parameters (page[size] will be overridden internally)
|
|
66
|
+
* @param options - Cache TTL, organizationId, skipCache
|
|
67
|
+
* @param totalLimit - Total number of records desired (default: 50)
|
|
68
|
+
* @returns Merged response with all records up to totalLimit, plus pagination info
|
|
69
|
+
*/
|
|
70
|
+
getPaginated<T>(endpoint: string, params?: ApiParams, options?: {
|
|
71
|
+
skipCache?: boolean;
|
|
72
|
+
cacheTTL?: number;
|
|
73
|
+
organizationId?: string;
|
|
74
|
+
}, totalLimit?: number): Promise<{
|
|
75
|
+
data: JsonApiResource<T>[];
|
|
76
|
+
meta?: JsonApiMeta;
|
|
77
|
+
totalReturned: number;
|
|
78
|
+
hasMore: boolean;
|
|
79
|
+
}>;
|
|
60
80
|
/**
|
|
61
81
|
* Get all pages of a paginated endpoint
|
|
62
82
|
* Follows JSON:API links.next pattern
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../../src/lib/api-client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EACV,eAAe,EACf,gBAAgB,EAChB,SAAS,EACT,YAAY,EAEb,MAAM,oBAAoB,CAAC;AAY5B,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAgB;IACtC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAC9B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAC1C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;IACrC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAK;IAChC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAwB;gBAExC,MAAM,EAAE,eAAe;IA6BnC;;OAEG;IACH,OAAO,CAAC,cAAc;IAYtB;;OAEG;IACG,GAAG,CAAC,CAAC,EACT,QAAQ,EAAE,MAAM,EAChB,MAAM,CAAC,EAAE,SAAS,EAClB,OAAO,CAAC,EAAE;QACR,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,GACA,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IA0B9B;;OAEG;IACG,IAAI,CAAC,CAAC,EACV,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,gBAAgB,EACtB,OAAO,CAAC,EAAE;QAAE,cAAc,CAAC,EAAE,MAAM,CAAA;KAAE,GACpC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAW9B;;OAEG;IACG,KAAK,CAAC,CAAC,EACX,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,gBAAgB,EACtB,OAAO,CAAC,EAAE;QAAE,cAAc,CAAC,EAAE,MAAM,CAAA;KAAE,GACpC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAW9B;;OAEG;IACG,MAAM,CACV,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;QAAE,cAAc,CAAC,EAAE,MAAM,CAAA;KAAE,GACpC,OAAO,CAAC,IAAI,CAAC;IAgBhB;;OAEG;YACW,qBAAqB;IAsCnC;;OAEG;YACW,gBAAgB;IAiD9B;;;OAGG;IACG,WAAW,CAAC,CAAC,EACjB,QAAQ,EAAE,MAAM,EAChB,MAAM,CAAC,EAAE,SAAS,EAClB,OAAO,CAAC,EAAE;QACR,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,GACA,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC;IAuChC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAY3B;;OAEG;IACH,OAAO,CAAC,KAAK;IAIb;;OAEG;IACH,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAMxC;;OAEG;IACH,QAAQ;;;;;;;;;;;;;CAMT"}
|
|
1
|
+
{"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../../src/lib/api-client.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/api-client.js
CHANGED
|
@@ -181,6 +181,78 @@ export class APIClient {
|
|
|
181
181
|
throw apiError;
|
|
182
182
|
}
|
|
183
183
|
}
|
|
184
|
+
/**
|
|
185
|
+
* Paginated GET — transparently fetches multiple pages when limit > 100.
|
|
186
|
+
* Returns a single merged response with combined data array and pagination metadata.
|
|
187
|
+
*
|
|
188
|
+
* @param endpoint - API endpoint path
|
|
189
|
+
* @param params - Query parameters (page[size] will be overridden internally)
|
|
190
|
+
* @param options - Cache TTL, organizationId, skipCache
|
|
191
|
+
* @param totalLimit - Total number of records desired (default: 50)
|
|
192
|
+
* @returns Merged response with all records up to totalLimit, plus pagination info
|
|
193
|
+
*/
|
|
194
|
+
async getPaginated(endpoint, params, options, totalLimit = 50) {
|
|
195
|
+
const API_PAGE_MAX = 100;
|
|
196
|
+
const pageSize = Math.min(totalLimit, API_PAGE_MAX);
|
|
197
|
+
const allData = [];
|
|
198
|
+
let hasMore = false;
|
|
199
|
+
let lastMeta;
|
|
200
|
+
let lastNextLink;
|
|
201
|
+
// First page
|
|
202
|
+
const firstParams = { ...params, 'page[size]': pageSize };
|
|
203
|
+
const firstResponse = await this.get(endpoint, firstParams, options);
|
|
204
|
+
const firstData = Array.isArray(firstResponse.data)
|
|
205
|
+
? firstResponse.data
|
|
206
|
+
: [firstResponse.data];
|
|
207
|
+
allData.push(...firstData);
|
|
208
|
+
lastMeta = firstResponse.meta;
|
|
209
|
+
lastNextLink = firstResponse.links?.next;
|
|
210
|
+
// If we got a full page and need more, follow pagination links
|
|
211
|
+
if (totalLimit > API_PAGE_MAX &&
|
|
212
|
+
firstData.length >= pageSize &&
|
|
213
|
+
lastNextLink) {
|
|
214
|
+
const maxPages = Math.ceil(totalLimit / API_PAGE_MAX);
|
|
215
|
+
for (let page = 2; page <= maxPages && lastNextLink; page++) {
|
|
216
|
+
const parsedUrl = new URL(lastNextLink, this.axios.defaults.baseURL);
|
|
217
|
+
const nextEndpoint = parsedUrl.pathname;
|
|
218
|
+
const nextParams = Object.fromEntries(parsedUrl.searchParams);
|
|
219
|
+
const pageResponse = await this.get(nextEndpoint, nextParams, options);
|
|
220
|
+
const pageData = Array.isArray(pageResponse.data)
|
|
221
|
+
? pageResponse.data
|
|
222
|
+
: [pageResponse.data];
|
|
223
|
+
allData.push(...pageData);
|
|
224
|
+
lastMeta = pageResponse.meta;
|
|
225
|
+
lastNextLink = pageResponse.links?.next;
|
|
226
|
+
if (allData.length >= totalLimit || !lastNextLink) {
|
|
227
|
+
break;
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
// Trim to exact limit
|
|
232
|
+
const trimmed = allData.slice(0, totalLimit);
|
|
233
|
+
// Determine if more records exist beyond what we returned
|
|
234
|
+
// 1. We collected more than requested (overshot from full pages)
|
|
235
|
+
// 2. We hit exact limit and the last fetched page had a next link
|
|
236
|
+
hasMore = allData.length > totalLimit || (allData.length === totalLimit && !!lastNextLink);
|
|
237
|
+
// If meta provides total count, use it as the authoritative source
|
|
238
|
+
const totalAvailable = lastMeta?.['total-count'] ?? lastMeta?.total;
|
|
239
|
+
if (typeof totalAvailable === 'number') {
|
|
240
|
+
hasMore = totalAvailable > trimmed.length;
|
|
241
|
+
}
|
|
242
|
+
this.logger.debug('Paginated fetch complete', {
|
|
243
|
+
endpoint,
|
|
244
|
+
requested: totalLimit,
|
|
245
|
+
returned: trimmed.length,
|
|
246
|
+
hasMore,
|
|
247
|
+
pagesRead: Math.ceil(allData.length / API_PAGE_MAX) || 1,
|
|
248
|
+
});
|
|
249
|
+
return {
|
|
250
|
+
data: trimmed,
|
|
251
|
+
meta: lastMeta,
|
|
252
|
+
totalReturned: trimmed.length,
|
|
253
|
+
hasMore,
|
|
254
|
+
};
|
|
255
|
+
}
|
|
184
256
|
/**
|
|
185
257
|
* Get all pages of a paginated endpoint
|
|
186
258
|
* Follows JSON:API links.next pattern
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../src/lib/api-client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../src/lib/api-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TypeScript wrapper for the Python batch processor.
|
|
3
|
+
* Spawns a Python process to handle heavy data analysis operations,
|
|
4
|
+
* keeping large datasets out of the MCP response context.
|
|
5
|
+
*/
|
|
6
|
+
export interface BatchRequest {
|
|
7
|
+
mode: 'aggregate' | 'compliance_scan' | 'staleness_scan' | 'dedup_detect' | 'stats';
|
|
8
|
+
records: any[];
|
|
9
|
+
group_by?: string;
|
|
10
|
+
entity_type?: string;
|
|
11
|
+
rules?: {
|
|
12
|
+
required_fields?: string[];
|
|
13
|
+
staleness_days?: number;
|
|
14
|
+
};
|
|
15
|
+
threshold_days?: number;
|
|
16
|
+
match_field?: string;
|
|
17
|
+
fields?: string[];
|
|
18
|
+
}
|
|
19
|
+
export interface BatchResult {
|
|
20
|
+
error?: string;
|
|
21
|
+
[key: string]: any;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Run the Python batch processor with the given request.
|
|
25
|
+
* Pipes JSON to stdin, reads JSON from stdout.
|
|
26
|
+
*
|
|
27
|
+
* @param request - The batch processing request
|
|
28
|
+
* @param timeoutMs - Timeout in milliseconds (default: 30000)
|
|
29
|
+
* @returns Parsed JSON result from the processor
|
|
30
|
+
*/
|
|
31
|
+
export declare function runBatchProcessor(request: BatchRequest, timeoutMs?: number): Promise<BatchResult>;
|
|
32
|
+
/**
|
|
33
|
+
* Check if the Python batch processor is available.
|
|
34
|
+
* Useful for graceful degradation.
|
|
35
|
+
*/
|
|
36
|
+
export declare function isBatchProcessorAvailable(): Promise<boolean>;
|
|
37
|
+
//# sourceMappingURL=batch-processor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"batch-processor.d.ts","sourceRoot":"","sources":["../../src/lib/batch-processor.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,WAAW,GAAG,iBAAiB,GAAG,gBAAgB,GAAG,cAAc,GAAG,OAAO,CAAC;IACpF,OAAO,EAAE,GAAG,EAAE,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE;QACN,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;QAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,CAAC;IACF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,YAAY,EACrB,SAAS,GAAE,MAAc,GACxB,OAAO,CAAC,WAAW,CAAC,CA6CtB;AAED;;;GAGG;AACH,wBAAsB,yBAAyB,IAAI,OAAO,CAAC,OAAO,CAAC,CAOlE"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TypeScript wrapper for the Python batch processor.
|
|
3
|
+
* Spawns a Python process to handle heavy data analysis operations,
|
|
4
|
+
* keeping large datasets out of the MCP response context.
|
|
5
|
+
*/
|
|
6
|
+
import { spawn } from 'child_process';
|
|
7
|
+
import { join, dirname } from 'path';
|
|
8
|
+
import { fileURLToPath } from 'url';
|
|
9
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
10
|
+
const SCRIPT_PATH = join(__dirname, '..', '..', 'scripts', 'batch_processor.py');
|
|
11
|
+
/**
|
|
12
|
+
* Run the Python batch processor with the given request.
|
|
13
|
+
* Pipes JSON to stdin, reads JSON from stdout.
|
|
14
|
+
*
|
|
15
|
+
* @param request - The batch processing request
|
|
16
|
+
* @param timeoutMs - Timeout in milliseconds (default: 30000)
|
|
17
|
+
* @returns Parsed JSON result from the processor
|
|
18
|
+
*/
|
|
19
|
+
export async function runBatchProcessor(request, timeoutMs = 30000) {
|
|
20
|
+
return new Promise((resolve, reject) => {
|
|
21
|
+
const proc = spawn('python3', [SCRIPT_PATH], {
|
|
22
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
23
|
+
});
|
|
24
|
+
let stdout = '';
|
|
25
|
+
let stderr = '';
|
|
26
|
+
proc.stdout.on('data', (chunk) => {
|
|
27
|
+
stdout += chunk.toString();
|
|
28
|
+
});
|
|
29
|
+
proc.stderr.on('data', (chunk) => {
|
|
30
|
+
stderr += chunk.toString();
|
|
31
|
+
});
|
|
32
|
+
const timer = setTimeout(() => {
|
|
33
|
+
proc.kill('SIGTERM');
|
|
34
|
+
reject(new Error(`Batch processor timed out after ${timeoutMs}ms`));
|
|
35
|
+
}, timeoutMs);
|
|
36
|
+
proc.on('close', (code) => {
|
|
37
|
+
clearTimeout(timer);
|
|
38
|
+
if (code !== 0) {
|
|
39
|
+
resolve({ error: `Process exited with code ${code}: ${stderr}` });
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
try {
|
|
43
|
+
resolve(JSON.parse(stdout));
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
resolve({ error: `Invalid JSON output: ${stdout.slice(0, 200)}` });
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
proc.on('error', (err) => {
|
|
50
|
+
clearTimeout(timer);
|
|
51
|
+
// Python not available - fall back gracefully
|
|
52
|
+
resolve({ error: `Failed to spawn batch processor: ${err.message}` });
|
|
53
|
+
});
|
|
54
|
+
// Send the request
|
|
55
|
+
proc.stdin.write(JSON.stringify(request));
|
|
56
|
+
proc.stdin.end();
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Check if the Python batch processor is available.
|
|
61
|
+
* Useful for graceful degradation.
|
|
62
|
+
*/
|
|
63
|
+
export async function isBatchProcessorAvailable() {
|
|
64
|
+
try {
|
|
65
|
+
const result = await runBatchProcessor({ mode: 'stats', records: [] }, 5000);
|
|
66
|
+
return !result.error;
|
|
67
|
+
}
|
|
68
|
+
catch {
|
|
69
|
+
return false;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=batch-processor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"batch-processor.js","sourceRoot":"","sources":["../../src/lib/batch-processor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared formatting utilities for token-optimized output
|
|
3
|
+
*
|
|
4
|
+
* Provides three output modes to minimize context/token usage:
|
|
5
|
+
* - detailed: Full markdown with headers per record (current default, most tokens)
|
|
6
|
+
* - compact: Markdown table format (~65% fewer tokens than detailed)
|
|
7
|
+
* - count_only: Just the total count (1 line, ~95% fewer tokens)
|
|
8
|
+
*/
|
|
9
|
+
import { z } from 'zod';
|
|
10
|
+
/**
|
|
11
|
+
* Reusable Zod schema fragment for output_mode parameter.
|
|
12
|
+
* Add to any list tool's schema via .extend() or .merge().
|
|
13
|
+
*/
|
|
14
|
+
export declare const OutputModeSchema: z.ZodDefault<z.ZodEnum<["detailed", "compact", "count_only"]>>;
|
|
15
|
+
export type OutputMode = z.infer<typeof OutputModeSchema>;
|
|
16
|
+
/**
|
|
17
|
+
* Format data as a compact markdown table.
|
|
18
|
+
* Dramatically reduces token usage for list views.
|
|
19
|
+
*
|
|
20
|
+
* @param title - Table title/heading
|
|
21
|
+
* @param headers - Column headers (display names)
|
|
22
|
+
* @param rows - Array of row arrays (string values, same order as headers)
|
|
23
|
+
* @param footer - Optional footer text (count, hasMore indicator)
|
|
24
|
+
* @returns Formatted markdown table string
|
|
25
|
+
*/
|
|
26
|
+
export declare function formatCompactTable(title: string, headers: string[], rows: string[][], footer?: string): string;
|
|
27
|
+
/**
|
|
28
|
+
* Format a count-only response.
|
|
29
|
+
* Minimum possible tokens - just the entity type and count.
|
|
30
|
+
*/
|
|
31
|
+
export declare function formatCountOnly(entityType: string, count: number | string, context?: string): string;
|
|
32
|
+
/**
|
|
33
|
+
* Build a lean data object for the MCP response `data` field.
|
|
34
|
+
* Returns only IDs and metadata instead of full record objects.
|
|
35
|
+
* This prevents the data field from duplicating content that's already in the markdown.
|
|
36
|
+
*/
|
|
37
|
+
export declare function buildLeanData(ids: string[], hasMore: boolean, totalAvailable?: number): {
|
|
38
|
+
ids: string[];
|
|
39
|
+
count: number;
|
|
40
|
+
hasMore: boolean;
|
|
41
|
+
totalAvailable?: number;
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* Build a footer string with count and hasMore indicator.
|
|
45
|
+
*/
|
|
46
|
+
export declare function buildFooter(count: number, hasMore: boolean): string;
|
|
47
|
+
//# sourceMappingURL=format-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format-utils.d.ts","sourceRoot":"","sources":["../../src/lib/format-utils.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;GAGG;AACH,eAAO,MAAM,gBAAgB,gEAK1B,CAAC;AAEJ,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EAAE,EACjB,IAAI,EAAE,MAAM,EAAE,EAAE,EAChB,MAAM,CAAC,EAAE,MAAM,GACd,MAAM,CAsBR;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,GAAG,MAAM,EACtB,OAAO,CAAC,EAAE,MAAM,GACf,MAAM,CAMR;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAC3B,GAAG,EAAE,MAAM,EAAE,EACb,OAAO,EAAE,OAAO,EAChB,cAAc,CAAC,EAAE,MAAM,GACtB;IAAE,GAAG,EAAE,MAAM,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAA;CAAE,CAO7E;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,CAMnE"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared formatting utilities for token-optimized output
|
|
3
|
+
*
|
|
4
|
+
* Provides three output modes to minimize context/token usage:
|
|
5
|
+
* - detailed: Full markdown with headers per record (current default, most tokens)
|
|
6
|
+
* - compact: Markdown table format (~65% fewer tokens than detailed)
|
|
7
|
+
* - count_only: Just the total count (1 line, ~95% fewer tokens)
|
|
8
|
+
*/
|
|
9
|
+
import { z } from 'zod';
|
|
10
|
+
/**
|
|
11
|
+
* Reusable Zod schema fragment for output_mode parameter.
|
|
12
|
+
* Add to any list tool's schema via .extend() or .merge().
|
|
13
|
+
*/
|
|
14
|
+
export const OutputModeSchema = z
|
|
15
|
+
.enum(['detailed', 'compact', 'count_only'])
|
|
16
|
+
.default('detailed')
|
|
17
|
+
.describe('Output format: "detailed" (full markdown), "compact" (table, ~65% fewer tokens), "count_only" (just total count, minimal tokens)');
|
|
18
|
+
/**
|
|
19
|
+
* Format data as a compact markdown table.
|
|
20
|
+
* Dramatically reduces token usage for list views.
|
|
21
|
+
*
|
|
22
|
+
* @param title - Table title/heading
|
|
23
|
+
* @param headers - Column headers (display names)
|
|
24
|
+
* @param rows - Array of row arrays (string values, same order as headers)
|
|
25
|
+
* @param footer - Optional footer text (count, hasMore indicator)
|
|
26
|
+
* @returns Formatted markdown table string
|
|
27
|
+
*/
|
|
28
|
+
export function formatCompactTable(title, headers, rows, footer) {
|
|
29
|
+
const lines = [title, ''];
|
|
30
|
+
// Header row
|
|
31
|
+
lines.push('| ' + headers.join(' | ') + ' |');
|
|
32
|
+
// Separator row
|
|
33
|
+
lines.push('| ' + headers.map(() => '---').join(' | ') + ' |');
|
|
34
|
+
// Data rows
|
|
35
|
+
for (const row of rows) {
|
|
36
|
+
// Escape pipe characters in cell values and truncate long values
|
|
37
|
+
const cells = row.map(cell => {
|
|
38
|
+
const safe = (cell || '—').replace(/\|/g, '\\|').replace(/\n/g, ' ');
|
|
39
|
+
return safe.length > 80 ? safe.slice(0, 77) + '...' : safe;
|
|
40
|
+
});
|
|
41
|
+
lines.push('| ' + cells.join(' | ') + ' |');
|
|
42
|
+
}
|
|
43
|
+
if (footer) {
|
|
44
|
+
lines.push('', footer);
|
|
45
|
+
}
|
|
46
|
+
return lines.join('\n');
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Format a count-only response.
|
|
50
|
+
* Minimum possible tokens - just the entity type and count.
|
|
51
|
+
*/
|
|
52
|
+
export function formatCountOnly(entityType, count, context) {
|
|
53
|
+
const parts = [`**${entityType}**: ${count} total`];
|
|
54
|
+
if (context) {
|
|
55
|
+
parts.push(`(${context})`);
|
|
56
|
+
}
|
|
57
|
+
return parts.join(' ');
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Build a lean data object for the MCP response `data` field.
|
|
61
|
+
* Returns only IDs and metadata instead of full record objects.
|
|
62
|
+
* This prevents the data field from duplicating content that's already in the markdown.
|
|
63
|
+
*/
|
|
64
|
+
export function buildLeanData(ids, hasMore, totalAvailable) {
|
|
65
|
+
return {
|
|
66
|
+
ids,
|
|
67
|
+
count: ids.length,
|
|
68
|
+
hasMore,
|
|
69
|
+
...(totalAvailable !== undefined ? { totalAvailable } : {}),
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Build a footer string with count and hasMore indicator.
|
|
74
|
+
*/
|
|
75
|
+
export function buildFooter(count, hasMore) {
|
|
76
|
+
const parts = [`Found ${count} record(s).`];
|
|
77
|
+
if (hasMore) {
|
|
78
|
+
parts.push('*More available — increase `limit` to fetch more.*');
|
|
79
|
+
}
|
|
80
|
+
return parts.join(' ');
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=format-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format-utils.js","sourceRoot":"","sources":["../../src/lib/format-utils.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;GAGG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC;KAC9B,IAAI,CAAC,CAAC,UAAU,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;KAC3C,OAAO,CAAC,UAAU,CAAC;KACnB,QAAQ,CACP,kIAAkI,CACnI,CAAC;AAIJ;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB,CAChC,KAAa,EACb,OAAiB,EACjB,IAAgB,EAChB,MAAe;IAEf,MAAM,KAAK,GAAa,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAEpC,aAAa;IACb,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;IAC9C,gBAAgB;IAChB,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;IAC/D,YAAY;IACZ,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,iEAAiE;QACjE,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YAC3B,MAAM,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YACrE,OAAO,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;QAC7D,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;IAC9C,CAAC;IAED,IAAI,MAAM,EAAE,CAAC;QACX,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IACzB,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAC7B,UAAkB,EAClB,KAAsB,EACtB,OAAgB;IAEhB,MAAM,KAAK,GAAG,CAAC,KAAK,UAAU,OAAO,KAAK,QAAQ,CAAC,CAAC;IACpD,IAAI,OAAO,EAAE,CAAC;QACZ,KAAK,CAAC,IAAI,CAAC,IAAI,OAAO,GAAG,CAAC,CAAC;IAC7B,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAC3B,GAAa,EACb,OAAgB,EAChB,cAAuB;IAEvB,OAAO;QACL,GAAG;QACH,KAAK,EAAE,GAAG,CAAC,MAAM;QACjB,OAAO;QACP,GAAG,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC5D,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,KAAa,EAAE,OAAgB;IACzD,MAAM,KAAK,GAAG,CAAC,SAAS,KAAK,aAAa,CAAC,CAAC;IAC5C,IAAI,OAAO,EAAE,CAAC;QACZ,KAAK,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;IACnE,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC"}
|
|
@@ -8,14 +8,17 @@ export declare const ListAttachmentsArgsSchema: z.ZodObject<{
|
|
|
8
8
|
resource_type: z.ZodEnum<["configurations", "passwords", "flexible_assets", "documents", "contacts", "locations"]>;
|
|
9
9
|
resource_id: z.ZodString;
|
|
10
10
|
limit: z.ZodDefault<z.ZodNumber>;
|
|
11
|
+
output_mode: z.ZodDefault<z.ZodEnum<["detailed", "compact", "count_only"]>>;
|
|
11
12
|
}, "strip", z.ZodTypeAny, {
|
|
12
13
|
limit: number;
|
|
14
|
+
output_mode: "detailed" | "compact" | "count_only";
|
|
13
15
|
resource_id: string;
|
|
14
16
|
resource_type: "passwords" | "configurations" | "contacts" | "locations" | "flexible_assets" | "documents";
|
|
15
17
|
}, {
|
|
16
18
|
resource_id: string;
|
|
17
19
|
resource_type: "passwords" | "configurations" | "contacts" | "locations" | "flexible_assets" | "documents";
|
|
18
20
|
limit?: number | undefined;
|
|
21
|
+
output_mode?: "detailed" | "compact" | "count_only" | undefined;
|
|
19
22
|
}>;
|
|
20
23
|
export type ListAttachmentsArgs = z.infer<typeof ListAttachmentsArgsSchema>;
|
|
21
24
|
/**
|
|
@@ -33,14 +36,10 @@ export declare function listAttachments(client: APIClient, args: ListAttachments
|
|
|
33
36
|
text: string;
|
|
34
37
|
}[];
|
|
35
38
|
data: {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
download_url: any;
|
|
42
|
-
notes: any;
|
|
43
|
-
created_at: any;
|
|
44
|
-
}[];
|
|
39
|
+
ids: string[];
|
|
40
|
+
count: number;
|
|
41
|
+
hasMore: boolean;
|
|
42
|
+
totalAvailable?: number;
|
|
43
|
+
};
|
|
45
44
|
}>;
|
|
46
45
|
//# sourceMappingURL=attachments.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attachments.d.ts","sourceRoot":"","sources":["../../src/tools/attachments.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"attachments.d.ts","sourceRoot":"","sources":["../../src/tools/attachments.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAMtD,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;EAcpC,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAE5E;;GAEG;AACH,wBAAsB,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,mBAAmB;;;;;;;;;;;;;;;;;GAyCjF"}
|