liara-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.
Files changed (79) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +353 -0
  3. package/dist/api/client.d.ts +49 -0
  4. package/dist/api/client.d.ts.map +1 -0
  5. package/dist/api/client.js +145 -0
  6. package/dist/api/client.js.map +1 -0
  7. package/dist/api/types.d.ts +256 -0
  8. package/dist/api/types.d.ts.map +1 -0
  9. package/dist/api/types.js +25 -0
  10. package/dist/api/types.js.map +1 -0
  11. package/dist/index.d.ts +3 -0
  12. package/dist/index.d.ts.map +1 -0
  13. package/dist/index.js +3102 -0
  14. package/dist/index.js.map +1 -0
  15. package/dist/services/apps.d.ts +39 -0
  16. package/dist/services/apps.d.ts.map +1 -0
  17. package/dist/services/apps.js +83 -0
  18. package/dist/services/apps.js.map +1 -0
  19. package/dist/services/databases.d.ts +74 -0
  20. package/dist/services/databases.d.ts.map +1 -0
  21. package/dist/services/databases.js +120 -0
  22. package/dist/services/databases.js.map +1 -0
  23. package/dist/services/deployment.d.ts +57 -0
  24. package/dist/services/deployment.d.ts.map +1 -0
  25. package/dist/services/deployment.js +70 -0
  26. package/dist/services/deployment.js.map +1 -0
  27. package/dist/services/disks.d.ts +35 -0
  28. package/dist/services/disks.d.ts.map +1 -0
  29. package/dist/services/disks.js +88 -0
  30. package/dist/services/disks.js.map +1 -0
  31. package/dist/services/dns.d.ts +43 -0
  32. package/dist/services/dns.d.ts.map +1 -0
  33. package/dist/services/dns.js +80 -0
  34. package/dist/services/dns.js.map +1 -0
  35. package/dist/services/domains.d.ts +23 -0
  36. package/dist/services/domains.d.ts.map +1 -0
  37. package/dist/services/domains.js +42 -0
  38. package/dist/services/domains.js.map +1 -0
  39. package/dist/services/environment.d.ts +31 -0
  40. package/dist/services/environment.d.ts.map +1 -0
  41. package/dist/services/environment.js +59 -0
  42. package/dist/services/environment.js.map +1 -0
  43. package/dist/services/iaas.d.ts +80 -0
  44. package/dist/services/iaas.d.ts.map +1 -0
  45. package/dist/services/iaas.js +161 -0
  46. package/dist/services/iaas.js.map +1 -0
  47. package/dist/services/mail.d.ts +38 -0
  48. package/dist/services/mail.d.ts.map +1 -0
  49. package/dist/services/mail.js +65 -0
  50. package/dist/services/mail.js.map +1 -0
  51. package/dist/services/network.d.ts +19 -0
  52. package/dist/services/network.d.ts.map +1 -0
  53. package/dist/services/network.js +35 -0
  54. package/dist/services/network.js.map +1 -0
  55. package/dist/services/observability.d.ts +24 -0
  56. package/dist/services/observability.d.ts.map +1 -0
  57. package/dist/services/observability.js +41 -0
  58. package/dist/services/observability.js.map +1 -0
  59. package/dist/services/plans.d.ts +12 -0
  60. package/dist/services/plans.d.ts.map +1 -0
  61. package/dist/services/plans.js +17 -0
  62. package/dist/services/plans.js.map +1 -0
  63. package/dist/services/settings.d.ts +28 -0
  64. package/dist/services/settings.d.ts.map +1 -0
  65. package/dist/services/settings.js +37 -0
  66. package/dist/services/settings.js.map +1 -0
  67. package/dist/services/storage.d.ts +60 -0
  68. package/dist/services/storage.d.ts.map +1 -0
  69. package/dist/services/storage.js +96 -0
  70. package/dist/services/storage.js.map +1 -0
  71. package/dist/services/user.d.ts +32 -0
  72. package/dist/services/user.d.ts.map +1 -0
  73. package/dist/services/user.js +16 -0
  74. package/dist/services/user.js.map +1 -0
  75. package/dist/utils/errors.d.ts +30 -0
  76. package/dist/utils/errors.d.ts.map +1 -0
  77. package/dist/utils/errors.js +63 -0
  78. package/dist/utils/errors.js.map +1 -0
  79. package/package.json +67 -0
@@ -0,0 +1,96 @@
1
+ import { paginationToParams, } from '../api/types.js';
2
+ import { validateRequired } from '../utils/errors.js';
3
+ import { createReadStream } from 'fs';
4
+ import FormData from 'form-data';
5
+ /**
6
+ * List all buckets
7
+ */
8
+ export async function listBuckets(client, pagination) {
9
+ const params = paginationToParams(pagination);
10
+ return await client.get('/v1/buckets', params);
11
+ }
12
+ /**
13
+ * Get details of a specific bucket
14
+ */
15
+ export async function getBucket(client, name) {
16
+ validateRequired(name, 'Bucket name');
17
+ return await client.get(`/v1/buckets/${name}`);
18
+ }
19
+ /**
20
+ * Create a new bucket
21
+ */
22
+ export async function createBucket(client, request) {
23
+ validateRequired(request.name, 'Bucket name');
24
+ return await client.post('/v1/buckets', request);
25
+ }
26
+ /**
27
+ * Delete a bucket
28
+ */
29
+ export async function deleteBucket(client, name) {
30
+ validateRequired(name, 'Bucket name');
31
+ await client.delete(`/v1/buckets/${name}`);
32
+ }
33
+ /**
34
+ * Get bucket credentials (S3-compatible access keys)
35
+ */
36
+ export async function getBucketCredentials(client, name) {
37
+ validateRequired(name, 'Bucket name');
38
+ return await client.get(`/v1/buckets/${name}/credentials`);
39
+ }
40
+ /**
41
+ * List objects in a bucket
42
+ */
43
+ export async function listObjects(client, bucketName, prefix, maxKeys) {
44
+ validateRequired(bucketName, 'Bucket name');
45
+ const params = {};
46
+ if (prefix)
47
+ params.prefix = prefix;
48
+ if (maxKeys)
49
+ params.maxKeys = maxKeys;
50
+ return await client.get(`/v1/buckets/${bucketName}/objects`, params);
51
+ }
52
+ /**
53
+ * Upload an object to a bucket
54
+ */
55
+ export async function uploadObject(client, bucketName, objectKey, filePath) {
56
+ validateRequired(bucketName, 'Bucket name');
57
+ validateRequired(objectKey, 'Object key');
58
+ validateRequired(filePath, 'File path');
59
+ // Note: This would typically use multipart/form-data or direct file upload
60
+ // For now, we'll use a generic POST endpoint
61
+ const formData = new FormData();
62
+ const fileName = filePath.split('/').pop() || objectKey;
63
+ formData.append('file', createReadStream(filePath), {
64
+ filename: fileName,
65
+ });
66
+ formData.append('key', objectKey);
67
+ return await client.postFormData(`/v1/buckets/${bucketName}/objects`, formData);
68
+ }
69
+ /**
70
+ * Get download URL for an object
71
+ */
72
+ export async function getObjectDownloadUrl(client, bucketName, objectKey, expiresIn) {
73
+ validateRequired(bucketName, 'Bucket name');
74
+ validateRequired(objectKey, 'Object key');
75
+ const params = {};
76
+ if (expiresIn)
77
+ params.expiresIn = expiresIn;
78
+ return await client.get(`/v1/buckets/${bucketName}/objects/${encodeURIComponent(objectKey)}/download`, params);
79
+ }
80
+ /**
81
+ * Delete an object from a bucket
82
+ */
83
+ export async function deleteObject(client, bucketName, objectKey) {
84
+ validateRequired(bucketName, 'Bucket name');
85
+ validateRequired(objectKey, 'Object key');
86
+ await client.delete(`/v1/buckets/${bucketName}/objects/${encodeURIComponent(objectKey)}`);
87
+ }
88
+ /**
89
+ * Get object metadata
90
+ */
91
+ export async function getObjectMetadata(client, bucketName, objectKey) {
92
+ validateRequired(bucketName, 'Bucket name');
93
+ validateRequired(objectKey, 'Object key');
94
+ return await client.get(`/v1/buckets/${bucketName}/objects/${encodeURIComponent(objectKey)}/metadata`);
95
+ }
96
+ //# sourceMappingURL=storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.js","sourceRoot":"","sources":["../../src/services/storage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import { LiaraClient } from '../api/client.js';
2
+ /**
3
+ * User information response
4
+ */
5
+ export interface UserInfo {
6
+ _id: string;
7
+ email: string;
8
+ username?: string;
9
+ firstName?: string;
10
+ lastName?: string;
11
+ phone?: string;
12
+ plans?: {
13
+ app?: any[];
14
+ database?: any[];
15
+ vm?: any[];
16
+ };
17
+ teams?: Array<{
18
+ _id: string;
19
+ name: string;
20
+ }>;
21
+ createdAt: string;
22
+ }
23
+ /**
24
+ * Get comprehensive user information
25
+ * This endpoint returns user account details, available plans, and database versions
26
+ */
27
+ export declare function getUserInfo(client: LiaraClient): Promise<UserInfo>;
28
+ /**
29
+ * List user accounts (for multi-account support)
30
+ */
31
+ export declare function listAccounts(client: LiaraClient): Promise<UserInfo[]>;
32
+ //# sourceMappingURL=user.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../../src/services/user.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C;;GAEG;AACH,MAAM,WAAW,QAAQ;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE;QACJ,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC;QACZ,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC;QACjB,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC;KACd,CAAC;IACF,KAAK,CAAC,EAAE,KAAK,CAAC;QACV,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,EAAE,MAAM,CAAC;KAChB,CAAC,CAAC;IACH,SAAS,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,CAExE;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAI3E"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Get comprehensive user information
3
+ * This endpoint returns user account details, available plans, and database versions
4
+ */
5
+ export async function getUserInfo(client) {
6
+ return await client.get('/v1/me');
7
+ }
8
+ /**
9
+ * List user accounts (for multi-account support)
10
+ */
11
+ export async function listAccounts(client) {
12
+ // This might be a different endpoint, but for now we return the current user
13
+ const userInfo = await getUserInfo(client);
14
+ return [userInfo];
15
+ }
16
+ //# sourceMappingURL=user.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user.js","sourceRoot":"","sources":["../../src/services/user.ts"],"names":[],"mappings":"AAwBA;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,MAAmB;IACjD,OAAO,MAAM,MAAM,CAAC,GAAG,CAAW,QAAQ,CAAC,CAAC;AAChD,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,MAAmB;IAClD,6EAA6E;IAC7E,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,CAAC;IAC3C,OAAO,CAAC,QAAQ,CAAC,CAAC;AACtB,CAAC"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Custom error class for Liara MCP operations
3
+ */
4
+ export declare class LiaraMcpError extends Error {
5
+ code?: string | undefined;
6
+ details?: any | undefined;
7
+ constructor(message: string, code?: string | undefined, details?: any | undefined);
8
+ }
9
+ /**
10
+ * Format error for MCP response
11
+ */
12
+ export declare function formatErrorForMcp(error: unknown): string;
13
+ /**
14
+ * Validate that a value is not empty
15
+ */
16
+ export declare function validateRequired(value: any, fieldName: string): void;
17
+ /**
18
+ * Validate app name format
19
+ * Must be lowercase alphanumeric with hyphens, 3-32 characters
20
+ */
21
+ export declare function validateAppName(name: string): void;
22
+ /**
23
+ * Validate domain name format
24
+ */
25
+ export declare function validateDomainName(domain: string): void;
26
+ /**
27
+ * Validate environment variable key
28
+ */
29
+ export declare function validateEnvKey(key: string): void;
30
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,qBAAa,aAAc,SAAQ,KAAK;IAGzB,IAAI,CAAC,EAAE,MAAM;IACb,OAAO,CAAC,EAAE,GAAG;gBAFpB,OAAO,EAAE,MAAM,EACR,IAAI,CAAC,EAAE,MAAM,YAAA,EACb,OAAO,CAAC,EAAE,GAAG,YAAA;CAK3B;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAKxD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAIpE;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAYlD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAOvD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAQhD"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Custom error class for Liara MCP operations
3
+ */
4
+ export class LiaraMcpError extends Error {
5
+ code;
6
+ details;
7
+ constructor(message, code, details) {
8
+ super(message);
9
+ this.code = code;
10
+ this.details = details;
11
+ this.name = 'LiaraMcpError';
12
+ }
13
+ }
14
+ /**
15
+ * Format error for MCP response
16
+ */
17
+ export function formatErrorForMcp(error) {
18
+ if (error instanceof Error) {
19
+ return error.message;
20
+ }
21
+ return String(error);
22
+ }
23
+ /**
24
+ * Validate that a value is not empty
25
+ */
26
+ export function validateRequired(value, fieldName) {
27
+ if (value === undefined || value === null || value === '') {
28
+ throw new LiaraMcpError(`${fieldName} is required`);
29
+ }
30
+ }
31
+ /**
32
+ * Validate app name format
33
+ * Must be lowercase alphanumeric with hyphens, 3-32 characters
34
+ */
35
+ export function validateAppName(name) {
36
+ validateRequired(name, 'App name');
37
+ if (!/^[a-z0-9-]{3,32}$/.test(name)) {
38
+ throw new LiaraMcpError('App name must be 3-32 characters long and contain only lowercase letters, numbers, and hyphens');
39
+ }
40
+ if (name.startsWith('-') || name.endsWith('-')) {
41
+ throw new LiaraMcpError('App name cannot start or end with a hyphen');
42
+ }
43
+ }
44
+ /**
45
+ * Validate domain name format
46
+ */
47
+ export function validateDomainName(domain) {
48
+ validateRequired(domain, 'Domain name');
49
+ const domainRegex = /^([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}$/i;
50
+ if (!domainRegex.test(domain)) {
51
+ throw new LiaraMcpError('Invalid domain name format');
52
+ }
53
+ }
54
+ /**
55
+ * Validate environment variable key
56
+ */
57
+ export function validateEnvKey(key) {
58
+ validateRequired(key, 'Environment variable key');
59
+ if (!/^[A-Z_][A-Z0-9_]*$/.test(key)) {
60
+ throw new LiaraMcpError('Environment variable key must start with a letter or underscore and contain only uppercase letters, numbers, and underscores');
61
+ }
62
+ }
63
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,OAAO,aAAc,SAAQ,KAAK;IAGzB;IACA;IAHX,YACI,OAAe,EACR,IAAa,EACb,OAAa;QAEpB,KAAK,CAAC,OAAO,CAAC,CAAC;QAHR,SAAI,GAAJ,IAAI,CAAS;QACb,YAAO,GAAP,OAAO,CAAM;QAGpB,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAChC,CAAC;CACJ;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC5C,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,OAAO,CAAC;IACzB,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACzB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAU,EAAE,SAAiB;IAC1D,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;QACxD,MAAM,IAAI,aAAa,CAAC,GAAG,SAAS,cAAc,CAAC,CAAC;IACxD,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY;IACxC,gBAAgB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAEnC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,aAAa,CACnB,gGAAgG,CACnG,CAAC;IACN,CAAC;IAED,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7C,MAAM,IAAI,aAAa,CAAC,4CAA4C,CAAC,CAAC;IAC1E,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAc;IAC7C,gBAAgB,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAExC,MAAM,WAAW,GAAG,yCAAyC,CAAC;IAC9D,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,aAAa,CAAC,4BAA4B,CAAC,CAAC;IAC1D,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,GAAW;IACtC,gBAAgB,CAAC,GAAG,EAAE,0BAA0B,CAAC,CAAC;IAElD,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,aAAa,CACnB,8HAA8H,CACjI,CAAC;IACN,CAAC;AACL,CAAC"}
package/package.json ADDED
@@ -0,0 +1,67 @@
1
+ {
2
+ "name": "liara-mcp",
3
+ "version": "0.1.0",
4
+ "description": "MCP server for Liara cloud platform - deploy and manage apps, databases, and infrastructure",
5
+ "main": "dist/index.js",
6
+ "type": "module",
7
+ "bin": {
8
+ "liara-mcp": "./dist/index.js"
9
+ },
10
+ "files": [
11
+ "dist",
12
+ "README.md",
13
+ "LICENSE"
14
+ ],
15
+ "scripts": {
16
+ "build": "tsc",
17
+ "start": "node dist/index.js",
18
+ "dev": "tsc --watch",
19
+ "type-check": "tsc --noEmit",
20
+ "clean": "rm -rf dist",
21
+ "prepublishOnly": "npm run build",
22
+ "test": "vitest run",
23
+ "test:watch": "vitest",
24
+ "test:coverage": "vitest run --coverage"
25
+ },
26
+ "keywords": [
27
+ "mcp",
28
+ "model-context-protocol",
29
+ "liara",
30
+ "cloud",
31
+ "deployment",
32
+ "paas",
33
+ "dbaas",
34
+ "iaas",
35
+ "iran",
36
+ "persian",
37
+ "farsi"
38
+ ],
39
+ "author": "",
40
+ "license": "MIT",
41
+ "repository": {
42
+ "type": "git",
43
+ "url": "https://github.com/YOUR_USERNAME/liara-mcp.git"
44
+ },
45
+ "bugs": {
46
+ "url": "https://github.com/YOUR_USERNAME/liara-mcp/issues"
47
+ },
48
+ "homepage": "https://github.com/YOUR_USERNAME/liara-mcp#readme",
49
+ "dependencies": {
50
+ "@modelcontextprotocol/sdk": "^0.5.0",
51
+ "@types/form-data": "^2.2.1",
52
+ "axios": "^1.6.0",
53
+ "form-data": "^4.0.5",
54
+ "ws": "^8.16.0",
55
+ "zod": "^3.22.4"
56
+ },
57
+ "devDependencies": {
58
+ "@types/node": "^20.0.0",
59
+ "@types/ws": "^8.5.10",
60
+ "@vitest/coverage-v8": "^1.0.0",
61
+ "typescript": "^5.3.0",
62
+ "vitest": "^1.0.0"
63
+ },
64
+ "engines": {
65
+ "node": ">=18.0.0"
66
+ }
67
+ }