MCP Reference: dataform.googleapis.com

Dataform MCP サーバーは、Dataform を操作するためのツールを提供します。

Model Context Protocol(MCP)サーバーは、大規模言語モデル(LLM)または AI アプリケーションにコンテキスト、データ、機能を提供する外部サービスとの間のプロキシとして機能します。MCP サーバーは、AI アプリケーションをデータベースやウェブサービスなどの外部システムに接続し、そのレスポンスを AI アプリケーションが理解できる形式に変換します。

サーバーのセットアップ

使用する前に、MCP サーバーを有効にして、認証を設定する必要があります。Google と Google Cloud のリモート MCP サーバーの使用方法については、Google Cloud MCP サーバーの概要をご覧ください。

サーバー エンドポイント

MCP サービス エンドポイントは、安全で標準化された接続を確立するために AI アプリケーション(MCP クライアントのホスト)が使用する MCP サーバーのネットワーク アドレスと通信インターフェース(通常は URL)です。これは、LLM がコンテキストをリクエストしたり、ツールを呼び出したり、リソースにアクセスしたりするための接続ポイントとなります。Google MCP エンドポイントをグローバルまたはリージョンにすることができます。

Dataform API MCP サーバーには、次のグローバル MCP エンドポイントがあります。

  • https://dataform.googleapis.com/mcp

MCP ツール

MCP ツールは、現実世界でアクションを実行する目的で MCP サーバーが LLM または AI アプリケーションに対して公開する関数または実行可能な機能です。

ツール

dataform.googleapis.com MCP サーバーには、次のツールがあります。

MCP ツール
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 パラメータを省略すると、新しいリポジトリで未設定のままになります。新しいプロジェクトではデフォルトで厳格な act-as チェックが適用されるため、このリポジトリでワークフローを実行するにはカスタム サービス アカウントが必要です。

commit_repository_changes

Git commit を適用して、Dataform リポジトリ内のファイルの状態を記録します。

このツールは主に、リポジトリに直接存在するノートブックや保存済みクエリなどの単一ファイル アセットの管理を目的としています。このツールは、ワークスペースを必要とする一般的なパイプライン ワークフローでは使用されません。

リモートの Git ホストに接続されているリポジトリでは、このツールを使用しないでください。確認するには、get_repository ツールを使用します。git_remote_settings フィールドが存在する場合、リポジトリはリモートホストに接続されているため、代わりに commit_workspace_changes などのワークスペース ベースのツールを使用する必要があります。

この commit アクションにより、リポジトリの内部 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 とスケジュールと ID がペアになります。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 リソースを検査し、必要に応じて BigQuery ツールを使用してドライランを実行することで、コンパイルされた SQL を検証できます。

create_workflow_invocation ツールを使用して手動ワークフロー呼び出しをトリガーする前に、有効なコンパイル結果が必要です。

前提条件: create_compilation_result ツールを呼び出す前に、create_repository ツールを使用してリポジトリを作成します。

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(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 された変更をリポジトリに公開します。

標準パイプラインの開発には 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 コア バージョンなど、パイプラインのコンパイル設定が保持されています。このファイルは、パイプラインのディレクトリのルートにあります。リポジトリにはサブディレクトリに複数のパイプラインを保持できるため、必ずしもワークスペースのルートであるとは限りません。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 ワークスペースで commit されていない変更の Git commit を記録します。

コミットは、push_git_commits ツールで公開されるまでワークスペースのローカルに保持されます。

デフォルトでは、未 commit の変更はすべて commit されます。ファイルのサブセットのみを commit するには、paths パラメータ値を指定します。

name パラメータの値は projects/{project_id}/locations/{location}/repositories/{repository}/workspaces/{workspace} 形式にする必要があります。

author パラメータ値は、コミット用に記録された Git の作成者を識別します。author.name と author.email_address の両方が必要です。コミットが代行されたユーザーを識別する値を指定します。プレースホルダは Git の履歴に書き込まれるため、使用しないでください。

commit_message パラメータ値は commit のメッセージです。

push_git_commits

Dataform ワークスペースの commit 済み変更をリポジトリの Git リモートに push します。

前提条件: push する前に、commit_workspace_changes ツールを使用してワークスペースの編集を commit する必要があります。commit されていない編集はローカルに残り、push されません。

create_release_config ツールを使用する場合は、まずコミットを push する必要があります。リリース構成は Git リモートに対して git_commitish を解決するため、ローカル ワークスペースにのみ存在するブランチまたは commit は認識されません。

name パラメータの値は projects/{project_id}/locations/{location}/repositories/{repository}/workspaces/{workspace} 形式にする必要があります。

remote_branch パラメータ値は、プッシュ先のリモート ブランチです。省略すると、ブランチ管理が有効になっているワークスペースは現在チェックアウトされているブランチに push し、他のワークスペースはリポジトリの構成済みデフォルト ブランチに push します。

get_repository

Git リモート設定、ワークスペース コンパイルのオーバーライド、デフォルトのサービス アカウントなど、単一の Dataform リポジトリを取得します。

このツールを使用して 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 パラメータ値は必須で、フォルダのわかりやすい名前を指定します。

MCP ツールの仕様を取得する

MCP サーバー内のすべてのツールの MCP ツール仕様を取得するには、tools/list メソッドを使用します。次の例は、curl を使用して、MCP サーバー内で現在使用可能なすべてのツールとその仕様を一覧表示する方法を示しています。

Curl リクエスト
curl --location 'https://dataform.googleapis.com/mcp' \
--header 'content-type: application/json' \
--header 'accept: application/json, text/event-stream' \
--data '{
    "method": "tools/list",
    "jsonrpc": "2.0",
    "id": 1
}'