get_apprun_list
Retrieve a list of all AppRun applications from the Sakura Cloud MCP Server, specifying the zone for targeted queries. Use this tool to manage and monitor containerized applications efficiently.
Instructions
Get list of all AppRun applications
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| zone | No | The zone to use (e.g., "tk1v", "is1a", "tk1a"). Defaults to "tk1v" if not specified. |
Implementation Reference
- src/server.ts:2234-2252 (handler)Handler implementation for the 'get_apprun_list' tool within the CallToolRequestSchema request handler. Fetches the list of AppRun applications using the fetchFromAppRunAPI helper.} else if (request.params.name === 'get_apprun_list') { try { validateCredentials(); const zone = request.params.arguments?.zone as string || DEFAULT_ZONE; const appRunList = await fetchFromAppRunAPI('/applications'); return { content: [ { type: 'text', text: JSON.stringify(appRunList, null, 2) } ] }; } catch (error) { console.error('Error calling tool:', error); throw error; }
- src/server.ts:1226-1237 (registration)Registration of the 'get_apprun_list' tool, including its name, description, and input schema, within the ListToolsRequestSchema handler.name: 'get_apprun_list', description: 'Get list of all AppRun applications', inputSchema: { type: 'object', properties: { zone: { type: 'string', description: 'The zone to use (e.g., "tk1v", "is1a", "tk1a"). Defaults to "tk1v" if not specified.' } } } },
- src/server.ts:75-122 (helper)Helper function fetchFromAppRunAPI used by the get_apprun_list handler to make API calls to Sakura Cloud's AppRun API.async function fetchFromAppRunAPI(path: string, method: string = 'GET', bodyData?: any): Promise<any> { return new Promise((resolve, reject) => { validateCredentials(); const options = { hostname: 'secure.sakura.ad.jp', port: 443, path: `/cloud/api/apprun/1.0/apprun/api${path}`, method: method, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json', '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 validateCredentials called by the tool handler to ensure API credentials are available.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.'); } }