ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

使用 MCP Toolbox 的 alloydb-create-instance 工具创建 AlloyDB 实例

使用 MCP Toolbox 的 alloydb-create-instance 工具创建 AlloyDB 实例 使用 MCP Toolbox 的 alloydb-create-instance 工具创建 AlloyDB 实例【免费下载链接】mcp-toolboxMCP Toolbox for Databases is an open source MCP server for databases.项目地址: https://gitcode.com/GitHub_Trending/ge/mcp-toolbox导读alloydb-create-instance是 MCP Toolbox for Databases 项目中用于 AlloyDB 基础设施管理alloydb-admin集成的核心写操作工具之一它通过 MCPModel Context Protocol让 Agent 直接在指定 AlloyDB 集群内创建PRIMARY或READ_POOL类型的新实例并自动为其分配公网 IP。读完本文你将掌握该工具的全部输入参数与校验规则、配置声明方式、底层 GCP AlloyDB API 调用链以及如何结合alloydb-postgres-admin预置配置与alloydb-wait-for-operation工具完成“创建实例 → 等待长时操作完成”的完整运维闭环。工具概览alloydb-create-instance工具在一个已存在的 AlloyDB 集群下新建一个实例。按照 Google Cloud AlloyDB 的模型实例分两种类型PRIMARY主实例每个集群必须且只能有一个主实例承担读写请求也是集群的默认类型。READ_POOL只读池由若干个只读节点组成的水平扩展副本组用于分担读流量nodeCount决定节点数量。该工具由官方文档定义在 docs/en/integrations/alloydb-admin/tools/alloydb-create-instance.md其核心实现位于 internal/tools/alloydb/alloydbcreateinstance/alloydbcreateinstance.go底层调用alloydb-admin源Source暴露的CreateInstance方法。权限与前置条件在调用该工具前需要确保目标 GCP 项目满足以下条件启用 AlloyDB API在 GCP 项目上启用 AlloyDB APIalloydb.googleapis.com。授予足够的 IAM 角色执行工具的用户或服务账号需具备以下任一角色roles/alloydb.adminAlloyDB Admin 预定义角色推荐roles/ownerOwner 基础角色roles/editorEditor 基础角色提示如果使用alloydb-postgres-admin预置配置官方文档docs/en/integrations/alloydb-admin/prebuilt-configs/alloydb-postgres-admin.md进一步区分了权限粒度list/get类工具只需要AlloyDB Viewerroles/alloydb.viewer而create类写工具含create_instance需要AlloyDB Adminroles/alloydb.admin。输入参数详解工具接受以下输入参数参数类型说明必填projectstring集群所在的 GCP 项目 ID是locationstring集群所在的 GCP 区域如us-central1是clusterstring要加入新实例的现有集群 ID是instancestring新 AlloyDB 实例的唯一标识符是instanceTypestring实例类型可选值为PRIMARY和READ_POOL默认PRIMARY否displayNamestring可选的用户友好实例名称否nodeCountint只读池的节点数仅当instanceType为READ_POOL时需要默认1否源码中的参数校验逻辑从 alloydbcreateinstance.go 的Invoke实现可以看到参数在真正发起 API 请求前会经过严格校验project、location、cluster、instance四个必填参数若缺失或为空字符串会返回 Agent 级错误invalid or missing ... expected a non-empty string。instanceType只接受PRIMARY与READ_POOL两个值其余值一律报错。nodeCount仅在instanceType READ_POOL时被读取并强转为int对PRIMARY类型该参数会被忽略因此主实例的节点数是固定的1 个不能通过该工具调整。displayName为可选参数空字符串会被忽略。此外参数定义函数buildParamsalloydbcreateinstance.go为instanceType和nodeCount声明了默认值PRIMARY、1并通过resolveParams在源配置了defaultProject时把项目 ID 预置进project参数此时 Agent 无需再向用户索要项目 ID——这一细节对 LLM 调用工具时减少不必要的交互很有价值。工具默认写入的数据库标记注意该工具会将数据库标记password.enforce_complexity设为on即强制新数据库密码满足复杂度规则。这一行为并非文档承诺而是可以在 internal/sources/alloydbadmin/alloydbadmin.go 的CreateInstance实现中直接确认请求体中的DatabaseFlags固定写入password.enforce_complexity: on。这意味着通过该工具创建的实例会开启密码复杂度强制校验后续在该集群上创建用户时密码需满足相应规则。底层实现从 MCP 调用到 AlloyDB REST API工具类型注册与配置该工具以 Go 插件形式注册到工具注册表。在 alloydbcreateinstance.go 中init()调用tools.Register(alloydb-create-instance, newConfig)完成注册类型常量resourceType alloydb-create-instance正是文档中type字段的取值。工具配置结构体Configalloydbcreateinstance.go内嵌tools.ConfigBase并包含type、source、可选annotations三个字段。若配置中未提供descriptionInitialize会使用内置默认描述Creates a new AlloyDB instance (PRIMARY or READ_POOL) within a cluster. This is a long-running operation. This will return operation id to be used by get operations tool. Take all parameters from user in one go.——这句话同时点明了该工具的**长时运行long-running operation**特性创建实例后返回的是 operation ID需要配合get/wait_for_operation类工具轮询进度。源Source与认证该工具通过compatibleSource接口alloydbcreateinstance.go与源解耦要求源实现CreateInstance、GetDefaultProject、UseClientAuthorization方法。alloydb-admin源正是其兼容源其配置docs/en/integrations/alloydb-admin/source.md支持两种认证方式应用默认凭据ADC默认方式使用google.FindDefaultCredentials获取凭据alloydbadmin.go。客户端 OAuth当useClientOAuth: true时每次请求由客户端如浏览器提供 OAuth 2.0 访问令牌源会用它动态构造服务客户端alloydbadmin.go。源配置字段包括type必填alloydb-admin、defaultProject可选、useClientOAuth可选默认false、readOnly可选为true时抑制写类工具。请求体构建与 API 调用源侧的CreateInstance方法alloydbadmin.go使用google.golang.org/api/alloydb/v1的类型安全结构体构建请求instance : alloydbrestapi.Instance{ InstanceType: instanceType, NetworkConfig: alloydbrestapi.InstanceNetworkConfig{ EnablePublicIp: true, // 公网 IP }, DatabaseFlags: map[string]string{ password.enforce_complexity: on, }, } if displayName ! { instance.DisplayName displayName } if instanceType READ_POOL { instance.ReadPoolConfig alloydbrestapi.ReadPoolConfig{ NodeCount: int64(nodeCount), } }随后通过service.Projects.Locations.Clusters.Instances.Create(urlString, instance).InstanceId(instanceID).Do()调用 AlloyDB REST APIhttps://alloydb.googleapis.com其中urlString为projects/{project}/locations/{location}/clusters/{cluster}。该 API 返回的是长时操作Operation而非实例本身——这也解释了为什么该工具必须与轮询类工具配合使用。配置示例方式一单独声明工具在工具配置文件中声明该工具kind: tool name: create_instance type: alloydb-create-instance source: alloydb-admin-source description: Use this tool to create a new AlloyDB instance within a specified cluster.各配置字段说明字段类型必填说明typestring是必须为alloydb-create-instancesourcestring是一个alloydb-admin源的名称descriptionstring否传递给 Agent 的工具描述同时需要一个alloydb-admin源与之配套例如kind: source name: alloydb-admin-source type: alloydb-admin defaultProject: my-gcp-project方式二使用预置配置推荐项目提供了开箱即用的alloydb-postgres-admin预置配置见 internal/prebuiltconfigs/tools/alloydb-postgres-admin.yaml其中create_instance工具已声明好并与同一源绑定。使用方式为启动时传入--prebuiltalloydb-postgres-admin预置配置文档见 docs/en/integrations/alloydb-admin/prebuilt-configs/alloydb-postgres-admin.md。预置配置支持两个环境变量ALLOYDB_POSTGRES_PROJECT可选用作 AlloyDB 基础设施工具默认项目的 GCP 项目 ID。ALLOYDB_POSTGRES_READONLY可选设为true时抑制写类工具如create_cluster、create_instance、create_user默认false。预置配置还顺带声明了wait_for_operation工具配置了delay: 1s、maxDelay: 4m、multiplier: 2、maxRetries: 10的轮询策略方便在创建实例后跟踪长时操作。完整实战流程结合预置配置Agent 完成“创建只读池实例并等待就绪”的典型流程如下可选确认集群存在通过get_cluster或list_clusters确认目标集群及其location。调用create_instance一次性向用户索取所有参数project、location、cluster、instance、instanceType、nodeCount 等。例如创建一个 2 节点的只读池project: my-gcp-project location: us-central1 cluster: my-alloydb-cluster instance: my-read-pool-1 instanceType: READ_POOL nodeCount: 2获取 operation ID工具返回长时操作及其 ID。轮询进度调用wait_for_operation跟踪该操作直至完成见 docs/en/integrations/alloydb-admin/tools/alloydb-wait-for-operation.md。验证结果使用get_instance或list_instances确认新实例已就绪并可访问。测试与验证项目为工具配置解析提供了单元测试 alloydbcreateinstance_test.go其中的TestParseFromYaml用例验证了两种典型配置场景基础场景name: create-my-instance、type: alloydb-create-instance、source: my-alloydb-admin-source及自定义description能被正确解析为Config。带认证的场景通过authRequired字段声明my-google-auth-service等认证服务解析后写入ConfigBase.AuthRequired。集成测试覆盖见 tests/alloydb 目录如alloydb_mcp_test.go、alloydb_integration_test.go可用于验证真实 GCP 环境下的工具行为。注意事项只适用于已存在的集群该工具无法创建集群必须先通过alloydb-create-cluster创建集群见 docs/en/integrations/alloydb-admin/tools/alloydb-create-cluster.md。公网 IP从源码结构看请求体固定设置EnablePublicIp: true因此创建的实例总会分配公网 IP如需私网 IP 实例该工具不支持需通过其他途径如直接调用 AlloyDB API完成。长时操作创建实例是异步长时操作返回的是 operation ID 而非实例状态务必配合wait_for_operation/get_instance使用。readOnly模式若源配置了readOnly: true预置配置会自动抑制本写工具避免误操作。密码复杂度创建出的实例启用了password.enforce_complexityon标记后续创建用户时密码必须满足复杂度要求可结合alloydb-create-user工具使用见 docs/en/integrations/alloydb-admin/tools/alloydb-create-user.md。【免费下载链接】mcp-toolboxMCP Toolbox for Databases is an open source MCP server for databases.项目地址: https://gitcode.com/GitHub_Trending/ge/mcp-toolbox创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表