工具:update_repository
更新现有 Dataform 代码库的属性,例如其 Git 远程设置、工作区编译替换或默认服务账号。
前提条件:在更新之前,使用 get_repository 工具读取当前代码库状态。
如果省略 update_mask 参数值,所有可变字段都会被 repository 参数值中提供的值覆盖。如需仅修改特定字段而不清除其他字段,请在 update_mask 中列出这些字段。
repository.name 参数值必须采用 projects/{project_id}/locations/{location}/repositories/{repository} 格式。
以下代码示例展示了如何使用 curl 调用 update_repository MCP 工具。
| Curl 请求 |
|---|
curl --location 'https://dataform.googleapis.com/mcp' \ --header 'content-type: application/json' \ --header 'accept: application/json, text/event-stream' \ --data '{ "method": "tools/call", "params": { "name": "update_repository", "arguments": { // Provide these details according to the MCP tool specification. } }, "jsonrpc": "2.0", "id": 1 }' |
输入架构
UpdateRepository 请求消息。
UpdateRepositoryRequest
| JSON 表示法 |
|---|
{
"updateMask": string,
"repository": {
object ( |
| 字段 | |
|---|---|
updateMask |
可选。指定要在代码库中更新的字段。如果未设置,系统会更新所有字段。 这是完全限定字段名称的逗号分隔列表。示例: |
repository |
必需。要更新的代码库。 |
FieldMask
| JSON 表示法 |
|---|
{ "paths": [ string ] } |
| 字段 | |
|---|---|
paths[] |
一组字段掩码路径。 |
代码库
| JSON 表示法 |
|---|
{ "name": string, "createTime": string, "displayName": string, "gitRemoteSettings": { object ( |
| 字段 | |
|---|---|
name |
标识符。代码库的名称。 |
createTime |
仅限输出。相应代码库的创建时间戳。 采用 RFC 3339 标准,生成的输出将始终进行 Z 规范化(即转换为 UTC 零时区格式并在末尾附加 Z),并使用 0、3、6 或 9 个小数位。不带“Z”的偏差时间也是可以接受的。示例: |
displayName |
可选。代码库的简单易懂的名称。 |
gitRemoteSettings |
可选。如果设置,则将此代码库配置为与 Git 远程代码库相关联。 |
npmrcEnvironmentVariablesSecretVersion |
可选。用于将变量插值到 .npmrc 文件中以进行软件包安装操作的 Secret Manager Secret 版本的名称。必须采用 |
workspaceCompilationOverrides |
可选。如果设置,则在创建工作区范围的编译结果时, |
labels |
可选。代码库用户标签。 包含一系列 |
setAuthenticatedUserAdmin |
可选。仅限输入。如果设置为 true,则向经过身份验证的用户授予所创建代码库的 roles/dataform.admin 角色。如需稍后修改对已创建仓库的访问权限,请应用来自 https://cloud.google.com/dataform/reference/rest#rest-resource:-v1beta1.projects.locations.repositories 的 setIamPolicy |
serviceAccount |
可选。用于运行工作流调用的服务账号。 |
kmsKeyName |
可选。对 KMS 加密密钥的引用。如果提供,则将用于加密资源库和所有子资源中的用户数据。创建代码库后,无法添加或更新加密密钥。示例: |
dataEncryptionState |
仅限输出。相应 Git 代码库的数据加密状态(如果该代码库受 KMS 密钥保护)。 |
联合字段
|
|
containingFolder |
可选。代码库的父文件夹的名称。该字段不可变,可以通过 MoveRepository 操作进行修改。格式: |
联合字段
|
|
teamFolderName |
仅限输出。相应代码库所关联的团队文件夹的资源名称。此参数应采用以下格式:projects/{project}/locations/{location}/teamFolders/{teamFolder}。如果未设置此属性,则代码库不会与 TeamFolder 相关联。 |
联合字段
|
|
internalMetadata |
仅限输出。用于在内部提供资源的所有元数据信息。例如:时间戳、标志、状态字段等。此字段的格式为 JSON 字符串。 |
时间戳
| JSON 表示法 |
|---|
{ "seconds": string, "nanos": integer } |
| 字段 | |
|---|---|
seconds |
表示世界协调时间 (UTC) 的秒数(从 Unix 纪元 1970-01-01T00:00:00Z 开始算起)。必须介于 -62135596800 到 253402300799 之间(含边界值),对应于 0001-01-01T00:00:00Z 到 9999-12-31T23:59:59Z。 |
nanos |
秒数的非负小数部分(以纳秒为单位)。此字段是时长的纳秒部分,而不是秒的替代项。对于含小数部分的负秒数,仍必须包含按时间递升的非负纳秒值。必须在 0 到 999,999,999 之间(含边界值)。 |
GitRemoteSettings
| JSON 表示法 |
|---|
{ "url": string, "defaultBranch": string, "effectiveDefaultBranch": string, "authenticationTokenSecretVersion": string, "sshAuthenticationConfig": { object ( |
| 字段 | |
|---|---|
url |
必需。Git 远程代码库的网址。 |
defaultBranch |
可选。Git 远程代码库的默认分支名称。如果未设置,则使用 |
effectiveDefaultBranch |
仅限输出。Git 远程代码库的有效默认分支名称。这是 Git 远程代码库的默认分支名称(如果已设置),否则为 |
authenticationTokenSecretVersion |
可选。要用作 Git 操作的身份验证令牌的 Secret Manager 密文版本的名称。必须采用 |
sshAuthenticationConfig |
可选。使用 SSH 协议的远程 URI 的身份验证字段。 |
tokenStatus |
仅限输出。已弃用:相应字段不包含任何令牌状态信息。请改用 https://cloud.google.com/dataform/reference/rest/v1beta1/projects.locations.repositories/computeAccessTokenStatus |
联合字段
|
|
gitRepositoryLink |
可选。用于机器凭据的 |
SshAuthenticationConfig
| JSON 表示法 |
|---|
{ "userPrivateKeySecretVersion": string, "hostPublicKey": string } |
| 字段 | |
|---|---|
userPrivateKeySecretVersion |
必需。要用作 Git 操作的 SSH 私钥的 Secret Manager 密文版本的名称。必须采用 |
hostPublicKey |
必需。用于验证远程 Git 主机身份的 SSH 公钥的内容。 |
WorkspaceCompilationOverrides
| JSON 表示法 |
|---|
{ "defaultDatabase": string, "schemaSuffix": string, "tablePrefix": string } |
| 字段 | |
|---|---|
defaultDatabase |
可选。默认数据库(Google Cloud 项目 ID)。 |
schemaSuffix |
可选。应附加到所有架构(BigQuery 数据集 ID)名称的后缀。 |
tablePrefix |
可选。应附加到所有表名称的前缀。 |
LabelsEntry
| JSON 表示法 |
|---|
{ "key": string, "value": string } |
| 字段 | |
|---|---|
key |
|
value |
|
DataEncryptionState
| JSON 表示法 |
|---|
{ "kmsKeyVersionName": string } |
| 字段 | |
|---|---|
kmsKeyVersionName |
必需。用于加密资源数据的 KMS 密钥版本名称。 |
TokenStatus
身份验证令牌的状态。
| 枚举 | |
|---|---|
TOKEN_STATUS_UNSPECIFIED |
默认值。此值未使用。 |
NOT_FOUND |
在 Secret Manager 中找不到令牌(或者 Dataform 服务账号无权访问该令牌)。 |
INVALID |
该令牌无法用于针对 Git 远程服务器进行身份验证。 |
VALID |
令牌已成功用于针对 Git 远程服务器进行身份验证。 |
输出架构
表示 Dataform Git 代码库。
代码库
| JSON 表示法 |
|---|
{ "name": string, "createTime": string, "displayName": string, "gitRemoteSettings": { object ( |
| 字段 | |
|---|---|
name |
标识符。代码库的名称。 |
createTime |
仅限输出。相应代码库的创建时间戳。 采用 RFC 3339 标准,生成的输出将始终进行 Z 规范化(即转换为 UTC 零时区格式并在末尾附加 Z),并使用 0、3、6 或 9 个小数位。不带“Z”的偏差时间也是可以接受的。示例: |
displayName |
可选。代码库的简单易懂的名称。 |
gitRemoteSettings |
可选。如果设置,则将此代码库配置为与 Git 远程代码库相关联。 |
npmrcEnvironmentVariablesSecretVersion |
可选。用于将变量插值到 .npmrc 文件中以进行软件包安装操作的 Secret Manager Secret 版本的名称。必须采用 |
workspaceCompilationOverrides |
可选。如果设置,则在创建工作区范围的编译结果时, |
labels |
可选。代码库用户标签。 包含一系列 |
setAuthenticatedUserAdmin |
可选。仅限输入。如果设置为 true,则向经过身份验证的用户授予所创建代码库的 roles/dataform.admin 角色。如需稍后修改对已创建仓库的访问权限,请应用来自 https://cloud.google.com/dataform/reference/rest#rest-resource:-v1beta1.projects.locations.repositories 的 setIamPolicy |
serviceAccount |
可选。用于运行工作流调用的服务账号。 |
kmsKeyName |
可选。对 KMS 加密密钥的引用。如果提供,则将用于加密资源库和所有子资源中的用户数据。创建代码库后,无法添加或更新加密密钥。示例: |
dataEncryptionState |
仅限输出。相应 Git 代码库的数据加密状态(如果该代码库受 KMS 密钥保护)。 |
联合字段
|
|
containingFolder |
可选。代码库的父文件夹的名称。该字段不可变,可以通过 MoveRepository 操作进行修改。格式: |
联合字段
|
|
teamFolderName |
仅限输出。相应代码库所关联的团队文件夹的资源名称。此参数应采用以下格式:projects/{project}/locations/{location}/teamFolders/{teamFolder}。如果未设置此属性,则代码库不会与 TeamFolder 相关联。 |
联合字段
|
|
internalMetadata |
仅限输出。用于在内部提供资源的所有元数据信息。例如:时间戳、标志、状态字段等。此字段的格式为 JSON 字符串。 |
时间戳
| JSON 表示法 |
|---|
{ "seconds": string, "nanos": integer } |
| 字段 | |
|---|---|
seconds |
表示世界协调时间 (UTC) 的秒数(从 Unix 纪元 1970-01-01T00:00:00Z 开始算起)。必须介于 -62135596800 到 253402300799 之间(含边界值),对应于 0001-01-01T00:00:00Z 到 9999-12-31T23:59:59Z。 |
nanos |
秒数的非负小数部分(以纳秒为单位)。此字段是时长的纳秒部分,而不是秒的替代项。对于含小数部分的负秒数,仍必须包含按时间递升的非负纳秒值。必须在 0 到 999,999,999 之间(含边界值)。 |
GitRemoteSettings
| JSON 表示法 |
|---|
{ "url": string, "defaultBranch": string, "effectiveDefaultBranch": string, "authenticationTokenSecretVersion": string, "sshAuthenticationConfig": { object ( |
| 字段 | |
|---|---|
url |
必需。Git 远程代码库的网址。 |
defaultBranch |
可选。Git 远程代码库的默认分支名称。如果未设置,则使用 |
effectiveDefaultBranch |
仅限输出。Git 远程代码库的有效默认分支名称。这是 Git 远程代码库的默认分支名称(如果已设置),否则为 |
authenticationTokenSecretVersion |
可选。要用作 Git 操作的身份验证令牌的 Secret Manager 密文版本的名称。必须采用 |
sshAuthenticationConfig |
可选。使用 SSH 协议的远程 URI 的身份验证字段。 |
tokenStatus |
仅限输出。已弃用:相应字段不包含任何令牌状态信息。请改用 https://cloud.google.com/dataform/reference/rest/v1beta1/projects.locations.repositories/computeAccessTokenStatus |
联合字段
|
|
gitRepositoryLink |
可选。用于机器凭据的 |
SshAuthenticationConfig
| JSON 表示法 |
|---|
{ "userPrivateKeySecretVersion": string, "hostPublicKey": string } |
| 字段 | |
|---|---|
userPrivateKeySecretVersion |
必需。要用作 Git 操作的 SSH 私钥的 Secret Manager 密文版本的名称。必须采用 |
hostPublicKey |
必需。用于验证远程 Git 主机身份的 SSH 公钥的内容。 |
WorkspaceCompilationOverrides
| JSON 表示法 |
|---|
{ "defaultDatabase": string, "schemaSuffix": string, "tablePrefix": string } |
| 字段 | |
|---|---|
defaultDatabase |
可选。默认数据库(Google Cloud 项目 ID)。 |
schemaSuffix |
可选。应附加到所有架构(BigQuery 数据集 ID)名称的后缀。 |
tablePrefix |
可选。应附加到所有表名称的前缀。 |
LabelsEntry
| JSON 表示法 |
|---|
{ "key": string, "value": string } |
| 字段 | |
|---|---|
key |
|
value |
|
DataEncryptionState
| JSON 表示法 |
|---|
{ "kmsKeyVersionName": string } |
| 字段 | |
|---|---|
kmsKeyVersionName |
必需。用于加密资源数据的 KMS 密钥版本名称。 |
TokenStatus
身份验证令牌的状态。
| 枚举 | |
|---|---|
TOKEN_STATUS_UNSPECIFIED |
默认值。此值未使用。 |
NOT_FOUND |
在 Secret Manager 中找不到令牌(或者 Dataform 服务账号无权访问该令牌)。 |
INVALID |
该令牌无法用于针对 Git 远程服务器进行身份验证。 |
VALID |
令牌已成功用于针对 Git 远程服务器进行身份验证。 |
工具注释
工具注释会发送给 MCP 客户端,用于描述指定工具的基本风险。大多数客户端会将这些提示视为不受信任的,但它们可用于确定何时向用户发送确认提示。
除了标题字符串之外,还定义了以下布尔值提示:
readOnlyHint:如果为 true,则工具不会修改其环境。默认值:false。destructiveHint:如果为 true,则工具可以执行破坏性操作。如果为 false,则该工具只能执行添加操作。默认值:true。idempotentHint:如果为 true,则使用相同实参重复调用该工具不会对其环境产生任何额外影响。默认值:false。openWorldHint:如果为 true,则工具可以与外部实体的“开放世界”进行交互。如果为 false,则该工具只能与内部实体互动。例如,网络搜索工具是开放世界工具,而内存工具不是开放世界工具。
破坏性提示:❌ | 等幂性提示:❌ | 只读提示:❌ | 开放世界提示:❌