Skip to main content
Glama
hidenorigoto

Sakura Cloud MCP Server

by hidenorigoto

get_product_info

Retrieve detailed information about Sakura Cloud product offerings such as servers, disks, internet, or licenses using the MCP server interface for effective infrastructure management.

Instructions

Get detailed information about specific product offerings

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
productTypeYesThe type of product to retrieve (server, disk, internet, license)

Implementation Reference

  • The execution handler for the 'get_product_info' tool within the CallToolRequestSchema. It validates the productType parameter, fetches data from the Sakura Cloud API endpoint `/product/${productType}`, and returns the JSON response.
    } else if (request.params.name === 'get_product_info') { try { validateCredentials(); const productType = request.params.arguments?.productType as string; if (!productType) { throw new Error('Product type is required'); } // Validate product type if (!['server', 'disk', 'internet', 'license'].includes(productType)) { throw new Error('Invalid product type. Must be one of: server, disk, internet, license'); } const productInfo = await fetchFromSakuraCloud(`/product/${productType}`); return { content: [ { type: 'text', text: JSON.stringify(productInfo, null, 2) } ] }; } catch (error) { console.error('Error calling tool:', error); throw error; }
  • Registration of the 'get_product_info' tool in the ListToolsRequestSchema response, defining its name, description, and input schema.
    name: 'get_product_info', description: 'Get detailed information about specific product offerings', inputSchema: { type: 'object', properties: { productType: { type: 'string', description: 'The type of product to retrieve (server, disk, internet, license)', enum: ['server', 'disk', 'internet', 'license'] } }, required: ['productType'] } },
  • Helper function fetchFromSakuraCloud used by the tool handler to make authenticated HTTPS requests to the 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(); }); }

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