UNPKG

@takashito/linode-mcp-server

Version:

MCP server for Linode API

69 lines 2.82 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.VERSION = void 0; exports.startServer = startServer; const fastmcp_1 = require("fastmcp"); const tools_1 = require("./tools"); exports.VERSION = '0.4.0'; /** * Creates and starts a Linode MCP Server * @param options Server configuration options * @returns Configured and running MCP server instance */ async function startServer(options) { console.error('Starting Linode MCP server...'); try { // Initialize FastMCP server with typed session const server = new fastmcp_1.FastMCP({ name: 'linode-mcp-server', version: exports.VERSION, authenticate: async (request) => { // For HTTP transports: try to extract token from headers // For stdio transport: request is undefined, fall back to CLI token const headerToken = request?.headers?.['authorization']?.split(' ')[1] || request?.headers?.['x-be-api-token']; return { token: headerToken || options.token, }; } }); console.error('Server initialized successfully'); // Register tools with direct client access (only enabled categories) try { console.error(`Registering tool categories: ${options.enabledCategories?.join(', ') || 'all'}`); (0, tools_1.registerAllTools)(server, options.enabledCategories); // Show debugging info console.error(`Successfully registered tools`); } catch (error) { console.error(`Failed to register tools: ${error instanceof Error ? error.message : String(error)}`); throw error; } // Start the server with the specified transport const transport = options.transport || 'stdio'; console.error(`Starting server with transport: ${transport}`); if (transport === 'http') { const port = options.port || 8080; const endpoint = (options.endpoint || '/mcp'); console.error(`Starting HTTP server on ${options.host || '127.0.0.1'}:${port}${endpoint}`); server.start({ transportType: 'httpStream', httpStream: { port, endpoint } }); } else { // Default to stdio console.error('Starting stdio server'); server.start({ transportType: 'stdio' }); } console.error('Server started successfully'); return server; } catch (error) { console.error(`Failed to initialize MCP server: ${error instanceof Error ? error.message : String(error)}`); throw error; } } //# sourceMappingURL=server.js.map