@occam-scaly/mcp-server 0.1.2

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.
Files changed (91) hide show
  1. package/README.md +166 -0
  2. package/bin/scaly-mcp.js +6 -0
  3. package/dist/audit.d.ts +25 -0
  4. package/dist/audit.d.ts.map +1 -0
  5. package/dist/audit.js +182 -0
  6. package/dist/audit.js.map +1 -0
  7. package/dist/client.d.ts +16 -0
  8. package/dist/client.d.ts.map +1 -0
  9. package/dist/client.js +142 -0
  10. package/dist/client.js.map +1 -0
  11. package/dist/config.d.ts +24 -0
  12. package/dist/config.d.ts.map +1 -0
  13. package/dist/config.js +76 -0
  14. package/dist/config.js.map +1 -0
  15. package/dist/index.d.ts +3 -0
  16. package/dist/index.d.ts.map +1 -0
  17. package/dist/index.js +279 -0
  18. package/dist/index.js.map +1 -0
  19. package/dist/resources/index.d.ts +17 -0
  20. package/dist/resources/index.d.ts.map +1 -0
  21. package/dist/resources/index.js +505 -0
  22. package/dist/resources/index.js.map +1 -0
  23. package/dist/tools/addons.d.ts +3 -0
  24. package/dist/tools/addons.d.ts.map +1 -0
  25. package/dist/tools/addons.js +128 -0
  26. package/dist/tools/addons.js.map +1 -0
  27. package/dist/tools/apps.d.ts +3 -0
  28. package/dist/tools/apps.d.ts.map +1 -0
  29. package/dist/tools/apps.js +121 -0
  30. package/dist/tools/apps.js.map +1 -0
  31. package/dist/tools/compute.d.ts +3 -0
  32. package/dist/tools/compute.d.ts.map +1 -0
  33. package/dist/tools/compute.js +135 -0
  34. package/dist/tools/compute.js.map +1 -0
  35. package/dist/tools/db.d.ts +3 -0
  36. package/dist/tools/db.d.ts.map +1 -0
  37. package/dist/tools/db.js +597 -0
  38. package/dist/tools/db.js.map +1 -0
  39. package/dist/tools/deployments.d.ts +3 -0
  40. package/dist/tools/deployments.d.ts.map +1 -0
  41. package/dist/tools/deployments.js +354 -0
  42. package/dist/tools/deployments.js.map +1 -0
  43. package/dist/tools/diagnose.d.ts +3 -0
  44. package/dist/tools/diagnose.d.ts.map +1 -0
  45. package/dist/tools/diagnose.js +213 -0
  46. package/dist/tools/diagnose.js.map +1 -0
  47. package/dist/tools/env.d.ts +3 -0
  48. package/dist/tools/env.d.ts.map +1 -0
  49. package/dist/tools/env.js +216 -0
  50. package/dist/tools/env.js.map +1 -0
  51. package/dist/tools/index.d.ts +38 -0
  52. package/dist/tools/index.d.ts.map +1 -0
  53. package/dist/tools/index.js +48 -0
  54. package/dist/tools/index.js.map +1 -0
  55. package/dist/tools/jobs.d.ts +3 -0
  56. package/dist/tools/jobs.d.ts.map +1 -0
  57. package/dist/tools/jobs.js +160 -0
  58. package/dist/tools/jobs.js.map +1 -0
  59. package/dist/tools/logs.d.ts +3 -0
  60. package/dist/tools/logs.d.ts.map +1 -0
  61. package/dist/tools/logs.js +157 -0
  62. package/dist/tools/logs.js.map +1 -0
  63. package/dist/tools/operations.d.ts +3 -0
  64. package/dist/tools/operations.d.ts.map +1 -0
  65. package/dist/tools/operations.js +262 -0
  66. package/dist/tools/operations.js.map +1 -0
  67. package/dist/tools/project.d.ts +3 -0
  68. package/dist/tools/project.d.ts.map +1 -0
  69. package/dist/tools/project.js +341 -0
  70. package/dist/tools/project.js.map +1 -0
  71. package/dist/tools/s3.d.ts +3 -0
  72. package/dist/tools/s3.d.ts.map +1 -0
  73. package/dist/tools/s3.js +256 -0
  74. package/dist/tools/s3.js.map +1 -0
  75. package/dist/tools/status.d.ts +3 -0
  76. package/dist/tools/status.d.ts.map +1 -0
  77. package/dist/tools/status.js +139 -0
  78. package/dist/tools/status.js.map +1 -0
  79. package/dist/tools/write.d.ts +3 -0
  80. package/dist/tools/write.d.ts.map +1 -0
  81. package/dist/tools/write.js +900 -0
  82. package/dist/tools/write.js.map +1 -0
  83. package/dist/utils/jwt.d.ts +3 -0
  84. package/dist/utils/jwt.d.ts.map +1 -0
  85. package/dist/utils/jwt.js +32 -0
  86. package/dist/utils/jwt.js.map +1 -0
  87. package/dist/utils/paths.d.ts +5 -0
  88. package/dist/utils/paths.d.ts.map +1 -0
  89. package/dist/utils/paths.js +26 -0
  90. package/dist/utils/paths.js.map +1 -0
  91. package/package.json +50 -0
@@ -0,0 +1,121 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.listAppsTools = void 0;
4
+ const zod_1 = require("zod");
5
+ const client_js_1 = require("../client.js");
6
+ const index_js_1 = require("./index.js");
7
+ // Schemas
8
+ const ListAppsSchema = zod_1.z.object({
9
+ stack_id: zod_1.z.string().optional().describe('Filter by stack ID'),
10
+ compute_id: zod_1.z
11
+ .string()
12
+ .optional()
13
+ .describe('DEPRECATED: use stack_id (kept for backward compatibility)')
14
+ });
15
+ const GetAppSchema = zod_1.z.object({
16
+ app_id: zod_1.z.string().describe('The app ID to get details for')
17
+ });
18
+ // Tools
19
+ exports.listAppsTools = [
20
+ {
21
+ name: 'scaly_list_apps',
22
+ description: 'List all apps visible to the current API key. Optionally filter by stack.',
23
+ inputSchema: ListAppsSchema,
24
+ handler: async (input) => {
25
+ try {
26
+ // Build query with optional stackId filter
27
+ const stackId = input.stack_id ?? input.compute_id;
28
+ const gql = stackId
29
+ ? `
30
+ query ListApps($stackId: String) {
31
+ listApps(where: { stackId: { equals: $stackId } }) {
32
+ id
33
+ name
34
+ status
35
+ stackId
36
+ accountId
37
+ createdAt
38
+ updatedAt
39
+ stack {
40
+ name
41
+ }
42
+ }
43
+ }
44
+ `
45
+ : `
46
+ query ListApps {
47
+ listApps {
48
+ id
49
+ name
50
+ status
51
+ stackId
52
+ accountId
53
+ createdAt
54
+ updatedAt
55
+ stack {
56
+ name
57
+ }
58
+ }
59
+ }
60
+ `;
61
+ const result = await (0, client_js_1.query)(gql, stackId ? { stackId } : {});
62
+ const apps = result.listApps || [];
63
+ return (0, index_js_1.ok)({ apps, count: apps.length });
64
+ }
65
+ catch (err) {
66
+ return (0, index_js_1.fail)({
67
+ code: 'INTERNAL_ERROR',
68
+ message: err.message,
69
+ retriable: true
70
+ });
71
+ }
72
+ }
73
+ },
74
+ {
75
+ name: 'scaly_get_app',
76
+ description: 'Get detailed information about a specific app.',
77
+ inputSchema: GetAppSchema,
78
+ handler: async (input) => {
79
+ try {
80
+ const gql = `
81
+ query GetApp($where: AppWhereUniqueInput!) {
82
+ getApp(where: $where) {
83
+ id
84
+ name
85
+ status
86
+ stackId
87
+ accountId
88
+ createdAt
89
+ updatedAt
90
+ stack {
91
+ name
92
+ status
93
+ size
94
+ minIdle
95
+ }
96
+ }
97
+ }
98
+ `;
99
+ const result = await (0, client_js_1.query)(gql, {
100
+ where: { id: input.app_id }
101
+ });
102
+ if (!result.getApp) {
103
+ return (0, index_js_1.fail)({
104
+ code: 'RESOURCE_NOT_FOUND',
105
+ message: `App not found: ${input.app_id}`,
106
+ retriable: false
107
+ });
108
+ }
109
+ return (0, index_js_1.ok)({ app: result.getApp });
110
+ }
111
+ catch (err) {
112
+ return (0, index_js_1.fail)({
113
+ code: 'INTERNAL_ERROR',
114
+ message: err.message,
115
+ retriable: true
116
+ });
117
+ }
118
+ }
119
+ }
120
+ ];
121
+ //# sourceMappingURL=apps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apps.js","sourceRoot":"","sources":["../../src/tools/apps.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AACxB,4CAAqC;AACrC,yCAA2D;AAwB3D,UAAU;AACV,MAAM,cAAc,GAAG,OAAC,CAAC,MAAM,CAAC;IAC9B,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;IAC9D,UAAU,EAAE,OAAC;SACV,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,4DAA4D,CAAC;CAC1E,CAAC,CAAC;AAEH,MAAM,YAAY,GAAG,OAAC,CAAC,MAAM,CAAC;IAC5B,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;CAC7D,CAAC,CAAC;AAEH,QAAQ;AACK,QAAA,aAAa,GAAqB;IAC7C;QACE,IAAI,EAAE,iBAAiB;QACvB,WAAW,EACT,2EAA2E;QAC7E,WAAW,EAAE,cAAc;QAC3B,OAAO,EAAE,KAAK,EAAE,KAAqC,EAAE,EAAE;YACvD,IAAI,CAAC;gBACH,2CAA2C;gBAC3C,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,UAAU,CAAC;gBACnD,MAAM,GAAG,GAAG,OAAO;oBACjB,CAAC,CAAC;;;;;;;;;;;;;;;SAeH;oBACC,CAAC,CAAC;;;;;;;;;;;;;;;SAeH,CAAC;gBAEF,MAAM,MAAM,GAAG,MAAM,IAAA,iBAAK,EACxB,GAAG,EACH,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAC3B,CAAC;gBAEF,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC;gBACnC,OAAO,IAAA,aAAE,EAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;YAC1C,CAAC;YAAC,OAAO,GAAQ,EAAE,CAAC;gBAClB,OAAO,IAAA,eAAI,EAAC;oBACV,IAAI,EAAE,gBAAgB;oBACtB,OAAO,EAAE,GAAG,CAAC,OAAO;oBACpB,SAAS,EAAE,IAAI;iBAChB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;KACF;IAED;QACE,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,gDAAgD;QAC7D,WAAW,EAAE,YAAY;QACzB,OAAO,EAAE,KAAK,EAAE,KAAmC,EAAE,EAAE;YACrD,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG;;;;;;;;;;;;;;;;;;SAkBX,CAAC;gBAEF,MAAM,MAAM,GAAG,MAAM,IAAA,iBAAK,EAAiB,GAAG,EAAE;oBAC9C,KAAK,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,MAAM,EAAE;iBAC5B,CAAC,CAAC;gBAEH,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;oBACnB,OAAO,IAAA,eAAI,EAAC;wBACV,IAAI,EAAE,oBAAoB;wBAC1B,OAAO,EAAE,kBAAkB,KAAK,CAAC,MAAM,EAAE;wBACzC,SAAS,EAAE,KAAK;qBACjB,CAAC,CAAC;gBACL,CAAC;gBAED,OAAO,IAAA,aAAE,EAAC,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;YACpC,CAAC;YAAC,OAAO,GAAQ,EAAE,CAAC;gBAClB,OAAO,IAAA,eAAI,EAAC;oBACV,IAAI,EAAE,gBAAgB;oBACtB,OAAO,EAAE,GAAG,CAAC,OAAO;oBACpB,SAAS,EAAE,IAAI;iBAChB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;KACF;CACF,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { type ToolDefinition } from './index.js';
2
+ export declare const listComputeTools: ToolDefinition[];
3
+ //# sourceMappingURL=compute.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compute.d.ts","sourceRoot":"","sources":["../../src/tools/compute.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,cAAc,EAAY,MAAM,YAAY,CAAC;AA+B3D,eAAO,MAAM,gBAAgB,EAAE,cAAc,EA6H5C,CAAC"}
@@ -0,0 +1,135 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.listComputeTools = void 0;
4
+ const zod_1 = require("zod");
5
+ const client_js_1 = require("../client.js");
6
+ const index_js_1 = require("./index.js");
7
+ // Schemas
8
+ const ListStacksSchema = zod_1.z.object({});
9
+ const GetStackSchema = zod_1.z.object({
10
+ stack_id: zod_1.z.string().describe('The stack ID to get details for')
11
+ });
12
+ // Tools
13
+ exports.listComputeTools = [
14
+ {
15
+ name: 'scaly_list_stacks',
16
+ description: 'List all stacks visible to the current API key. Stacks are where your apps run.',
17
+ inputSchema: ListStacksSchema,
18
+ handler: async () => {
19
+ try {
20
+ const gql = `
21
+ query ListStacks {
22
+ listStacks {
23
+ id
24
+ name
25
+ status
26
+ accountId
27
+ size
28
+ minIdle
29
+ createdAt
30
+ updatedAt
31
+ apps {
32
+ id
33
+ name
34
+ }
35
+ }
36
+ }
37
+ `;
38
+ const result = await (0, client_js_1.query)(gql);
39
+ const stacks = result.listStacks || [];
40
+ return (0, index_js_1.ok)({ stacks, count: stacks.length });
41
+ }
42
+ catch (err) {
43
+ return (0, index_js_1.fail)({
44
+ code: 'INTERNAL_ERROR',
45
+ message: err.message,
46
+ retriable: true
47
+ });
48
+ }
49
+ }
50
+ },
51
+ {
52
+ name: 'scaly_get_stack',
53
+ description: 'Get detailed information about a specific stack.',
54
+ inputSchema: GetStackSchema,
55
+ handler: async (input) => {
56
+ try {
57
+ const gql = `
58
+ query GetStack($where: StackWhereUniqueInput!) {
59
+ getStack(where: $where) {
60
+ id
61
+ name
62
+ status
63
+ accountId
64
+ size
65
+ minIdle
66
+ createdAt
67
+ updatedAt
68
+ apps {
69
+ id
70
+ name
71
+ }
72
+ }
73
+ }
74
+ `;
75
+ const result = await (0, client_js_1.query)(gql, {
76
+ where: { id: input.stack_id }
77
+ });
78
+ if (!result.getStack) {
79
+ return (0, index_js_1.fail)({
80
+ code: 'RESOURCE_NOT_FOUND',
81
+ message: `Stack not found: ${input.stack_id}`,
82
+ retriable: false
83
+ });
84
+ }
85
+ return (0, index_js_1.ok)({ stack: result.getStack });
86
+ }
87
+ catch (err) {
88
+ return (0, index_js_1.fail)({
89
+ code: 'INTERNAL_ERROR',
90
+ message: err.message,
91
+ retriable: true
92
+ });
93
+ }
94
+ }
95
+ },
96
+ {
97
+ name: 'scaly_list_compute',
98
+ description: 'DEPRECATED alias for scaly_list_stacks. List all stacks visible to the current API key.',
99
+ inputSchema: ListStacksSchema,
100
+ handler: async () => {
101
+ // Delegate to the canonical tool handler logic by reusing the same query.
102
+ try {
103
+ const gql = `
104
+ query ListStacks {
105
+ listStacks {
106
+ id
107
+ name
108
+ status
109
+ accountId
110
+ size
111
+ minIdle
112
+ createdAt
113
+ updatedAt
114
+ apps {
115
+ id
116
+ name
117
+ }
118
+ }
119
+ }
120
+ `;
121
+ const result = await (0, client_js_1.query)(gql);
122
+ const stacks = result.listStacks || [];
123
+ return (0, index_js_1.ok)({ stacks, count: stacks.length });
124
+ }
125
+ catch (err) {
126
+ return (0, index_js_1.fail)({
127
+ code: 'INTERNAL_ERROR',
128
+ message: err.message,
129
+ retriable: true
130
+ });
131
+ }
132
+ }
133
+ }
134
+ ];
135
+ //# sourceMappingURL=compute.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compute.js","sourceRoot":"","sources":["../../src/tools/compute.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { type ToolDefinition } from './index.js';
2
+ export declare const dbTools: ToolDefinition[];
3
+ //# sourceMappingURL=db.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../src/tools/db.ts"],"names":[],"mappings":"AAaA,OAAO,EAAY,KAAK,cAAc,EAAE,MAAM,YAAY,CAAC;AA4Q3D,eAAO,MAAM,OAAO,EAAE,cAAc,EA4ZnC,CAAC"}