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
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Implementation Reference
- src/server.ts:1888-1905 (handler)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; }
- src/server.ts:1024-1031 (registration)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: { }, } },
- src/server.ts:1026-1031 (schema)Input schema definition for the 'get_sshkey_list' tool, which accepts an empty object (no parameters required).inputSchema: { type: 'object', properties: { }, } },
- src/server.ts:20-72 (helper)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(); }); }
- src/server.ts:125-129 (helper)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.'); } }