Skip to main content
Glama
hidenorigoto

Sakura Cloud MCP Server

by hidenorigoto

get_bridge_list

Retrieve a list of bridges on Sakura Cloud infrastructure to manage network connectivity and resources efficiently.

Instructions

Get list of bridges

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Implementation Reference

  • The handler logic for the 'get_bridge_list' tool. It validates credentials, fetches the bridge list from the Sakura Cloud API endpoint '/bridge' using the fetchFromSakuraCloud helper, and returns the JSON-stringified result as text content.
    } else if (request.params.name === 'get_bridge_list') { try { validateCredentials(); const bridgeList = await fetchFromSakuraCloud(`/bridge`); return { content: [ { type: 'text', text: JSON.stringify(bridgeList, null, 2) } ] }; } catch (error) { console.error('Error calling tool:', error); throw error; } } else if (request.params.name === 'get_bridge_info') {
  • The schema definition and registration entry for the 'get_bridge_list' tool within the ListToolsRequestSchema handler, specifying name, description, and empty input schema (no parameters required).
    name: 'get_bridge_list', description: 'Get list of bridges', inputSchema: { type: 'object', properties: { }, } },
  • src/server.ts:739-1424 (registration)
    The ListToolsRequestSchema handler registration where 'get_bridge_list' is listed among available tools.
    server.setRequestHandler(ListToolsRequestSchema, async () => { return { tools: [ { name: 'get_server_info', description: 'Get detailed information about a specific server', inputSchema: { type: 'object', properties: { serverId: { type: 'string', description: 'The ID of the server to retrieve' }, zone: { type: 'string', description: 'The zone to use (e.g., "tk1v", "is1a", "tk1a"). Defaults to "tk1v" if not specified.' } }, required: ['serverId'] } }, { name: 'get_server_list', description: 'Get list of servers', inputSchema: { type: 'object', properties: { zone: { type: 'string', description: 'The zone to use (e.g., "tk1v", "is1a", "tk1a"). Defaults to "tk1v" if not specified.' } }, } }, { name: 'get_switch_list', description: 'Get list of switches', inputSchema: { type: 'object', properties: { zone: { type: 'string', description: 'The zone to use (e.g., "tk1v", "is1a", "tk1a"). Defaults to "tk1v" if not specified.' } }, } }, { name: 'get_switch_info', description: 'Get detailed information about a specific switch', inputSchema: { type: 'object', properties: { switchId: { type: 'string', description: 'The ID of the switch to retrieve' }, zone: { type: 'string', description: 'The zone to use (e.g., "tk1v", "is1a", "tk1a"). Defaults to "tk1v" if not specified.' } }, required: ['switchId'] } }, { name: 'get_appliance_list', description: 'Get list of appliances', inputSchema: { type: 'object', properties: { zone: { type: 'string', description: 'The zone to use (e.g., "tk1v", "is1a", "tk1a"). Defaults to "tk1v" if not specified.' } }, } }, { name: 'get_appliance_info', description: 'Get detailed information about a specific appliance', inputSchema: { type: 'object', properties: { applianceId: { type: 'string', description: 'The ID of the appliance to retrieve' } }, required: ['applianceId'] } }, { name: 'get_disk_list', description: 'Get list of disks', inputSchema: { type: 'object', properties: { zone: { type: 'string', description: 'The zone to use (e.g., "tk1v", "is1a", "tk1a"). Defaults to "tk1v" if not specified.' } }, } }, { name: 'get_disk_info', description: 'Get detailed information about a specific disk', inputSchema: { type: 'object', properties: { diskId: { type: 'string', description: 'The ID of the disk to retrieve' }, zone: { type: 'string', description: 'The zone to use (e.g., "tk1v", "is1a", "tk1a"). Defaults to "tk1v" if not specified.' } }, required: ['diskId'] } }, { name: 'get_archive_list', description: 'Get list of archives', inputSchema: { type: 'object', properties: { }, } }, { name: 'get_archive_info', description: 'Get detailed information about a specific archive', inputSchema: { type: 'object', properties: { archiveId: { type: 'string', description: 'The ID of the archive to retrieve' } }, required: ['archiveId'] } }, { name: 'get_cdrom_list', description: 'Get list of ISO images', inputSchema: { type: 'object', properties: { }, } }, { name: 'get_cdrom_info', description: 'Get detailed information about a specific ISO image', inputSchema: { type: 'object', properties: { cdromId: { type: 'string', description: 'The ID of the ISO image to retrieve' } }, required: ['cdromId'] } }, { name: 'get_bridge_list', description: 'Get list of bridges', inputSchema: { type: 'object', properties: { }, } }, { name: 'get_bridge_info', description: 'Get detailed information about a specific bridge', inputSchema: { type: 'object', properties: { bridgeId: { type: 'string', description: 'The ID of the bridge to retrieve' } }, required: ['bridgeId'] } }, { name: 'get_router_list', description: 'Get list of routers', inputSchema: { type: 'object', properties: { }, } }, { name: 'get_router_info', description: 'Get detailed information about a specific router', inputSchema: { type: 'object', properties: { routerId: { type: 'string', description: 'The ID of the router to retrieve' } }, required: ['routerId'] } }, { name: 'get_interface_list', description: 'Get list of network interfaces', inputSchema: { type: 'object', properties: { }, } }, { name: 'get_interface_info', description: 'Get detailed information about a specific network interface', inputSchema: { type: 'object', properties: { interfaceId: { type: 'string', description: 'The ID of the interface to retrieve' } }, required: ['interfaceId'] } }, { name: 'get_icon_list', description: 'Get list of icons', inputSchema: { type: 'object', properties: { }, } }, { name: 'get_icon_info', description: 'Get detailed information about a specific icon', inputSchema: { type: 'object', properties: { iconId: { type: 'string', description: 'The ID of the icon to retrieve' } }, required: ['iconId'] } }, { name: 'get_note_list', description: 'Get list of notes and startup scripts', inputSchema: { type: 'object', properties: { }, } }, { name: 'get_note_info', description: 'Get detailed information about a specific note or startup script', inputSchema: { type: 'object', properties: { noteId: { type: 'string', description: 'The ID of the note to retrieve' } }, required: ['noteId'] } }, { name: 'get_sshkey_list', description: 'Get list of SSH keys', inputSchema: { type: 'object', properties: { }, } }, { name: 'get_sshkey_info', description: 'Get detailed information about a specific SSH key', inputSchema: { type: 'object', properties: { sshkeyId: { type: 'string', description: 'The ID of the SSH key to retrieve' } }, required: ['sshkeyId'] } }, { name: 'get_region_list', description: 'Get list of regions', inputSchema: { type: 'object', properties: { }, } }, { name: 'get_region_info', description: 'Get detailed information about a specific region', inputSchema: { type: 'object', properties: { regionId: { type: 'string', description: 'The ID of the region to retrieve' } }, required: ['regionId'] } }, { name: 'get_zone_list', description: 'Get list of zones', inputSchema: { type: 'object', properties: { }, } }, { name: 'get_zone_info', description: 'Get detailed information about a specific zone', inputSchema: { type: 'object', properties: { zoneId: { type: 'string', description: 'The ID of the zone to retrieve' } }, required: ['zoneId'] } }, { 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'] } }, { name: 'get_commonserviceitem_list', description: 'Get list of common service items (DNS, Simple Monitor, etc.)', inputSchema: { type: 'object', properties: { }, } }, { name: 'get_commonserviceitem_info', description: 'Get detailed information about a specific common service item', inputSchema: { type: 'object', properties: { itemId: { type: 'string', description: 'The ID of the common service item to retrieve' } }, required: ['itemId'] } }, { name: 'get_license_list', description: 'Get list of licenses', inputSchema: { type: 'object', properties: { }, } }, { name: 'get_license_info', description: 'Get detailed information about a specific license', inputSchema: { type: 'object', properties: { licenseId: { type: 'string', description: 'The ID of the license to retrieve' } }, required: ['licenseId'] } }, { name: 'get_bill_info', description: 'Get billing information for a specific month', inputSchema: { type: 'object', properties: { year: { type: 'string', description: 'The year (YYYY) of the billing period' }, month: { type: 'string', description: 'The month (MM) of the billing period' } }, required: ['year', 'month'] } }, { name: 'get_bill_detail', description: 'Get detailed billing information for a specific month', inputSchema: { type: 'object', properties: { year: { type: 'string', description: 'The year (YYYY) of the billing period' }, month: { type: 'string', description: 'The month (MM) of the billing period' } }, required: ['year', 'month'] } }, { name: 'get_coupon_info', description: 'Get information about a specific coupon', inputSchema: { type: 'object', properties: { couponId: { type: 'string', description: 'The ID of the coupon to retrieve' } }, required: ['couponId'] } }, { name: 'get_privatehost_info', description: 'Get detailed information about a specific private host', inputSchema: { type: 'object', properties: { privateHostId: { type: 'string', description: 'The ID of the private host to retrieve' } }, required: ['privateHostId'] } }, { name: 'get_public_price', description: 'Get public pricing information for Sakura Cloud services', inputSchema: { type: 'object', properties: {} } }, { 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.' } } } }, { name: 'get_apprun_info', description: 'Get detailed information about a specific AppRun application', inputSchema: { type: 'object', properties: { appId: { type: 'string', description: 'The ID of the AppRun application to retrieve' }, zone: { type: 'string', description: 'The zone to use (e.g., "tk1v", "is1a", "tk1a"). Defaults to "tk1v" if not specified.' } }, required: ['appId'] } }, { name: 'create_apprun', description: 'Create a new AppRun application', inputSchema: { type: 'object', properties: { name: { type: 'string', description: 'Name of the AppRun application' }, description: { type: 'string', description: 'Description of the AppRun application' }, dockerImage: { type: 'string', description: 'Docker image to use for the AppRun application' }, planId: { type: 'string', description: 'Plan ID for the AppRun application' }, environment: { type: 'array', description: 'Environment variables for the AppRun application', items: { type: 'object', properties: { key: { type: 'string' }, value: { type: 'string' } } } }, zone: { type: 'string', description: 'The zone to use (e.g., "tk1v", "is1a", "tk1a"). Defaults to "tk1v" if not specified.' } }, required: ['name', 'dockerImage', 'planId'] } }, { name: 'delete_apprun', description: 'Delete an AppRun application', inputSchema: { type: 'object', properties: { appId: { type: 'string', description: 'The ID of the AppRun application to delete' }, zone: { type: 'string', description: 'The zone to use (e.g., "tk1v", "is1a", "tk1a"). Defaults to "tk1v" if not specified.' } }, required: ['appId'] } }, { name: 'start_apprun', description: 'Start an AppRun application', inputSchema: { type: 'object', properties: { appId: { type: 'string', description: 'The ID of the AppRun application to start' }, zone: { type: 'string', description: 'The zone to use (e.g., "tk1v", "is1a", "tk1a"). Defaults to "tk1v" if not specified.' } }, required: ['appId'] } }, { name: 'stop_apprun', description: 'Stop an AppRun application', inputSchema: { type: 'object', properties: { appId: { type: 'string', description: 'The ID of the AppRun application to stop' }, zone: { type: 'string', description: 'The zone to use (e.g., "tk1v", "is1a", "tk1a"). Defaults to "tk1v" if not specified.' } }, required: ['appId'] } }, { name: 'update_apprun', description: 'Update an existing AppRun application', inputSchema: { type: 'object', properties: { appId: { type: 'string', description: 'The ID of the AppRun application to update' }, name: { type: 'string', description: 'New name of the AppRun application' }, description: { type: 'string', description: 'New description of the AppRun application' }, dockerImage: { type: 'string', description: 'New Docker image to use for the AppRun application' }, planId: { type: 'string', description: 'New plan ID for the AppRun application' }, environment: { type: 'array', description: 'New environment variables for the AppRun application', items: { type: 'object', properties: { key: { type: 'string' }, value: { type: 'string' } } } }, zone: { type: 'string', description: 'The zone to use (e.g., "tk1v", "is1a", "tk1a"). Defaults to "tk1v" if not specified.' } }, required: ['appId'] } }, { name: 'get_apprun_logs', description: 'Get logs from an AppRun application', inputSchema: { type: 'object', properties: { appId: { type: 'string', description: 'The ID of the AppRun application to get logs from' }, offset: { type: 'number', description: 'Offset to start fetching logs from (default: 0)' }, limit: { type: 'number', description: 'Maximum number of log entries to fetch (default: 100)' }, zone: { type: 'string', description: 'The zone to use (e.g., "tk1v", "is1a", "tk1a"). Defaults to "tk1v" if not specified.' } }, required: ['appId'] } } ] }; });
  • Shared helper function used by get_bridge_list to make authenticated HTTPS requests to Sakura Cloud API, specifically called with '/bridge'.
    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 by get_bridge_list handler to ensure API credentials are set before making requests.
    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