Skip to main content
Glama
hidenorigoto

Sakura Cloud MCP Server

by hidenorigoto

get_sshkey_list

Retrieve a list of SSH keys to manage access and security for Sakura Cloud infrastructure, enabling efficient administration of servers, disks, and networks.

Instructions

Get list of SSH keys

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Implementation Reference

  • The handler function that executes the 'get_sshkey_list' tool. It calls validateCredentials, fetches the SSH key list from the Sakura Cloud API using fetchFromSakuraCloud('/sshkey'), formats it as JSON, and returns it as text content.
    } else if (request.params.name === 'get_sshkey_list') { try { validateCredentials(); const sshkeyList = await fetchFromSakuraCloud(`/sshkey`); return { content: [ { type: 'text', text: JSON.stringify(sshkeyList, null, 2) } ] }; } catch (error) { console.error('Error calling tool:', error); throw error; }
  • Registration of the 'get_sshkey_list' tool in the ListToolsRequestSchema handler, including its name, description, and input schema (no required parameters).
    name: 'get_sshkey_list', description: 'Get list of SSH keys', inputSchema: { type: 'object', properties: { }, } },
  • Input schema definition for the 'get_sshkey_list' tool, which accepts an empty object (no parameters required).
    inputSchema: { type: 'object', properties: { }, } },
  • Helper function used by the tool handler to make authenticated HTTPS requests to the Sakura Cloud API. Called with '/sshkey' path to retrieve the SSH key list.
    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 in the tool handler to validate that required Sakura Cloud API credentials are set in environment variables.
    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