fix(mcp-server): query scope params (#25171)

This commit is contained in:
屈轩
2026-07-17 00:26:47 +08:00
committed by GitHub
parent a9761ea558
commit 57c858a6ea
3 changed files with 18 additions and 11 deletions
@@ -36,6 +36,7 @@ func (a CloudpodsAdapter) ListCloudRegions(ctx context.Context, limit int, offse
// 构造查询参数
params := jsonutils.NewDict()
params.Set("scope", jsonutils.NewString("max"))
if limit > 0 {
// 设置查询结果数量限制
params.Set("limit", jsonutils.NewInt(int64(limit)))
@@ -92,6 +93,7 @@ func (a *CloudpodsAdapter) ListVPCs(ctx context.Context, limit int, offset int,
// 构造查询参数
params := jsonutils.NewDict()
params.Set("scope", jsonutils.NewString("max"))
if limit > 0 {
// 设置查询结果数量限制
params.Set("limit", jsonutils.NewInt(int64(limit)))
@@ -148,6 +150,7 @@ func (a *CloudpodsAdapter) ListNetworks(ctx context.Context, limit int, offset i
// 构造查询参数
params := jsonutils.NewDict()
params.Set("scope", jsonutils.NewString("max"))
if limit > 0 {
// 设置查询结果数量限制
params.Set("limit", jsonutils.NewInt(int64(limit)))
@@ -205,6 +208,7 @@ func (a *CloudpodsAdapter) ListImages(ctx context.Context, limit int, offset int
// 构造查询参数
params := jsonutils.NewDict()
params.Set("scope", jsonutils.NewString("max"))
if limit > 0 {
// 设置查询结果数量限制
params.Set("limit", jsonutils.NewInt(int64(limit)))
@@ -263,6 +267,7 @@ func (a *CloudpodsAdapter) ListServerSkus(ctx context.Context, limit int, offset
// 构造查询参数
params := jsonutils.NewDict()
params.Set("scope", jsonutils.NewString("max"))
if limit > 0 {
// 设置查询结果数量限制
params.Set("limit", jsonutils.NewInt(int64(limit)))
@@ -361,6 +366,7 @@ func (a *CloudpodsAdapter) ListStorages(ctx context.Context, limit int, offset i
// 构造查询参数
params := jsonutils.NewDict()
params.Set("scope", jsonutils.NewString("max"))
if limit > 0 {
// 设置查询结果数量限制
params.Set("limit", jsonutils.NewInt(int64(limit)))
@@ -447,6 +453,7 @@ func (a *CloudpodsAdapter) ListServers(ctx context.Context, limit int, offset in
// 构造查询参数
params := jsonutils.NewDict()
params.Set("scope", jsonutils.NewString("max"))
if limit > 0 {
// 设置查询结果数量限制
params.Set("limit", jsonutils.NewInt(int64(limit)))
@@ -44,8 +44,8 @@ func NewCloudpodsServerStartTool(adapter *adapters.CloudpodsAdapter) *CloudpodsS
func (c *CloudpodsServerStartTool) GetTool() mcp.Tool {
return mcp.NewTool(
"cloudpods_start_server",
mcp.WithDescription("启动指定的Cloudpods虚拟机实例"),
mcp.WithString("server_id", mcp.Required(), mcp.Description("虚拟机ID")),
mcp.WithDescription("启动指定的Cloudpods虚拟机实例。用户要求开机/启动时必须调用本工具真正执行启动,仅调用cloudpods_list_servers 查询不算完成。若尚不知 server_id,先用 cloudpods_list_servers(可用 search)定位,拿到 id 后立即调用本工具,不要只查询就结束。"),
mcp.WithString("server_id", mcp.Required(), mcp.Description("虚拟机ID,来自 cloudpods_list_servers 返回的 id 字段")),
mcp.WithString("auto_prepaid", mcp.Description("按量机器自动转换为包年包月,默认为false")),
mcp.WithString("qemu_version", mcp.Description("指定启动虚拟机的Qemu版本,可选值:2.12.1, 4.2.0,仅适用于KVM虚拟机")),
mcp.WithString("ak", mcp.Description("用户登录cloudpods后获取的access key")),
@@ -132,8 +132,8 @@ func NewCloudpodsServerStopTool(adapter *adapters.CloudpodsAdapter) *CloudpodsSe
func (c *CloudpodsServerStopTool) GetTool() mcp.Tool {
return mcp.NewTool(
"cloudpods_stop_server",
mcp.WithDescription("停止指定的Cloudpods虚拟机实例"),
mcp.WithString("server_id", mcp.Required(), mcp.Description("虚拟机ID")),
mcp.WithDescription("停止指定的Cloudpods虚拟机实例。用户要求关机/停止时必须调用本工具真正执行停止,仅调用 cloudpods_list_servers 查询不算完成。若尚不知 server_id,先用 cloudpods_list_servers(可用 search)定位,拿到 id 后立即调用本工具,不要只查询就结束,也不要再次向用户确认。"),
mcp.WithString("server_id", mcp.Required(), mcp.Description("虚拟机ID,来自 cloudpods_list_servers 返回的 id 字段")),
mcp.WithString("is_force", mcp.Description("是否强制停止,默认为false")),
mcp.WithString("stop_charging", mcp.Description("是否关机停止计费,默认为false")),
mcp.WithString("timeout_secs", mcp.Description("关机等待时间,如果是强制关机,则等待时间为0,如果不设置,默认为30秒")),
@@ -233,8 +233,8 @@ func NewCloudpodsServerRestartTool(adapter *adapters.CloudpodsAdapter) *Cloudpod
func (c *CloudpodsServerRestartTool) GetTool() mcp.Tool {
return mcp.NewTool(
"cloudpods_restart_server",
mcp.WithDescription("重启指定的Cloudpods虚拟机实例"),
mcp.WithString("server_id", mcp.Required(), mcp.Description("虚拟机ID")),
mcp.WithDescription("重启指定的Cloudpods虚拟机实例。用户要求重启时必须调用本工具真正执行重启,仅调用 cloudpods_list_servers 查询不算完成。若尚不知 server_id,先用 cloudpods_list_servers(可用 search)定位,拿到 id 后立即调用本工具,不要只查询就结束,也不要再次向用户确认。"),
mcp.WithString("server_id", mcp.Required(), mcp.Description("虚拟机ID,来自 cloudpods_list_servers 返回的 id 字段")),
mcp.WithString("is_force", mcp.Description("是否强制重启,默认为false")),
mcp.WithString("ak", mcp.Description("用户登录cloudpods后获取的access key")),
mcp.WithString("sk", mcp.Description("用户登录cloudpods后获取的secret key")),
@@ -316,8 +316,8 @@ func NewCloudpodsServerResetPasswordTool(adapter *adapters.CloudpodsAdapter) *Cl
func (c *CloudpodsServerResetPasswordTool) GetTool() mcp.Tool {
return mcp.NewTool(
"cloudpods_reset_server_password",
mcp.WithDescription("重置指定Cloudpods虚拟机的登录密码"),
mcp.WithString("server_id", mcp.Required(), mcp.Description("虚拟机ID")),
mcp.WithDescription("重置指定Cloudpods虚拟机的登录密码。用户要求重置密码时必须调用本工具真正执行,仅调用 cloudpods_list_servers 查询不算完成。若尚不知 server_id,先用 cloudpods_list_servers 定位,拿到 id 后立即调用本工具。"),
mcp.WithString("server_id", mcp.Required(), mcp.Description("虚拟机ID,来自 cloudpods_list_servers 返回的 id 字段")),
mcp.WithString("password", mcp.Required(), mcp.Description("新密码,长度8-30个字符")),
mcp.WithString("reset_password", mcp.Description("是否重置密码,默认为true")),
mcp.WithString("auto_start", mcp.Description("重置后是否自动启动,默认为true")),
@@ -424,8 +424,8 @@ func NewCloudpodsServerDeleteTool(adapter *adapters.CloudpodsAdapter) *Cloudpods
func (c *CloudpodsServerDeleteTool) GetTool() mcp.Tool {
return mcp.NewTool(
"cloudpods_delete_server",
mcp.WithDescription("删除指定的Cloudpods虚拟机实例"),
mcp.WithString("server_id", mcp.Required(), mcp.Description("虚拟机ID")),
mcp.WithDescription("删除指定的Cloudpods虚拟机实例。用户要求删除时必须调用本工具真正执行删除,仅调用 cloudpods_list_servers 查询不算完成。若尚不知 server_id,先用 cloudpods_list_servers 定位,拿到 id 后立即调用本工具。"),
mcp.WithString("server_id", mcp.Required(), mcp.Description("虚拟机ID,来自 cloudpods_list_servers 返回的 id 字段")),
mcp.WithString("override_pending_delete", mcp.Description("是否强制删除(包括在回收站中的实例),默认为false")),
mcp.WithString("purge", mcp.Description("是否仅删除本地资源,默认为false")),
mcp.WithString("delete_snapshots", mcp.Description("是否删除快照,默认为false")),
@@ -54,7 +54,7 @@ func NewCloudpodsServersTool(adapter *adapters.CloudpodsAdapter) *CloudpodsServe
func (c *CloudpodsServersTool) GetTool() mcp.Tool {
return mcp.NewTool(
"cloudpods_list_servers",
mcp.WithDescription("查询Cloudpods虚拟机实例列表,获取虚拟机信息"),
mcp.WithDescription("查询Cloudpods虚拟机实例列表,获取虚拟机信息(含id、name、status)。当用户要求启动/停止/重启/删除/重置密码时:先用本工具定位目标虚拟机,拿到返回结果中的id后,必须立刻继续调用对应操作工具(cloudpods_start_server / cloudpods_stop_server / cloudpods_restart_server / cloudpods_delete_server / cloudpods_reset_server_password)完成操作,不要只查询就结束,也不要再次向用户确认(除非匹配到多台需用户选择)。"),
mcp.WithString("limit", mcp.Description("返回结果数量限制,默认为50")),
mcp.WithString("offset", mcp.Description("结果偏移量,默认为0")),
mcp.WithString("search", mcp.Description("按名称或ID模糊搜索")),