UNPKG

@takashito/linode-mcp-server

Version:

MCP server for Linode API

393 lines 18 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || (function () { var ownKeys = function(o) { ownKeys = Object.getOwnPropertyNames || function (o) { var ar = []; for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; return ar; }; return ownKeys(o); }; return function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); __setModuleDefault(result, mod); return result; }; })(); Object.defineProperty(exports, "__esModule", { value: true }); exports.registerAccountTools = registerAccountTools; const schemas = __importStar(require("./schemas")); const errorHandler_1 = require("../common/errorHandler"); function registerAccountTools(server, client) { // Account operations server.tool('get_account', 'Get your account information', schemas.getAccountSchema.shape, (0, errorHandler_1.withErrorHandling)(async (params, extra) => { const result = await client.account.getAccount(); return { content: [ { type: 'text', text: JSON.stringify(result, null, 2) }, ], }; })); server.tool('update_account', 'Update your account information', schemas.updateAccountSchema.shape, (0, errorHandler_1.withErrorHandling)(async (params, extra) => { const result = await client.account.updateAccount(params); return { content: [ { type: 'text', text: JSON.stringify(result, null, 2) }, ], }; })); // Agreements operations server.tool('list_agreements', 'List legal agreements', schemas.listAgreementsSchema.shape, (0, errorHandler_1.withErrorHandling)(async (params, extra) => { const result = await client.account.getAgreements(); return { content: [ { type: 'text', text: JSON.stringify(result, null, 2) }, ], }; })); server.tool('acknowledge_agreements', 'Acknowledge legal agreements', schemas.acknowledgeAgreementsSchema.shape, (0, errorHandler_1.withErrorHandling)(async (params, extra) => { await client.account.acknowledgeAgreements(params); return { content: [ { type: 'text', text: JSON.stringify({ success: true }, null, 2) }, ], }; })); // Service availability operations server.tool('list_available_services', 'List available services by region', schemas.listServiceAvailabilitySchema.shape, (0, errorHandler_1.withErrorHandling)(async (params, extra) => { const result = await client.account.getServiceAvailability(); return { content: [ { type: 'text', text: JSON.stringify(result, null, 2) }, ], }; })); server.tool('get_region_service_availability', 'Get service availability for a specific region', schemas.getRegionServiceAvailabilitySchema.shape, (0, errorHandler_1.withErrorHandling)(async (params, extra) => { const result = await client.account.getRegionServiceAvailability(params.regionId); return { content: [ { type: 'text', text: JSON.stringify(result, null, 2) }, ], }; })); // Account cancellation server.tool('cancel_account', 'Cancel your account', schemas.cancelAccountSchema.shape, (0, errorHandler_1.withErrorHandling)(async (params, extra) => { await client.account.cancelAccount(params); return { content: [ { type: 'text', text: JSON.stringify({ success: true }, null, 2) }, ], }; })); // Child account operations server.tool('list_child_accounts', 'List child accounts', schemas.listChildAccountsSchema.shape, (0, errorHandler_1.withErrorHandling)(async (params, extra) => { const paginationParams = { page: params.page, page_size: params.page_size }; const result = await client.account.getChildAccounts(paginationParams); return { content: [ { type: 'text', text: JSON.stringify(result, null, 2) }, ], }; })); server.tool('get_child_account', 'Get a child account', schemas.getChildAccountSchema.shape, (0, errorHandler_1.withErrorHandling)(async (params, extra) => { const result = await client.account.getChildAccount(params.euuid); return { content: [ { type: 'text', text: JSON.stringify(result, null, 2) }, ], }; })); server.tool('create_proxy_token', 'Create a proxy user token for a child account', schemas.createProxyTokenSchema.shape, (0, errorHandler_1.withErrorHandling)(async (params, extra) => { const { euuid, ...data } = params; const result = await client.account.createProxyToken(euuid, data); return { content: [ { type: 'text', text: JSON.stringify(result, null, 2) }, ], }; })); // Event operations server.tool('list_events', 'List account events', schemas.listEventsSchema.shape, (0, errorHandler_1.withErrorHandling)(async (params, extra) => { const paginationParams = { page: params.page, page_size: params.page_size }; const result = await client.account.getEvents(paginationParams); return { content: [ { type: 'text', text: JSON.stringify(result, null, 2) }, ], }; })); server.tool('get_event', 'Get a specific event', schemas.getEventSchema.shape, (0, errorHandler_1.withErrorHandling)(async (params, extra) => { const result = await client.account.getEvent(params.eventId); return { content: [ { type: 'text', text: JSON.stringify(result, null, 2) }, ], }; })); server.tool('mark_event_as_read', 'Mark an event as read', schemas.markEventAsReadSchema.shape, (0, errorHandler_1.withErrorHandling)(async (params, extra) => { await client.account.markEventAsRead(params.eventId); return { content: [ { type: 'text', text: JSON.stringify({ success: true }, null, 2) }, ], }; })); server.tool('mark_event_as_seen', 'Mark an event as seen', schemas.markEventAsSeenSchema.shape, (0, errorHandler_1.withErrorHandling)(async (params, extra) => { await client.account.markEventAsSeen(params.eventId); return { content: [ { type: 'text', text: JSON.stringify({ success: true }, null, 2) }, ], }; })); // Invoice operations server.tool('list_invoices', 'List invoices', schemas.listInvoicesSchema.shape, (0, errorHandler_1.withErrorHandling)(async (params, extra) => { const paginationParams = { page: params.page, page_size: params.page_size }; const result = await client.account.getInvoices(paginationParams); return { content: [ { type: 'text', text: JSON.stringify(result, null, 2) }, ], }; })); server.tool('get_invoice', 'Get a specific invoice', schemas.getInvoiceSchema.shape, (0, errorHandler_1.withErrorHandling)(async (params, extra) => { const result = await client.account.getInvoice(params.invoiceId); return { content: [ { type: 'text', text: JSON.stringify(result, null, 2) }, ], }; })); server.tool('list_invoice_items', 'List items for a specific invoice', schemas.listInvoiceItemsSchema.shape, (0, errorHandler_1.withErrorHandling)(async (params, extra) => { const { invoiceId, ...paginationParams } = params; const result = await client.account.getInvoiceItems(invoiceId, paginationParams); return { content: [ { type: 'text', text: JSON.stringify(result, null, 2) }, ], }; })); // Login operations server.tool('list_account_logins', 'List account logins', schemas.listAccountLoginsSchema.shape, (0, errorHandler_1.withErrorHandling)(async (params, extra) => { const paginationParams = { page: params.page, page_size: params.page_size }; const result = await client.account.getLogins(paginationParams); return { content: [ { type: 'text', text: JSON.stringify(result, null, 2) }, ], }; })); server.tool('get_account_login', 'Get a specific account login', schemas.getAccountLoginSchema.shape, (0, errorHandler_1.withErrorHandling)(async (params, extra) => { const result = await client.account.getLogin(params.loginId); return { content: [ { type: 'text', text: JSON.stringify(result, null, 2) }, ], }; })); // Maintenance operations server.tool('list_maintenances', 'List maintenance events', schemas.listMaintenancesSchema.shape, (0, errorHandler_1.withErrorHandling)(async (params, extra) => { const paginationParams = { page: params.page, page_size: params.page_size }; const result = await client.account.getMaintenances(paginationParams); return { content: [ { type: 'text', text: JSON.stringify(result, null, 2) }, ], }; })); // Notification operations server.tool('list_notifications', 'List notifications', schemas.listNotificationsSchema.shape, (0, errorHandler_1.withErrorHandling)(async (params, extra) => { const result = await client.account.getNotifications(); return { content: [ { type: 'text', text: JSON.stringify(result, null, 2) }, ], }; })); // OAuth client operations server.tool('list_oauth_clients', 'List OAuth clients', schemas.listOAuthClientsSchema.shape, (0, errorHandler_1.withErrorHandling)(async (params, extra) => { const paginationParams = { page: params.page, page_size: params.page_size }; const result = await client.account.getOAuthClients(paginationParams); return { content: [ { type: 'text', text: JSON.stringify(result, null, 2) }, ], }; })); server.tool('create_oauth_client', 'Create an OAuth client', schemas.createOAuthClientSchema.shape, (0, errorHandler_1.withErrorHandling)(async (params, extra) => { const result = await client.account.createOAuthClient(params); return { content: [ { type: 'text', text: JSON.stringify(result, null, 2) }, ], }; })); server.tool('get_oauth_client', 'Get an OAuth client', schemas.getOAuthClientSchema.shape, (0, errorHandler_1.withErrorHandling)(async (params, extra) => { const result = await client.account.getOAuthClient(params.clientId); return { content: [ { type: 'text', text: JSON.stringify(result, null, 2) }, ], }; })); server.tool('update_oauth_client', 'Update an OAuth client', schemas.updateOAuthClientSchema.shape, (0, errorHandler_1.withErrorHandling)(async (params, extra) => { const { clientId, ...data } = params; const result = await client.account.updateOAuthClient(clientId, data); return { content: [ { type: 'text', text: JSON.stringify(result, null, 2) }, ], }; })); server.tool('delete_oauth_client', 'Delete an OAuth client', schemas.deleteOAuthClientSchema.shape, (0, errorHandler_1.withErrorHandling)(async (params, extra) => { await client.account.deleteOAuthClient(params.clientId); return { content: [ { type: 'text', text: JSON.stringify({ success: true }, null, 2) }, ], }; })); server.tool('reset_oauth_client_secret', 'Reset an OAuth client secret', schemas.resetOAuthClientSecretSchema.shape, (0, errorHandler_1.withErrorHandling)(async (params, extra) => { const result = await client.account.resetOAuthClientSecret(params.clientId); return { content: [ { type: 'text', text: JSON.stringify(result, null, 2) }, ], }; })); // Account settings operations server.tool('get_account_settings', 'Get account settings', schemas.getAccountSettingsSchema.shape, (0, errorHandler_1.withErrorHandling)(async (params, extra) => { const result = await client.account.getAccountSettings(); return { content: [ { type: 'text', text: JSON.stringify(result, null, 2) }, ], }; })); server.tool('update_account_settings', 'Update account settings', schemas.updateAccountSettingsSchema.shape, (0, errorHandler_1.withErrorHandling)(async (params, extra) => { const result = await client.account.updateAccountSettings(params); return { content: [ { type: 'text', text: JSON.stringify(result, null, 2) }, ], }; })); server.tool('enable_managed_service', 'Enable Linode Managed service', schemas.enableManagedServiceSchema.shape, (0, errorHandler_1.withErrorHandling)(async (params, extra) => { await client.account.enableManagedService(); return { content: [ { type: 'text', text: JSON.stringify({ success: true }, null, 2) }, ], }; })); // Network transfer operations server.tool('get_account_network_transfer', 'Get network transfer information for the entire account', schemas.getAccountNetworkTransferSchema.shape, (0, errorHandler_1.withErrorHandling)(async (params, extra) => { const result = await client.account.getNetworkTransfer(); return { content: [ { type: 'text', text: JSON.stringify(result, null, 2) }, ], }; })); // User operations server.tool('list_users', 'List users', schemas.listUsersSchema.shape, (0, errorHandler_1.withErrorHandling)(async (params, extra) => { const paginationParams = { page: params.page, page_size: params.page_size }; const result = await client.account.getUsers(paginationParams); return { content: [ { type: 'text', text: JSON.stringify(result, null, 2) }, ], }; })); server.tool('create_user', 'Create a user', schemas.createUserSchema.shape, (0, errorHandler_1.withErrorHandling)(async (params, extra) => { const result = await client.account.createUser(params); return { content: [ { type: 'text', text: JSON.stringify(result, null, 2) }, ], }; })); server.tool('get_user', 'Get a user', schemas.getUserSchema.shape, (0, errorHandler_1.withErrorHandling)(async (params, extra) => { const result = await client.account.getUser(params.username); return { content: [ { type: 'text', text: JSON.stringify(result, null, 2) }, ], }; })); server.tool('update_user', 'Update a user', schemas.updateUserSchema.shape, (0, errorHandler_1.withErrorHandling)(async (params, extra) => { const { username, ...data } = params; const result = await client.account.updateUser(username, data); return { content: [ { type: 'text', text: JSON.stringify(result, null, 2) }, ], }; })); server.tool('delete_user', 'Delete a user', schemas.deleteUserSchema.shape, (0, errorHandler_1.withErrorHandling)(async (params, extra) => { await client.account.deleteUser(params.username); return { content: [ { type: 'text', text: JSON.stringify({ success: true }, null, 2) }, ], }; })); server.tool('get_user_grants', 'Get a user\'s grants', schemas.getUserGrantsSchema.shape, (0, errorHandler_1.withErrorHandling)(async (params, extra) => { const result = await client.account.getUserGrants(params.username); return { content: [ { type: 'text', text: JSON.stringify(result, null, 2) }, ], }; })); server.tool('update_user_grants', 'Update a user\'s grants', schemas.updateUserGrantsSchema.shape, (0, errorHandler_1.withErrorHandling)(async (params, extra) => { const { username, ...data } = params; const updateData = data; // Type assertion to resolve the type mismatch const result = await client.account.updateUserGrants(username, updateData); return { content: [ { type: 'text', text: JSON.stringify(result, null, 2) }, ], }; })); } //# sourceMappingURL=tools.js.map