Skip to main content
Glama
hidenorigoto

Sakura Cloud MCP Server

by hidenorigoto

get_public_price

Retrieve public pricing details for Sakura Cloud services, enabling users to access cost information for infrastructure, servers, disks, and networks.

Instructions

Get public pricing information for Sakura Cloud services

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Implementation Reference

  • Executes the get_public_price tool by fetching public pricing data from the Sakura Cloud public API endpoint '/public/price' using the fetchFromSakuraCloud helper (with isPublicAPI=true, no auth). Returns JSON stringified response.
    } else if (request.params.name === 'get_public_price') { try { // No authentication needed for public price API const priceData = await fetchFromSakuraCloud('/public/price', true); return { content: [ { type: 'text', text: JSON.stringify(priceData, null, 2) } ] }; } catch (error) { console.error('Error calling tool:', error); throw error; } } else if (request.params.name === 'get_apprun_list') {
  • Tool schema registration in ListToolsRequestSchema handler: defines name, description, and empty input schema (no parameters required).
    { name: 'get_public_price', description: 'Get public pricing information for Sakura Cloud services', inputSchema: { type: 'object', properties: {} } },
  • Registration of the CallToolRequestSchema handler, which dispatches to the specific get_public_price implementation based on request.params.name.
    server.setRequestHandler(CallToolRequestSchema, async (request) => {
  • Reusable helper function for making authenticated or public HTTPS requests to Sakura Cloud API. The tool uses it with isPublicAPI=true to skip auth for public pricing.
    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(); }); }

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