樱花云MCP服务器
用于与Sakura Cloud的API交互的模型上下文协议(MCP)服务器实现。
什么是MCP?
模型上下文协议(MCP)是一种标准化的通信协议,使AI应用程序能够安全地与外部系统和数据源进行交互。它遵循客户端-服务器架构,其中LLM应用程序启动与暴露资源和工具的服务器的连接。
概述
该项目实现了一个MCP服务器,允许AI助手通过标准化的接口与Sakura Cloud基础设施进行交互。它使AI助手能够:
- 访问Sakura Cloud资源,如服务器、磁盘、网络等
- 使用工具列出资源并检索有关特定资源的详细信息
- 查询无需身份验证的公开定价信息
- 管理AppRun容器化应用程序
先决条件
- Node.js(v16或更高版本)
- Sakura Cloud API证书(令牌和机密)
- Claude桌面应用程序,用于与Claude一起使用(MCP目前仅在桌面应用程序中受支持)
安装
# Clone the repository
git clone https://github.com/hidenorigoto/sacloud-mcp.git
cd sacloud-mcp
# Install dependencies
npm install
# Build the project
npm run build配置
设置以下环境变量:
SACLOUD_API_TOKEN:您的Sakura Cloud API代币SACLOUD_API_SECRET:您的Sakura Cloud API秘密
用法
可用资源
| 资源URI | 描述 |
|---|---|
sakura:///servers | 列出您Sakura Cloud帐户中的所有服务器 |
sakura:///switches | 列出您Sakura Cloud帐户中的所有交换机 |
sakura:///appliances | 列出您Sakura Cloud帐户中的所有设备 |
sakura:///disks | 列出您Sakura Cloud帐户中的所有磁盘 |
sakura:///archives | 列出您Sakura Cloud帐户中的所有存档 |
sakura:///cdrom | 列出您Sakura Cloud帐户中的所有ISO映像(CD-ROM) |
sakura:///bridge | 列出您Sakura Cloud帐户中的所有网桥 |
sakura:///internet | 列出您Sakura Cloud帐户中的所有路由器 |
sakura:///interface | 列出您Sakura Cloud帐户中的所有网络接口 |
sakura:///icon | 列出您Sakura Cloud帐户中的所有图标 |
sakura:///note | 列出您Sakura Cloud帐户中的所有启动脚本和注释 |
sakura:///sshkey | 列出您Sakura Cloud帐户中的所有SSH密钥 |
sakura:///region | 列出您Sakura Cloud帐户中的所有地区 |
sakura:///zone | 列出您Sakura Cloud帐户中的所有区域 |
sakura:///product | 列出您Sakura Cloud帐户中的所有可用产品 |
sakura:///commonserviceitem | 列出您Sakura Cloud帐户中的所有常见服务项(DNS、简单监视器等) |
sakura:///license | 列出您Sakura Cloud帐户中的所有许可证 |
sakura:///auth-status | 显示当前身份验证状态和权限 |
sakura:///bill | 显示每月账单信息 |
sakura:///bill-detail | 显示账单信息的详细细分 |
sakura:///coupon | 列出所有可用优惠券 |
sakura:///privatehost | 列出您Sakura Cloud帐户中的所有私有主机 |
sakura:///public-price | 显示Sakura Cloud服务的公开定价信息(无需身份验证) |
sakura:///apprun | 列出您Sakura Cloud帐户中的所有AppRun应用程序 |
可用工具
| 工具名称 | 描述 | 必需参数 |
|---|---|---|
get_server_list | 检索所有服务器的列表 | 无 |
get_server_info | 检索特定服务器的详细信息 | serverId |
get_switch_list | 检索所有开关的列表 | 无 |
get_switch_info | 检索特定交换机的详细信息 | switchId |
get_appliance_list | 检索所有设备的列表 | 无 |
get_appliance_info | 检索特定设备的详细信息 | applianceId |
get_disk_list | 检索所有磁盘的列表 | 无 |
get_disk_info | 检索特定磁盘的详细信息 | diskId |
get_archive_list | 检索所有存档的列表 | 无 |
get_archive_info | 检索特定存档的详细信息 | archiveId |
get_cdrom_list | 检索所有ISO映像的列表 | 无 |
get_cdrom_info | 检索特定ISO映像的详细信息 | cdromId |
get_bridge_list | 检索所有网桥的列表 | 无 |
get_bridge_info | 检索特定网桥的详细信息 | bridgeId |
get_router_list | 检索所有路由器的列表 | 无 |
get_router_info | 检索特定路由器的详细信息 | routerId |
get_interface_list | 检索所有网络接口的列表 | 无 |
get_interface_info | 检索特定网络接口的详细信息 | interfaceId |
get_icon_list | 检索所有图标的列表 | 无 |
get_icon_info | 检索特定图标的详细信息 | iconId |
get_note_list | 检索所有笔记和启动脚本的列表 | 无 |
get_note_info | 检索特定注释或启动脚本的详细信息 | noteId |
get_sshkey_list | 检索所有SSH密钥的列表 | 无 |
get_sshkey_info | 检索特定SSH密钥的详细信息 | sshkeyId |
get_region_list | 检索所有区域的列表 | 无 |
get_region_info | 检索特定区域的详细信息 | regionId |
get_zone_list | 检索所有区域的列表 | 无 |
get_zone_info | 检索特定区域的详细信息 | zoneId |
get_product_info | 检索特定产品的详细信息 | productType |
get_commonserviceitem_list | 检索所有常用服务项的列表 | 无 |
get_commonserviceitem_info | 检索特定公共服务项的详细信息 | itemId |
get_license_list | 检索所有许可证的列表 | 无 |
get_license_info | 检索特定许可证的详细信息 | licenseId |
get_bill_info | 检索特定月份的账单信息 | year, month |
get_bill_detail | 检索特定月份的详细账单信息 | year, month |
get_coupon_info | 检索特定优惠券的信息 | couponId |
get_privatehost_info | 检索特定专用主机的详细信息 | privateHostId |
get_public_price | 检索Sakura Cloud服务的公开定价信息 | 无 |
get_apprun_list | 检索所有AppRun应用程序的列表 | 无 |
get_apprun_info | 检索特定AppRun应用程序的详细信息 | appId |
create_apprun | 创建新的AppRun应用程序 | name, dockerImage, planId |
delete_apprun | 删除AppRun应用程序 | appId |
start_apprun | 启动AppRun应用程序 | appId |
stop_apprun | 停止AppRun应用程序 | appId |
update_apprun | 更新现有的AppRun应用程序 | appId |
get_apprun_logs | 从AppRun应用程序获取日志 | appId |
AppRun集成
Sakura Cloud AppRun是一个容器化的应用程序平台,允许您在不管理基础设施的情况下运行Docker容器。此MCP服务器提供完整的AppRun管理功能:
- 查看所有AppRun应用程序
- 使用自定义Docker镜像创建新应用程序
- 更新现有应用程序(更改图像、配置等)
- 启动和停止应用程序
- 查看应用程序日志
- 不再需要时删除应用程序
创建或更新AppRun应用程序时,可以指定:
- 应用程序名称和描述
- 要使用的Docker镜像
- 计划ID(决定分配的资源)
- 环境变量作为键值对
区域支撑
所有API调用都支持指定针对特定Sakura Cloud数据中心的区域参数。默认区域为 tk1v (东京),但您可以指定其他,例如:
is1a(石狩)tk1a(东京)- 还有更多。..
带区域参数的URI示例: sakura:///servers?zone=is1a
与克劳德融合
Claude Desktop应用程序提供MCP支持。按照以下步骤将此服务器与Claude集成:
- 确保服务器在本地或可访问的主机上运行。
- 创建一个
claude_desktop_config.json将文件放在操作系统的适当位置:
- 窗户: %APPDATA%\Claude\claude_desktop_config.json - macOS: ~/Library/Application Support/Claude/claude_desktop_config.json - Linux: ~/.config/Claude/claude_desktop_config.json
- 将以下配置添加到文件中:
{
"sacloud-server": {
"command": "node",
"args": ["path/to/mcp/dist/server.js"],
"env": {
"SACLOUD_API_TOKEN": "your_token_here",
"SACLOUD_API_SECRET": "your_secret_here"
}
}
}- 重新启动Claude Desktop应用程序以应用配置。
- 在与Claude的对话中,您现在可以访问Sakura Cloud资源和工具。
安全考虑
- 此服务器处理敏感的API凭据
- 切勿将API令牌或机密提交到版本控制
- 对所有敏感信息使用环境变量
- 在生产中实施适当的访问控制
许可证
国际协调委员会
