@takashito/linode-mcp-server
Version:
MCP server for Linode API
393 lines • 18 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 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