Skip to main content
Glama
hidenorigoto

Sakura Cloud MCP Server

by hidenorigoto

get_router_list

Retrieve a list of routers from Sakura Cloud infrastructure to manage and monitor network configurations effectively using the MCP server.

Instructions

Get list of routers

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Implementation Reference

  • Handler logic for the 'get_router_list' tool. Validates credentials, fetches router list from Sakura Cloud '/internet' endpoint using fetchFromSakuraCloud helper, and returns JSON-formatted response.
    } else if (request.params.name === 'get_router_list') { try { validateCredentials(); const routerList = await fetchFromSakuraCloud(`/internet`); return { content: [ { type: 'text', text: JSON.stringify(routerList, null, 2) } ] }; } catch (error) { console.error('Error calling tool:', error); throw error; }
  • src/server.ts:932-938 (registration)
    Registration of the 'get_router_list' tool in the ListToolsRequestSchema handler, including its name, description, and empty input schema.
    name: 'get_router_list', description: 'Get list of routers', inputSchema: { type: 'object', properties: { }, }
  • Helper function fetchFromSakuraCloud used by get_router_list to make authenticated HTTPS requests to Sakura Cloud API.
    async function fetchFromSakuraCloud(path: string, isPublicAPI: boolean = false, zone: string = DEFAULT_ZONE, method: string = 'GET', bodyData?: any): Promise<any> { return new Promise((resolve, reject) => { const basePath = isPublicAPI ? '/cloud/api/cloud/1.1' : `/cloud/zone/${zone}/api/cloud/1.1`; const options = { hostname: 'secure.sakura.ad.jp', port: 443, path: `${basePath}${path}`, method: method, headers: { 'Accept': 'application/json', 'Authorization': '', 'Content-Type': 'application/json' } }; // Add authorization for non-public APIs if (!isPublicAPI) { options.headers['Authorization'] = `Basic ${Buffer.from(`${SACLOUD_API_TOKEN}:${SACLOUD_API_SECRET}`).toString('base64')}`; } const req = https.request(options, (res) => { let data = ''; res.on('data', (chunk) => { data += chunk; }); res.on('end', () => { try { if (data) { const parsedData = JSON.parse(data); resolve(parsedData); } else { resolve({}); } } catch (err) { reject(new Error(`Failed to parse response: ${err}`)); } }); }); req.on('error', (error) => { reject(error); }); if (bodyData && (method === 'POST' || method === 'PUT')) { req.write(JSON.stringify(bodyData)); } req.end(); }); }
  • Helper function validateCredentials called by the handler to ensure API credentials are set.
    function validateCredentials(): void { if (!SACLOUD_API_TOKEN || !SACLOUD_API_SECRET) { throw new Error('Missing API credentials. Set SACLOUD_API_TOKEN and SACLOUD_API_SECRET environment variables.'); } }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/hidenorigoto/sacloud-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server