Skip to main content
Glama
hidenorigoto

Sakura Cloud MCP Server

by hidenorigoto

get_region_list

Retrieve a list of available regions for managing Sakura Cloud infrastructure, enabling AI assistants to efficiently interact with server resources.

Instructions

Get list of regions

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Implementation Reference

  • The handler logic for the 'get_region_list' tool within the CallToolRequestSchema request handler. It validates credentials, fetches the region list from the Sakura Cloud API using the helper function fetchFromSakuraCloud('/region'), and returns the data as a JSON-formatted text content block.
    } else if (request.params.name === 'get_region_list') { try { validateCredentials(); const regionList = await fetchFromSakuraCloud(`/region`); return { content: [ { type: 'text', text: JSON.stringify(regionList, null, 2) } ] }; } catch (error) { console.error('Error calling tool:', error); throw error; }
  • The registration of the 'get_region_list' tool in the ListToolsRequestSchema handler, including its name, description, and input schema (which is an empty object).
    { name: 'get_region_list', description: 'Get list of regions', inputSchema: { type: 'object', properties: { }, } },
  • The input schema for the 'get_region_list' tool, defined as an empty object (no required parameters).
    inputSchema: { type: 'object', properties: { }, }
  • The core helper function used by the get_region_list handler to make authenticated HTTPS requests to the Sakura Cloud API. It constructs the request to secure.sakura.ad.jp, adds Basic Auth for private APIs, parses JSON response.
    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 called by the handler to ensure required environment variables SACLOUD_API_TOKEN and SACLOUD_API_SECRET are set before making API calls.
    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