Skip to main content
Glama
hidenorigoto

Sakura Cloud MCP Server

by hidenorigoto

get_appliance_list

Retrieve available appliance configurations from Sakura Cloud infrastructure to manage server resources and deployment options.

Instructions

Get list of appliances

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
zoneNoThe zone to use (e.g., "tk1v", "is1a", "tk1a"). Defaults to "tk1v" if not specified.

Implementation Reference

  • The handler logic for the 'get_appliance_list' tool. Validates credentials, fetches the appliance list from the Sakura Cloud API using the helper function with optional zone parameter, and returns the JSON-formatted result.
    } else if (request.params.name === 'get_appliance_list') { try { validateCredentials(); const zone = request.params.arguments?.zone as string || DEFAULT_ZONE; const applianceList = await fetchFromSakuraCloud(`/appliance`, false, zone); return { content: [ { type: 'text', text: JSON.stringify(applianceList, null, 2) } ] }; } catch (error) { console.error('Error calling tool:', error); throw error; }
  • src/server.ts:804-816 (registration)
    Registration of the 'get_appliance_list' tool in the ListToolsRequestSchema handler, including name, description, and input schema definition.
    { name: 'get_appliance_list', description: 'Get list of appliances', inputSchema: { type: 'object', properties: { zone: { type: 'string', description: 'The zone to use (e.g., "tk1v", "is1a", "tk1a"). Defaults to "tk1v" if not specified.' } }, } },
  • Input schema definition for the 'get_appliance_list' tool, allowing optional 'zone' parameter.
    inputSchema: { type: 'object', properties: { zone: { type: 'string', description: 'The zone to use (e.g., "tk1v", "is1a", "tk1a"). Defaults to "tk1v" if not specified.' } }, }
  • Core helper function fetchFromSakuraCloud used by the tool handler to make authenticated HTTPS requests to the Sakura Cloud API, specifically called with path '/appliance' for this tool.
    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 tool handler to ensure API tokens are set before making requests.
    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