@takashito/linode-mcp-server
Version:
MCP server for Linode API
432 lines • 19.5 kB
JavaScript
"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 client_1 = require("../../client");
const schemas = __importStar(require("./schemas"));
const errorHandler_1 = require("../common/errorHandler");
function registerAccountTools(server, client) {
// Account operations
server.addTool({
name: 'get_account',
description: 'Get your account information',
parameters: schemas.getAccountSchema,
execute: (0, errorHandler_1.withErrorHandling)(async (params, context) => {
const result = await (0, client_1.createClient)(context, server).account.getAccount();
return JSON.stringify(result, null, 2);
})
});
server.addTool({
name: 'update_account',
description: 'Update your account information',
parameters: schemas.updateAccountSchema,
execute: (0, errorHandler_1.withErrorHandling)(async (params, context) => {
const result = await (0, client_1.createClient)(context, server).account.updateAccount(params);
return JSON.stringify(result, null, 2);
})
});
// Agreements operations
server.addTool({
name: 'list_agreements',
description: 'List legal agreements',
parameters: schemas.listAgreementsSchema,
execute: (0, errorHandler_1.withErrorHandling)(async (params, context) => {
const result = await (0, client_1.createClient)(context, server).account.getAgreements();
return JSON.stringify(result, null, 2);
})
});
server.addTool({
name: 'acknowledge_agreements',
description: 'Acknowledge legal agreements',
parameters: schemas.acknowledgeAgreementsSchema,
execute: (0, errorHandler_1.withErrorHandling)(async (params, context) => {
await (0, client_1.createClient)(context, server).account.acknowledgeAgreements(params);
return JSON.stringify({ success: true }, null, 2);
})
});
// Service availability operations
server.addTool({
name: 'list_available_services',
description: 'List available services by region',
parameters: schemas.listServiceAvailabilitySchema,
execute: (0, errorHandler_1.withErrorHandling)(async (params, context) => {
const result = await (0, client_1.createClient)(context, server).account.getServiceAvailability();
return JSON.stringify(result, null, 2);
})
});
server.addTool({
name: 'get_region_service_availability',
description: 'Get service availability for a specific region',
parameters: schemas.getRegionServiceAvailabilitySchema,
execute: (0, errorHandler_1.withErrorHandling)(async (params, context) => {
const result = await (0, client_1.createClient)(context, server).account.getRegionServiceAvailability(params.regionId);
return JSON.stringify(result, null, 2);
})
});
// Account cancellation
server.addTool({
name: 'cancel_account',
description: 'Cancel your account',
parameters: schemas.cancelAccountSchema,
execute: (0, errorHandler_1.withErrorHandling)(async (params, context) => {
await (0, client_1.createClient)(context, server).account.cancelAccount(params);
return JSON.stringify({ success: true }, null, 2);
})
});
// Child account operations
server.addTool({
name: 'list_child_accounts',
description: 'List child accounts',
parameters: schemas.listChildAccountsSchema,
execute: (0, errorHandler_1.withErrorHandling)(async (params, context) => {
const paginationParams = {
page: params.page,
page_size: params.page_size
};
const result = await (0, client_1.createClient)(context, server).account.getChildAccounts(paginationParams);
return JSON.stringify(result, null, 2);
})
});
server.addTool({
name: 'get_child_account',
description: 'Get a child account',
parameters: schemas.getChildAccountSchema,
execute: (0, errorHandler_1.withErrorHandling)(async (params, context) => {
const result = await (0, client_1.createClient)(context, server).account.getChildAccount(params.euuid);
return JSON.stringify(result, null, 2);
})
});
server.addTool({
name: 'create_proxy_token',
description: 'Create a proxy user token for a child account',
parameters: schemas.createProxyTokenSchema,
execute: (0, errorHandler_1.withErrorHandling)(async (params, context) => {
const { euuid, ...data } = params;
const result = await (0, client_1.createClient)(context, server).account.createProxyToken(euuid, data);
return JSON.stringify(result, null, 2);
})
});
// Event operations
server.addTool({
name: 'list_events',
description: 'List account events',
parameters: schemas.listEventsSchema,
execute: (0, errorHandler_1.withErrorHandling)(async (params, context) => {
const paginationParams = {
page: params.page,
page_size: params.page_size
};
const result = await (0, client_1.createClient)(context, server).account.getEvents(paginationParams);
return JSON.stringify(result, null, 2);
})
});
server.addTool({
name: 'get_event',
description: 'Get a specific event',
parameters: schemas.getEventSchema,
execute: (0, errorHandler_1.withErrorHandling)(async (params, context) => {
const result = await (0, client_1.createClient)(context, server).account.getEvent(params.eventId);
return JSON.stringify(result, null, 2);
})
});
server.addTool({
name: 'mark_event_as_read',
description: 'Mark an event as read',
parameters: schemas.markEventAsReadSchema,
execute: (0, errorHandler_1.withErrorHandling)(async (params, context) => {
await (0, client_1.createClient)(context, server).account.markEventAsRead(params.eventId);
return JSON.stringify({ success: true }, null, 2);
})
});
server.addTool({
name: 'mark_event_as_seen',
description: 'Mark an event as seen',
parameters: schemas.markEventAsSeenSchema,
execute: (0, errorHandler_1.withErrorHandling)(async (params, context) => {
await (0, client_1.createClient)(context, server).account.markEventAsSeen(params.eventId);
return JSON.stringify({ success: true }, null, 2);
})
});
// Invoice operations
server.addTool({
name: 'list_invoices',
description: 'List invoices',
parameters: schemas.listInvoicesSchema,
execute: (0, errorHandler_1.withErrorHandling)(async (params, context) => {
const paginationParams = {
page: params.page,
page_size: params.page_size
};
const result = await (0, client_1.createClient)(context, server).account.getInvoices(paginationParams);
return JSON.stringify(result, null, 2);
})
});
server.addTool({
name: 'get_invoice',
description: 'Get a specific invoice',
parameters: schemas.getInvoiceSchema,
execute: (0, errorHandler_1.withErrorHandling)(async (params, context) => {
const result = await (0, client_1.createClient)(context, server).account.getInvoice(params.invoiceId);
return JSON.stringify(result, null, 2);
})
});
server.addTool({
name: 'list_invoice_items',
description: 'List items for a specific invoice',
parameters: schemas.listInvoiceItemsSchema,
execute: (0, errorHandler_1.withErrorHandling)(async (params, context) => {
const { invoiceId, ...paginationParams } = params;
const result = await (0, client_1.createClient)(context, server).account.getInvoiceItems(invoiceId, paginationParams);
return JSON.stringify(result, null, 2);
})
});
// Login operations
server.addTool({
name: 'list_account_logins',
description: 'List account logins',
parameters: schemas.listAccountLoginsSchema,
execute: (0, errorHandler_1.withErrorHandling)(async (params, context) => {
const paginationParams = {
page: params.page,
page_size: params.page_size
};
const result = await (0, client_1.createClient)(context, server).account.getLogins(paginationParams);
return JSON.stringify(result, null, 2);
})
});
server.addTool({
name: 'get_account_login',
description: 'Get a specific account login',
parameters: schemas.getAccountLoginSchema,
execute: (0, errorHandler_1.withErrorHandling)(async (params, context) => {
const result = await (0, client_1.createClient)(context, server).account.getLogin(params.loginId);
return JSON.stringify(result, null, 2);
})
});
// Maintenance operations
server.addTool({
name: 'list_maintenances',
description: 'List maintenance events',
parameters: schemas.listMaintenancesSchema,
execute: (0, errorHandler_1.withErrorHandling)(async (params, context) => {
const paginationParams = {
page: params.page,
page_size: params.page_size
};
const result = await (0, client_1.createClient)(context, server).account.getMaintenances(paginationParams);
return JSON.stringify(result, null, 2);
})
});
// Notification operations
server.addTool({
name: 'list_notifications',
description: 'List notifications',
parameters: schemas.listNotificationsSchema,
execute: (0, errorHandler_1.withErrorHandling)(async (params, context) => {
const result = await (0, client_1.createClient)(context, server).account.getNotifications();
return JSON.stringify(result, null, 2);
})
});
// OAuth client operations
server.addTool({
name: 'list_oauth_clients',
description: 'List OAuth clients',
parameters: schemas.listOAuthClientsSchema,
execute: (0, errorHandler_1.withErrorHandling)(async (params, context) => {
const paginationParams = {
page: params.page,
page_size: params.page_size
};
const result = await (0, client_1.createClient)(context, server).account.getOAuthClients(paginationParams);
return JSON.stringify(result, null, 2);
})
});
server.addTool({
name: 'create_oauth_client',
description: 'Create an OAuth client',
parameters: schemas.createOAuthClientSchema,
execute: (0, errorHandler_1.withErrorHandling)(async (params, context) => {
const result = await (0, client_1.createClient)(context, server).account.createOAuthClient(params);
return JSON.stringify(result, null, 2);
})
});
server.addTool({
name: 'get_oauth_client',
description: 'Get an OAuth client',
parameters: schemas.getOAuthClientSchema,
execute: (0, errorHandler_1.withErrorHandling)(async (params, context) => {
const result = await (0, client_1.createClient)(context, server).account.getOAuthClient(params.clientId);
return JSON.stringify(result, null, 2);
})
});
server.addTool({
name: 'update_oauth_client',
description: 'Update an OAuth client',
parameters: schemas.updateOAuthClientSchema,
execute: (0, errorHandler_1.withErrorHandling)(async (params, context) => {
const { clientId, ...data } = params;
const result = await (0, client_1.createClient)(context, server).account.updateOAuthClient(clientId, data);
return JSON.stringify(result, null, 2);
})
});
server.addTool({
name: 'delete_oauth_client',
description: 'Delete an OAuth client',
parameters: schemas.deleteOAuthClientSchema,
execute: (0, errorHandler_1.withErrorHandling)(async (params, context) => {
await (0, client_1.createClient)(context, server).account.deleteOAuthClient(params.clientId);
return JSON.stringify({ success: true }, null, 2);
})
});
server.addTool({
name: 'reset_oauth_client_secret',
description: 'Reset an OAuth client secret',
parameters: schemas.resetOAuthClientSecretSchema,
execute: (0, errorHandler_1.withErrorHandling)(async (params, context) => {
const result = await (0, client_1.createClient)(context, server).account.resetOAuthClientSecret(params.clientId);
return JSON.stringify(result, null, 2);
})
});
// Account settings operations
server.addTool({
name: 'get_account_settings',
description: 'Get account settings',
parameters: schemas.getAccountSettingsSchema,
execute: (0, errorHandler_1.withErrorHandling)(async (params, context) => {
const result = await (0, client_1.createClient)(context, server).account.getAccountSettings();
return JSON.stringify(result, null, 2);
})
});
server.addTool({
name: 'update_account_settings',
description: 'Update account settings',
parameters: schemas.updateAccountSettingsSchema,
execute: (0, errorHandler_1.withErrorHandling)(async (params, context) => {
const result = await (0, client_1.createClient)(context, server).account.updateAccountSettings(params);
return JSON.stringify(result, null, 2);
})
});
server.addTool({
name: 'enable_managed_service',
description: 'Enable Linode Managed service',
parameters: schemas.enableManagedServiceSchema,
execute: (0, errorHandler_1.withErrorHandling)(async (params, context) => {
await (0, client_1.createClient)(context, server).account.enableManagedService();
return JSON.stringify({ success: true }, null, 2);
})
});
// Network transfer operations
server.addTool({
name: 'get_account_network_transfer',
description: 'Get network transfer information for the entire account',
parameters: schemas.getAccountNetworkTransferSchema,
execute: (0, errorHandler_1.withErrorHandling)(async (params, context) => {
const result = await (0, client_1.createClient)(context, server).account.getNetworkTransfer();
return JSON.stringify(result, null, 2);
})
});
// User operations
server.addTool({
name: 'list_users',
description: 'List users',
parameters: schemas.listUsersSchema,
execute: (0, errorHandler_1.withErrorHandling)(async (params, context) => {
const paginationParams = {
page: params.page,
page_size: params.page_size
};
const result = await (0, client_1.createClient)(context, server).account.getUsers(paginationParams);
return JSON.stringify(result, null, 2);
})
});
server.addTool({
name: 'create_user',
description: 'Create a user',
parameters: schemas.createUserSchema,
execute: (0, errorHandler_1.withErrorHandling)(async (params, context) => {
const result = await (0, client_1.createClient)(context, server).account.createUser(params);
return JSON.stringify(result, null, 2);
})
});
server.addTool({
name: 'get_user',
description: 'Get a user',
parameters: schemas.getUserSchema,
execute: (0, errorHandler_1.withErrorHandling)(async (params, context) => {
const result = await (0, client_1.createClient)(context, server).account.getUser(params.username);
return JSON.stringify(result, null, 2);
})
});
server.addTool({
name: 'update_user',
description: 'Update a user',
parameters: schemas.updateUserSchema,
execute: (0, errorHandler_1.withErrorHandling)(async (params, context) => {
const { username, ...data } = params;
const result = await (0, client_1.createClient)(context, server).account.updateUser(username, data);
return JSON.stringify(result, null, 2);
})
});
server.addTool({
name: 'delete_user',
description: 'Delete a user',
parameters: schemas.deleteUserSchema,
execute: (0, errorHandler_1.withErrorHandling)(async (params, context) => {
await (0, client_1.createClient)(context, server).account.deleteUser(params.username);
return JSON.stringify({ success: true }, null, 2);
})
});
server.addTool({
name: 'get_user_grants',
description: 'Get a user\'s grants',
parameters: schemas.getUserGrantsSchema,
execute: (0, errorHandler_1.withErrorHandling)(async (params, context) => {
const result = await (0, client_1.createClient)(context, server).account.getUserGrants(params.username);
return JSON.stringify(result, null, 2);
})
});
server.addTool({
name: 'update_user_grants',
description: 'Update a user\'s grants',
parameters: schemas.updateUserGrantsSchema,
execute: (0, errorHandler_1.withErrorHandling)(async (params, context) => {
const { username, ...data } = params;
const updateData = data; // Type assertion to resolve the type mismatch
const result = await (0, client_1.createClient)(context, server).account.updateUserGrants(username, updateData);
return JSON.stringify(result, null, 2);
})
});
}
//# sourceMappingURL=tools.js.map