@atoms-tech/atoms-mcp 0.1.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/bin/atoms-mcp.js +2 -0
- package/dist/auth/login.d.ts +23 -0
- package/dist/auth/login.d.ts.map +1 -0
- package/dist/auth/login.js +246 -0
- package/dist/auth/login.js.map +1 -0
- package/dist/auth/refresh.d.ts +17 -0
- package/dist/auth/refresh.d.ts.map +1 -0
- package/dist/auth/refresh.js +82 -0
- package/dist/auth/refresh.js.map +1 -0
- package/dist/auth/token-store.d.ts +34 -0
- package/dist/auth/token-store.d.ts.map +1 -0
- package/dist/auth/token-store.js +61 -0
- package/dist/auth/token-store.js.map +1 -0
- package/dist/config.d.ts +17 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +17 -0
- package/dist/config.js.map +1 -0
- package/dist/db/client.d.ts +30 -0
- package/dist/db/client.d.ts.map +1 -0
- package/dist/db/client.js +110 -0
- package/dist/db/client.js.map +1 -0
- package/dist/db/graph.d.ts +8 -0
- package/dist/db/graph.d.ts.map +1 -0
- package/dist/db/graph.js +8 -0
- package/dist/db/graph.js.map +1 -0
- package/dist/db/queries.d.ts +77 -0
- package/dist/db/queries.d.ts.map +1 -0
- package/dist/db/queries.js +210 -0
- package/dist/db/queries.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +92 -0
- package/dist/index.js.map +1 -0
- package/dist/middleware/audit.d.ts +26 -0
- package/dist/middleware/audit.d.ts.map +1 -0
- package/dist/middleware/audit.js +44 -0
- package/dist/middleware/audit.js.map +1 -0
- package/dist/middleware/rate-limiter.d.ts +21 -0
- package/dist/middleware/rate-limiter.d.ts.map +1 -0
- package/dist/middleware/rate-limiter.js +43 -0
- package/dist/middleware/rate-limiter.js.map +1 -0
- package/dist/middleware/validator.d.ts +22 -0
- package/dist/middleware/validator.d.ts.map +1 -0
- package/dist/middleware/validator.js +91 -0
- package/dist/middleware/validator.js.map +1 -0
- package/dist/server.d.ts +14 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +511 -0
- package/dist/server.js.map +1 -0
- package/dist/tools/_base.d.ts +58 -0
- package/dist/tools/_base.d.ts.map +1 -0
- package/dist/tools/_base.js +109 -0
- package/dist/tools/_base.js.map +1 -0
- package/dist/tools/create-item.d.ts +43 -0
- package/dist/tools/create-item.d.ts.map +1 -0
- package/dist/tools/create-item.js +118 -0
- package/dist/tools/create-item.js.map +1 -0
- package/dist/tools/delete-item.d.ts +38 -0
- package/dist/tools/delete-item.d.ts.map +1 -0
- package/dist/tools/delete-item.js +69 -0
- package/dist/tools/delete-item.js.map +1 -0
- package/dist/tools/export-mermaid.d.ts +36 -0
- package/dist/tools/export-mermaid.d.ts.map +1 -0
- package/dist/tools/export-mermaid.js +125 -0
- package/dist/tools/export-mermaid.js.map +1 -0
- package/dist/tools/get-coverage.d.ts +34 -0
- package/dist/tools/get-coverage.d.ts.map +1 -0
- package/dist/tools/get-coverage.js +36 -0
- package/dist/tools/get-coverage.js.map +1 -0
- package/dist/tools/get-history.d.ts +34 -0
- package/dist/tools/get-history.d.ts.map +1 -0
- package/dist/tools/get-history.js +53 -0
- package/dist/tools/get-history.js.map +1 -0
- package/dist/tools/get-item.d.ts +62 -0
- package/dist/tools/get-item.d.ts.map +1 -0
- package/dist/tools/get-item.js +93 -0
- package/dist/tools/get-item.js.map +1 -0
- package/dist/tools/link-items.d.ts +41 -0
- package/dist/tools/link-items.d.ts.map +1 -0
- package/dist/tools/link-items.js +150 -0
- package/dist/tools/link-items.js.map +1 -0
- package/dist/tools/list-items.d.ts +37 -0
- package/dist/tools/list-items.d.ts.map +1 -0
- package/dist/tools/list-items.js +36 -0
- package/dist/tools/list-items.js.map +1 -0
- package/dist/tools/list-projects.d.ts +38 -0
- package/dist/tools/list-projects.d.ts.map +1 -0
- package/dist/tools/list-projects.js +28 -0
- package/dist/tools/list-projects.js.map +1 -0
- package/dist/tools/record-test-result.d.ts +41 -0
- package/dist/tools/record-test-result.d.ts.map +1 -0
- package/dist/tools/record-test-result.js +80 -0
- package/dist/tools/record-test-result.js.map +1 -0
- package/dist/tools/search.d.ts +34 -0
- package/dist/tools/search.d.ts.map +1 -0
- package/dist/tools/search.js +28 -0
- package/dist/tools/search.js.map +1 -0
- package/dist/tools/update-item.d.ts +43 -0
- package/dist/tools/update-item.d.ts.map +1 -0
- package/dist/tools/update-item.js +98 -0
- package/dist/tools/update-item.js.map +1 -0
- package/dist/types/responses.d.ts +58 -0
- package/dist/types/responses.d.ts.map +1 -0
- package/dist/types/responses.js +6 -0
- package/dist/types/responses.js.map +1 -0
- package/dist/types/work-item.d.ts +69 -0
- package/dist/types/work-item.d.ts.map +1 -0
- package/dist/types/work-item.js +8 -0
- package/dist/types/work-item.js.map +1 -0
- package/package.json +50 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* In-memory per-user rate limiting for MCP tool calls.
|
|
3
|
+
*
|
|
4
|
+
* Default: 60 requests/minute. Configurable via ATOMS_RATE_LIMIT_RPM env var.
|
|
5
|
+
* Uses sliding window algorithm.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Check if a user has exceeded their rate limit.
|
|
9
|
+
* Returns { allowed: true } or { allowed: false, retryAfterSeconds }.
|
|
10
|
+
*/
|
|
11
|
+
export declare function checkRateLimit(userId: string): {
|
|
12
|
+
allowed: true;
|
|
13
|
+
} | {
|
|
14
|
+
allowed: false;
|
|
15
|
+
retryAfterSeconds: number;
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Clear rate limit state. Useful for testing.
|
|
19
|
+
*/
|
|
20
|
+
export declare function clearRateLimits(): void;
|
|
21
|
+
//# sourceMappingURL=rate-limiter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rate-limiter.d.ts","sourceRoot":"","sources":["../../src/middleware/rate-limiter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAWH;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,MAAM,GACb;IAAE,OAAO,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,iBAAiB,EAAE,MAAM,CAAA;CAAE,CA0BnE;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,IAAI,CAEtC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* In-memory per-user rate limiting for MCP tool calls.
|
|
3
|
+
*
|
|
4
|
+
* Default: 60 requests/minute. Configurable via ATOMS_RATE_LIMIT_RPM env var.
|
|
5
|
+
* Uses sliding window algorithm.
|
|
6
|
+
*/
|
|
7
|
+
const DEFAULT_RPM = 60;
|
|
8
|
+
const WINDOW_MS = 60_000; // 1 minute
|
|
9
|
+
const windows = new Map();
|
|
10
|
+
/**
|
|
11
|
+
* Check if a user has exceeded their rate limit.
|
|
12
|
+
* Returns { allowed: true } or { allowed: false, retryAfterSeconds }.
|
|
13
|
+
*/
|
|
14
|
+
export function checkRateLimit(userId) {
|
|
15
|
+
const rpm = parseInt(process.env.ATOMS_RATE_LIMIT_RPM ?? "", 10) || DEFAULT_RPM;
|
|
16
|
+
const now = Date.now();
|
|
17
|
+
const cutoff = now - WINDOW_MS;
|
|
18
|
+
let window = windows.get(userId);
|
|
19
|
+
if (!window) {
|
|
20
|
+
window = { timestamps: [] };
|
|
21
|
+
windows.set(userId, window);
|
|
22
|
+
}
|
|
23
|
+
// Prune old timestamps
|
|
24
|
+
window.timestamps = window.timestamps.filter((t) => t > cutoff);
|
|
25
|
+
if (window.timestamps.length >= rpm) {
|
|
26
|
+
// Calculate when the oldest request in the window expires
|
|
27
|
+
const oldestInWindow = window.timestamps[0];
|
|
28
|
+
const retryAfterMs = oldestInWindow + WINDOW_MS - now;
|
|
29
|
+
return {
|
|
30
|
+
allowed: false,
|
|
31
|
+
retryAfterSeconds: Math.ceil(retryAfterMs / 1000),
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
window.timestamps.push(now);
|
|
35
|
+
return { allowed: true };
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Clear rate limit state. Useful for testing.
|
|
39
|
+
*/
|
|
40
|
+
export function clearRateLimits() {
|
|
41
|
+
windows.clear();
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=rate-limiter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rate-limiter.js","sourceRoot":"","sources":["../../src/middleware/rate-limiter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,GAAG,EAAE,CAAC;AACvB,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,WAAW;AAMrC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAsB,CAAC;AAE9C;;;GAGG;AACH,MAAM,UAAU,cAAc,CAC5B,MAAc;IAEd,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,WAAW,CAAC;IAChF,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,MAAM,MAAM,GAAG,GAAG,GAAG,SAAS,CAAC;IAE/B,IAAI,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACjC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,CAAC;IAED,uBAAuB;IACvB,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;IAEhE,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;QACpC,0DAA0D;QAC1D,MAAM,cAAc,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAE,CAAC;QAC7C,MAAM,YAAY,GAAG,cAAc,GAAG,SAAS,GAAG,GAAG,CAAC;QACtD,OAAO;YACL,OAAO,EAAE,KAAK;YACd,iBAAiB,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;SAClD,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5B,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC3B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe;IAC7B,OAAO,CAAC,KAAK,EAAE,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Input validation for MCP tool parameters.
|
|
3
|
+
*
|
|
4
|
+
* All LLM-generated inputs are untrusted. Validate everything.
|
|
5
|
+
* Pattern ported from Polarion MCP middleware/input_validator.py.
|
|
6
|
+
*/
|
|
7
|
+
export declare function validateProjectId(id: string): string;
|
|
8
|
+
export declare function validateItemId(id: string): string;
|
|
9
|
+
export declare function validateQuery(query: string): string;
|
|
10
|
+
export declare function validateLimit(limit: number, max: number): number;
|
|
11
|
+
export declare function validateOffset(offset: number): number;
|
|
12
|
+
export declare function validateTitle(title: string): string;
|
|
13
|
+
export declare function validateItemType(type: string): string;
|
|
14
|
+
export declare function validateRelationshipType(type: string): string;
|
|
15
|
+
export declare function sanitizeText(text: string): string;
|
|
16
|
+
/**
|
|
17
|
+
* Custom validation error with a clean message for LLM consumption.
|
|
18
|
+
*/
|
|
19
|
+
export declare class ValidationError extends Error {
|
|
20
|
+
constructor(message: string);
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=validator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../src/middleware/validator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAQpD;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAajD;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAQnD;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAKhE;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAKrD;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAQnD;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAQrD;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAQ7D;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMjD;AAED;;GAEG;AACH,qBAAa,eAAgB,SAAQ,KAAK;gBAC5B,OAAO,EAAE,MAAM;CAI5B"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Input validation for MCP tool parameters.
|
|
3
|
+
*
|
|
4
|
+
* All LLM-generated inputs are untrusted. Validate everything.
|
|
5
|
+
* Pattern ported from Polarion MCP middleware/input_validator.py.
|
|
6
|
+
*/
|
|
7
|
+
const UUID_REGEX = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
8
|
+
const ITEM_ID_REGEX = /^[A-Z]+-\d{5}$/;
|
|
9
|
+
const SAFE_TEXT_REGEX = /^[^<>&;'"\\]+$/;
|
|
10
|
+
export function validateProjectId(id) {
|
|
11
|
+
if (!id || typeof id !== "string") {
|
|
12
|
+
throw new ValidationError("project_id is required");
|
|
13
|
+
}
|
|
14
|
+
if (!UUID_REGEX.test(id)) {
|
|
15
|
+
throw new ValidationError("project_id must be a valid UUID");
|
|
16
|
+
}
|
|
17
|
+
return id;
|
|
18
|
+
}
|
|
19
|
+
export function validateItemId(id) {
|
|
20
|
+
if (!id || typeof id !== "string") {
|
|
21
|
+
throw new ValidationError("item_id is required");
|
|
22
|
+
}
|
|
23
|
+
if (id.length > 20) {
|
|
24
|
+
throw new ValidationError("item_id exceeds maximum length");
|
|
25
|
+
}
|
|
26
|
+
if (!ITEM_ID_REGEX.test(id)) {
|
|
27
|
+
throw new ValidationError("item_id must match format: PREFIX-NNNNN (e.g., REQ-00001, TC-00050)");
|
|
28
|
+
}
|
|
29
|
+
return id;
|
|
30
|
+
}
|
|
31
|
+
export function validateQuery(query) {
|
|
32
|
+
if (!query || typeof query !== "string") {
|
|
33
|
+
throw new ValidationError("query is required");
|
|
34
|
+
}
|
|
35
|
+
if (query.length > 1000) {
|
|
36
|
+
throw new ValidationError("query exceeds maximum length of 1000 characters");
|
|
37
|
+
}
|
|
38
|
+
return query.trim();
|
|
39
|
+
}
|
|
40
|
+
export function validateLimit(limit, max) {
|
|
41
|
+
if (typeof limit !== "number" || !Number.isInteger(limit)) {
|
|
42
|
+
throw new ValidationError("limit must be an integer");
|
|
43
|
+
}
|
|
44
|
+
return Math.max(1, Math.min(limit, max));
|
|
45
|
+
}
|
|
46
|
+
export function validateOffset(offset) {
|
|
47
|
+
if (typeof offset !== "number" || !Number.isInteger(offset)) {
|
|
48
|
+
throw new ValidationError("offset must be an integer");
|
|
49
|
+
}
|
|
50
|
+
return Math.max(0, offset);
|
|
51
|
+
}
|
|
52
|
+
export function validateTitle(title) {
|
|
53
|
+
if (!title || typeof title !== "string") {
|
|
54
|
+
throw new ValidationError("title is required");
|
|
55
|
+
}
|
|
56
|
+
if (title.length > 500) {
|
|
57
|
+
throw new ValidationError("title exceeds maximum length of 500 characters");
|
|
58
|
+
}
|
|
59
|
+
return title.trim();
|
|
60
|
+
}
|
|
61
|
+
export function validateItemType(type) {
|
|
62
|
+
const validTypes = ["requirement", "test-case", "note", "table"];
|
|
63
|
+
if (!validTypes.includes(type)) {
|
|
64
|
+
throw new ValidationError(`type must be one of: ${validTypes.join(", ")}. Got: '${type}'`);
|
|
65
|
+
}
|
|
66
|
+
return type;
|
|
67
|
+
}
|
|
68
|
+
export function validateRelationshipType(type) {
|
|
69
|
+
const validTypes = ["parent", "child", "related", "verifies", "verified_by"];
|
|
70
|
+
if (!validTypes.includes(type)) {
|
|
71
|
+
throw new ValidationError(`relationship type must be one of: ${validTypes.join(", ")}. Got: '${type}'`);
|
|
72
|
+
}
|
|
73
|
+
return type;
|
|
74
|
+
}
|
|
75
|
+
export function sanitizeText(text) {
|
|
76
|
+
// Strip potential XSS/injection characters from free-text fields
|
|
77
|
+
return text
|
|
78
|
+
.replace(/[<>&]/g, "")
|
|
79
|
+
.replace(/\\/g, "")
|
|
80
|
+
.trim();
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Custom validation error with a clean message for LLM consumption.
|
|
84
|
+
*/
|
|
85
|
+
export class ValidationError extends Error {
|
|
86
|
+
constructor(message) {
|
|
87
|
+
super(message);
|
|
88
|
+
this.name = "ValidationError";
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=validator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validator.js","sourceRoot":"","sources":["../../src/middleware/validator.ts"],"names":[],"mappings":"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"}
|
package/dist/server.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ATOMS MCP Server — Tool registration and initialization.
|
|
3
|
+
*
|
|
4
|
+
* Registers all 10 tools with the MCP SDK using server.registerTool().
|
|
5
|
+
* Tools are implemented in separate files under src/tools/.
|
|
6
|
+
*
|
|
7
|
+
* Naming: atoms_{action}_{resource} (snake_case with service prefix)
|
|
8
|
+
* Server name: atoms-mcp-server (follows {service}-mcp-server convention)
|
|
9
|
+
*/
|
|
10
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
11
|
+
export declare const server: McpServer;
|
|
12
|
+
/** Expose session ID for change_history writes */
|
|
13
|
+
export declare function getMcpSessionId(): string;
|
|
14
|
+
//# sourceMappingURL=server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAQpE,eAAO,MAAM,MAAM,WAGjB,CAAC;AA6EH,kDAAkD;AAClD,wBAAgB,eAAe,IAAI,MAAM,CAExC"}
|