# Dataform MCP
> Google Cloud managed MCP server for Dataform. Exact tool names and accessible operations depend on the published server reference and configured Google Cloud permissions.
Canonical: https://www.mcpfolio.com/servers/google-cloud-dataform
Last updated: 2026-10-28
## Catalog record

- Publisher: Google Cloud
- Categories: productivity, database, search, version-control, communication, cloud-service

## Website

https://docs.cloud.google.com/dataform/docs/reference/mcp

## Transports

Streamable HTTP

## Authentication

Google Cloud authentication: OAuth 2.0 using Application Default Credentials (ADC) in supported Google clients, or a client OAuth ID/secret or bearer token in compatible third-party clients. The principal needs mcp.tools.call plus the underlying product permissions; API key authentication is only available for services that explicitly support it.

## Tools

- **list_repositories**: 列出指定 Google Cloud 雲端專案和位置中的 Dataform 存放區。 parent 參數值的格式必須為 projects/{project_id}/locations/{location} 。
- **create_repository**: 在指定的 Google Cloud 雲端專案和位置中，建立新的 Dataform 存放區。 這個工具會建立所有其他轉換資產 (例如編譯結果和工作流程設定) 所需的根資源。您必須先建立存放區，才能使用任何其他 Dataform MCP 工具。啟用這項工具是設定 Dataform 專案的第一步。 parent 參數值的格式必須為 projects/{project_id}/locations/{location} 。 repository_id 參數值是存放區要使用的 ID。 如要在新存放區中保留未設定的 strictActAsChecks 參數，請省略該參數。請注意，新專案預設會強制執行嚴格的「以…身分執行」檢查，因此在這個存放區中執行工作流程時，需要使用自訂服務帳戶。
- **commit_repository_changes**: 套用 Git 提交，記錄 Dataform 存放區中的檔案狀態。 這項工具主要用於管理直接位於存放區中的單一檔案資產，例如筆記本或已儲存的查詢。在需要工作區的典型管道工作流程中，不會使用這項工具。 請勿在連線至遠端 Git 主機的存放區中使用這項工具。如要驗證，請使用 get_repository 工具。如果存在 git_remote_settings 欄位，表示存放區已連線至遠端主機，您必須改用 commit_workspace_changes 等工作區工具。 這項提交動作會在存放區的內部 Git 記錄中建立永久項目。 name 參數值的格式必須為 projects/{project_id}/locations/{location}/repositories/{repository} 。
- **read_repository_file**: 傳回 Dataform 存放區內檔案的內容。 這個工具不適用於標準管道開發作業。這個介面適用於直接與存放區互動，通常用於管理單一檔案資產，例如筆記本或已儲存的查詢。 請勿在連線至遠端 Git 主機的存放區中使用這項工具。如要驗證，請使用 get_repository 工具。如果存在 git_remote_settings 欄位，表示存放區已連線至遠端主機，您必須改用 read_file 工具從工作區讀取檔案。 name 參數值是指存放區，且格式必須為 projects/{project_id}/locations/{location}/repositories/{repository} 。 path 參數值必須相對於存放區根目錄。請勿使用目錄遍歷，例如 .. 。使用 query_repository_directory_contents 工具取得有效檔案路徑。
- **query_repository_directory_contents**: 傳回指定 Dataform 存放區目錄的內容。 這項工具主要用於直接在存放區中列出及管理單一檔案資產。 請勿在連線至遠端 Git 主機的存放區中使用這項工具。如要驗證，請使用 get_repository 工具。如果存在 git_remote_settings 欄位，表示存放區已連線至遠端主機，您必須改用 query_directory_contents 工具列出工作區目錄。 name 參數值會以 projects/{project_id}/locations/{location}/repositories/{repository} 格式參照存放區。 path 參數值必須相對於存放區根目錄。請勿使用目錄遍歷，例如 .. 。如果留空，系統會使用存放區根目錄。
- **list_workflow_configs**: 列出指定 Dataform 存放區中的工作流程設定。 parent 參數值的格式必須為 projects/{project_id}/locations/{location}/repositories/{repository} 。
- **get_workflow_config**: 擷取單一 Dataform 工作流程設定。 name 參數值的格式必須為 projects/{project_id}/locations/{location}/repositories/{repository}/workflowConfigs/{workflow_config} 。
- **create_workflow_config**: 在指定的 Dataform 存放區中建立新的工作流程設定。 parent 參數值的格式必須為 projects/{project_id}/locations/{location}/repositories/{repository} 。 workflow_config_id 是工作流程設定的 ID。 工作流程設定會將 ReleaseConfig 與時間表和身分配對。 ReleaseConfig 會決定要編譯的程式碼，而這項工具會決定該程式碼的執行時間和執行程式碼的服務帳戶。 事前準備：您必須先使用 create_release_config 工具建立 ReleaseConfig 。您必須提供 workflow_config.release_config 參數值，否則要求會失敗。 透過這項工作流程設定建立的工作流程調用作業，會以自訂服務帳戶執行。如要指定這個服務帳戶，請設定 invocationConfig.serviceAccount 參數值。如果省略此欄位，系統會改用存放區的 service_account 。服務帳戶不得為預設的 Dataform 服務代理程式。服務帳戶必須具備執行工作流程的必要權限，且使用者必須獲得授權，才能以所選帳戶身分執行作業。這項授權通常是透過「服務帳戶使用者」( roles/iam.serviceAccountUser ) IAM 角色授予，可授予服務帳戶本身或包含該服務帳戶的專案。
- **update_workflow_config**: 更新現有 Dataform 工作流程設定的屬性，例如執行排程 (cron)、相關聯的發布版本設定或叫用覆寫。 修改 cron_schedule 後，所有日後排定的執行作業都會立即套用變更。 name 參數值的格式必須為 projects/{project_id}/locations/{location}/repositories/{repository}/workflowConfigs/{workflow_config} 。 每次更新都必須提供 workflow_config.release_config 參數值。使用 get_workflow_config 工具讀取目前的工作流程設定，並在更新要求中加入其 release_config 值。 透過這項工作流程設定建立的工作流程調用作業，會以自訂服務帳戶執行。如要指定這個服務帳戶，請設定 invocationConfig.serviceAccount 參數值。如果省略此欄位，系統會改用存放區的 service_account 。服務帳戶不得為預設的 Dataform 服務代理程式。服務帳戶必須具備執行工作流程的必要權限，且使用者必須獲得授權，才能以所選服務帳戶的身分執行作業。這項授權通常是透過「服務帳戶使用者」( roles/iam.serviceAccountUser ) IAM 角色授予，可授予服務帳戶本身或包含該服務帳戶的專案。
- **list_release_configs**: 列出指定 Dataform 存放區中的版本設定。 parent 參數值的格式必須為 projects/{project_id}/locations/{location}/repositories/{repository} 。
- **get_release_config**: 擷取單一 Dataform 發布版本設定。 name 參數值的格式必須為 projects/{project_id}/locations/{location}/repositories/{repository}/releaseConfigs/{release_config} 。
- **create_release_config**: 在指定的 Dataform 存放區中建立新的發布設定。 parent 參數值的格式必須為 projects/{project_id}/locations/{location}/repositories/{repository} 。 release_config_id 是使用者定義的版本設定 ID。如果使用者未指定 ID，請根據要求，使用小寫英文字母、數字和連字號，產生簡短的描述性 ID。 如果是 Google 代管的存放區，請省略 release_config.cron_schedule 參數值。如要驗證，請使用 get_repository 工具。如果缺少 git_remote_settings 欄位，存放區會由 Google 代管。如要排定管道執行時間，請使用 create_workflow_config 工具設定時間表。
- **update_release_config**: 更新現有的 Dataform 版本設定，做為自動編譯程式碼的範本。 更新 git_commitish 等欄位會影響日後編譯結果的產生方式，但不會追溯變更現有的 CompilationResult 資產。 更新由 Google 代管的存放區時，請省略 release_config.cron_schedule 參數值。如要驗證，請使用 get_repository 工具。如果缺少 git_remote_settings 欄位，存放區會由 Google 代管。如要排定管道，請使用 create_workflow_config 或 update_workflow_config 工具設定或更新排程。 name 參數值的格式必須為 projects/{project_id}/locations/{location}/repositories/{repository}/releaseConfigs/{release_config} 。
- **create_compilation_result**: 在指定的 Google Cloud 雲端專案和位置中，建立新的 Dataform 編譯結果。 這項工具會將 .sqlx 檔案編譯為可執行的 SQL。代理程式需要知道，除非觸發新的編譯，否則後續的程式碼變更不會反映在這個結果中。 parent 參數值的格式必須為 projects/{project_id}/locations/{location}/repositories/{repository} 。 代理程式可以檢查 CompilationResultAction 資源，驗證編譯後的 SQL，並視需要使用 BigQuery 工具進行模擬測試。 使用 create_workflow_invocation 工具觸發手動工作流程調用前，必須先取得有效的編譯結果。 必要條件：請先使用 create_repository 工具建立存放區，再呼叫 create_compilation_result 工具。
- **list_workflow_invocations**: 列出指定 Dataform 存放區中的工作流程叫用。 parent 參數值的格式必須為 projects/{project_id}/locations/{location}/repositories/{repository} 。
- **create_workflow_invocation**: 在指定的 Dataform 存放區中，建立新的工作流程叫用。 parent 參數值的格式必須為 projects/{project_id}/locations/{location}/repositories/{repository} 。 compilation_result 或 workflow_config 參數值為必填項。 如果使用 compilation_result ，參數值必須採用 projects/{project_id}/locations/{location}/repositories/{repository}/compilationResults/{compilation_result} 格式。 如果使用 workflow_config ，參數值必須採用 projects/{project_id}/locations/{location}/repositories/{repository}/workflowConfigs/{workflow_config} 格式。 先決條件：如要觸發叫用，請先使用 create_compilation_result 工具建立 compilation_result ，或使用 create_workflow_config 工具建立 workflow_config 。您無法直接從原始存放區程式碼觸發叫用。 工作流程呼叫會以服務帳戶執行，該帳戶取決於編譯來源： 如果使用 compilation_result ，請設定 invocationConfig.serviceAccount 參數值。如果省略這個值，系統會使用存放區的預設 service_account 。 如果使用 workflow_config ，請勿設定 invocationConfig 參數。系統會自動以該工作流程設定中設定的服務帳戶執行呼叫。 服務帳戶不得為預設的 Dataform 服務代理程式。服務帳戶必須具備執行工作流程的必要權限，且使用者必須獲得授權，才能以所選服務帳戶的身分執行作業。這項授權通常是透過「服務帳戶使用者」角色 ( roles/iam.serviceAccountUser ) 授予，可授予服務帳戶本身或包含該帳戶的專案。
- **cancel_workflow_invocation**: 要求安全終止正在執行的 Dataform 工作流程叫用。 這項工具會將取消信號傳送至正在執行的工作流程。不過，如果工作流程中已完成任何 BigQuery 工作、資料表建立作業或斷言，系統不會還原這些項目。 name 參數值的格式必須為 projects/{project_id}/locations/{location}/repositories/{repository}/workflowInvocations/{workflow_invocation} 。
- **get_compilation_result**: 擷取單一 Dataform 編譯結果。 name 參數值的格式必須為 projects/{project_id}/locations/{location}/repositories/{repository}/compilationResults/{compilation_result} 。
- **query_compilation_actions**: 傳回指定 Dataform 編譯結果的編譯結果動作。 name 參數值的格式必須為 projects/{project_id}/locations/{location}/repositories/{repository}/compilationResults/{compilation_result} 。
- **query_workflow_invocation_actions**: 傳回特定 Dataform 工作流程叫用的工作流程叫用動作。 這些動作代表構成工作流程的個別 BigQuery 工作、資料表建立作業或斷言。 name 參數值的格式必須為 projects/{project_id}/locations/{location}/repositories/{repository}/workflowInvocations/{workflow_invocation} 。
- **get_workflow_invocation**: 擷取單一 Dataform 工作流程叫用。 name 參數值的格式必須為 projects/{project_id}/locations/{location}/repositories/{repository}/workflowInvocations/{workflow_invocation} 。
- **list_workspaces**: 列出指定 Dataform 存放區中的開發工作區。 使用這項工具探索現有工作區，然後再執行檔案作業 (使用 read_file 或 write_file 等工具) 或提交程式碼 (使用 commit_workspace_changes 等工具)。 parent 參數值的格式必須為 projects/{project_id}/locations/{location}/repositories/{repository} 。
- **get_workspace**: 擷取單一 Dataform 開發工作區。 name 參數值的格式必須為 projects/{project_id}/locations/{location}/repositories/{repository}/workspaces/{workspace} 。 如果不知道確切的工作區名稱，請使用 list_workspaces 工具尋找。
- **create_workspace**: 在指定的 Dataform 存放區中建立新的開發工作區。 工作區是存放區的獨立可編輯結帳版本。當您需要跨多個檔案撰寫或修訂管道程式碼，並在提交前驗證程式碼時，請使用工作區。使用 write_file 和 remove_file 工具編輯工作區中的檔案，使用 commit_workspace_changes 工具記錄結果，並使用 push_git_commits 工具將已提交的變更發布至存放區。 請勿使用 commit_repository_changes 工具開發標準管道。該工具會直接寫入存放區，僅適用於筆記本或已儲存的查詢等單一檔案資產，且無法用於連線至遠端 Git 主機的存放區。 必要條件：必須有父項存放區。 parent 參數值的格式必須為 projects/{project_id}/locations/{location}/repositories/{repository} 。 workspace_id 參數值是工作區要使用的 ID。 workspace 參數值會保留要建立的工作區。
- **query_directory_contents**: 傳回 Dataform 工作區中指定目錄的內容。 請先使用這項工具探索有效的檔案路徑，再呼叫 read_file 或 write_file 工具。 workspace 參數值的格式必須為 projects/{project_id}/locations/{location}/repositories/{repository}/workspaces/{workspace} 。 path 參數值是從工作區根目錄到目錄的相對路徑。請勿使用目錄遍歷，例如 .. 。如果省略，系統會使用工作區根目錄。
- **search_files**: 在 Dataform 工作區中尋找符合搜尋篩選器的檔案和目錄。 在大型存放區中依名稱或副檔名尋找檔案時，請使用這項工具，而非以 query_directory_contents 工具遞迴列出目錄。 workspace 參數值的格式必須為 projects/{project_id}/locations/{location}/repositories/{repository}/workspaces/{workspace} 。 filter 參數值會限制結果。篩選功能僅支援 path 欄位 (例如 path="*.sqlx" 或 path="definitions/model.sqlx" )。
- **read_file**: 傳回 Dataform 工作區中檔案的內容，包括未提交的變更。 使用這項工具讀取工作區的 workflow_settings.yaml 檔案，其中包含管道的編譯設定，例如預設 BigQuery 資料集、預設位置和 Dataform Core 版本。這個檔案位於管道目錄的根目錄，不一定是工作區根目錄，因為存放區可以在子目錄中保存多個管道。使用 search_files 工具找出檔案。 如要直接從存放區讀取已提交的檔案，而不使用工作區，請改用 read_repository_file 工具。請注意， read_repository_file 僅適用於未連線至遠端 Git 主機的存放區。 workspace 參數值的格式必須為 projects/{project_id}/locations/{location}/repositories/{repository}/workspaces/{workspace} 。 path 參數值是檔案相對於工作區根目錄的路徑。請勿使用目錄遍歷，例如 .. 。您可以使用 query_directory_contents 或 search_files 工具取得有效路徑。 revision 參數值可選取檔案的特定 Git 修訂版本。如果省略，系統會傳回檔案目前未提交的狀態。
- **write_file**: 在 Dataform 工作區中寫入檔案內容，如果檔案不存在，則會建立檔案。 提供的 contents 參數值會取代整個檔案，因此請先使用 read_file 工具讀取目前的內容，再進行部分編輯。在呼叫 commit_workspace_changes 工具前，變更會維持未提交狀態。 workspace 參數值的格式必須為 projects/{project_id}/locations/{location}/repositories/{repository}/workspaces/{workspace} 。 path 參數值是檔案相對於工作區根目錄的路徑。請勿使用目錄遍歷，例如 .. 。 contents 參數值必須是包含檔案內容的 Base64 編碼字串。
- **remove_file**: 刪除 Dataform 工作區中的檔案。 在呼叫 commit_workspace_changes 工具之前，系統不會實際刪除資料。 workspace 參數值的格式必須為 projects/{project_id}/locations/{location}/repositories/{repository}/workspaces/{workspace} 。 path 參數值是檔案相對於工作區根目錄的路徑。請勿使用目錄遍歷，例如 .. 。您可以使用 query_directory_contents 或 search_files 工具取得有效檔案路徑。
- **make_directory**: 在 Dataform 工作區中建立目錄，包括任何缺少的父項目錄。 workspace 參數值的格式必須為 projects/{project_id}/locations/{location}/repositories/{repository}/workspaces/{workspace} 。 path 參數值是從工作區根目錄到目錄的相對路徑。請勿使用目錄遍歷，例如 .. 。
- **commit_workspace_changes**: 在 Dataform 工作區中，記錄未提交變更的 Git 提交。 在透過 push_git_commits 工具發布之前，提交內容會保留在工作區的本機。 根據預設，系統會提交所有未提交的變更。如要只提交部分檔案，請提供 paths 參數值。 name 參數值的格式必須為 projects/{project_id}/locations/{location}/repositories/{repository}/workspaces/{workspace} 。 author 參數值會識別為提交記錄的 Git 作者。 author.name 和 author.email_address 都是必要欄位。提供可識別使用者身分的值，代表該使用者進行提交。請勿使用預留位置，因為這些位置會寫入 Git 記錄。 commit_message 參數值是提交的訊息。
- **push_git_commits**: 將 Dataform 工作區的已提交變更推送至存放區的 Git 遠端。 必要條件：您必須先使用 commit_workspace_changes 工具提交工作區編輯內容，才能推送。未提交的編輯內容會保留在本機，不會推送。 如果您打算使用 create_release_config 工具，請務必先推送提交內容。發布版本設定會針對 Git 遠端存放區解析 git_commitish ，因此只有本機工作區中的分支版本或修訂版本會對其隱藏。 name 參數值的格式必須為 projects/{project_id}/locations/{location}/repositories/{repository}/workspaces/{workspace} 。 remote_branch 參數值是要推送至的遠端分支。如果省略，啟用分支版本管理功能的工作區會推送至目前已簽出的分支版本，其他工作區則會推送至存放區設定的預設分支版本。
- **get_repository**: 擷取單一 Dataform 存放區，包括其 Git 遠端設定、工作區編譯覆寫和預設服務帳戶。 使用這項工具檢查 git_remote_settings 欄位，判斷如何與存放區互動。如果存在 git_remote_settings 欄位，表示存放區已連線至遠端 Git 主機，因此您必須使用工作區工具開發管道，例如 create_workspace 或 commit_workspace_changes 。如果缺少這個欄位，存放區會由 Google 代管。在這種情況下，您仍可使用工作區開發管道。除非您要管理單一檔案資產，否則不建議使用 commit_repository_changes 等直接存放區工具。 name 參數值的格式必須為 projects/{project_id}/locations/{location}/repositories/{repository} 。 如果不知道確切的存放區名稱，請使用 list_repositories 工具尋找。
- **update_repository**: 更新現有 Dataform 存放區的屬性，例如 Git 遠端設定、工作區編譯覆寫或預設服務帳戶。 必要條件：使用 get_repository 工具讀取目前的存放區狀態，再進行更新。 如果省略 update_mask 參數值，所有可變動的欄位都會覆寫為 repository 參數值中提供的值。如要只修改特定欄位，而不清除其他欄位，請在 update_mask 中列出這些欄位。 repository.name 參數值的格式必須為 projects/{project_id}/locations/{location}/repositories/{repository} 。
- **create_folder**: 在指定的 Google Cloud 雲端專案和位置中，建立新的 Dataform 資料夾。 資料夾會將 Dataform 存放區整理成階層結構。建立資料夾不會將任何存放區移入其中。如要將存放區放在資料夾中，請在使用 create_repository 工具時設定 containing_folder 參數值。 請勿嘗試使用 update_repository 工具將現有存放區移至資料夾。存放區建立完成後，就無法使用 MCP 工具修改 containing_folder 欄位。 parent 參數值的格式必須為 projects/{project_id}/locations/{location} 。 folder.display_name 參數值為必要項目，用於指定資料夾的易記名稱。

## Sources

- [official_server_catalog](https://docs.cloud.google.com/mcp/supported-products)
- [official_setup_guide](https://docs.cloud.google.com/mcp/configure-mcp-ai-application)
- [official_authentication_guide](https://docs.cloud.google.com/mcp/authenticate-mcp)
- [official_source](https://docs.cloud.google.com/dataform/docs/reference/mcp)
- [official_source](https://docs.cloud.google.com/dataform/docs/use-dataform-mcp)

## Setup

Use the interactive setup panel on [the detail page](https://www.mcpfolio.com/servers/google-cloud-dataform) to view instructions for each supported client.