MCP Reference: dataform.googleapis.com

El servidor de MCP de Dataform proporciona herramientas para interactuar con Dataform.

Un servidor del Protocolo de contexto del modelo (MCP) actúa como proxy entre un servicio externo que proporciona contexto, datos o capacidades a un modelo de lenguaje grande (LLM) o una aplicación de IA. Los servidores de MCP conectan las aplicaciones de IA a sistemas externos, como bases de datos y servicios web, y traducen sus respuestas a un formato que la aplicación de IA pueda comprender.

Configuración del servidor

Antes de usar los servidores de MCP, debes habilitarlos y configurar la autenticación. Para obtener más información sobre el uso de los servidores de MCP remotos de Google y Google Cloud, consulta la Descripción general de los servidores de MCP de Google Cloud.

Extremos del servidor

Un extremo de servicio de MCP es la dirección de red y la interfaz de comunicación (por lo general, una URL) del servidor de MCP que usa una aplicación de IA (el host para el cliente de MCP) para establecer una conexión segura y estandarizada. Es el punto de contacto para que el LLM solicite contexto, llame a una herramienta o acceda a un recurso. Los extremos de MCP de Google pueden ser globales o regionales.

El servidor de MCP de la API de Dataform tiene el siguiente extremo de MCP global:

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

Herramientas de MCP

Una herramienta de MCP es una función o capacidad ejecutable que un servidor de MCP expone a un LLM o a una aplicación de IA para realizar una acción en el mundo real.

Herramientas

El servidor de MCP de dataform.googleapis.com tiene las siguientes herramientas:

Herramientas de MCP
list_repositories

Enumera los repositorios de Dataform en una ubicación y un proyecto de Google Cloud determinados.

El valor del parámetro parent debe tener el formato projects/{project_id}/locations/{location}.

create_repository

Crea un repositorio de Dataform nuevo en un proyecto y una ubicación determinados de Google Cloud.

Esta herramienta establece el recurso raíz necesario para todos los demás recursos de transformación, como los resultados de la compilación y la configuración del flujo de trabajo. Se debe crear un repositorio antes de poder usar cualquier otra herramienta de MCP de Dataform. Habilitar esta herramienta es el primer paso para configurar un proyecto de Dataform.

El valor del parámetro parent debe tener el formato projects/{project_id}/locations/{location}.

El valor del parámetro repository_id es el ID que se usará para el repositorio.

Omite el parámetro strictActAsChecks para dejarlo sin configurar en un repositorio nuevo. Ten en cuenta que, de forma predeterminada, se aplican verificaciones estrictas de act-as para los proyectos nuevos, por lo que ejecutar un flujo de trabajo en este repositorio requiere una cuenta de servicio personalizada.

commit_repository_changes

Aplica una confirmación de Git para registrar el estado de los archivos dentro de un repositorio de Dataform.

Esta herramienta está diseñada principalmente para administrar recursos de un solo archivo, como notebooks o consultas guardadas, que residen directamente en el repositorio. Esta herramienta no se usa en los flujos de trabajo típicos de canalizaciones que requieren espacios de trabajo.

No uses esta herramienta en repositorios conectados a un host de Git remoto. Para verificarlo, usa la herramienta de get_repository. Si el campo git_remote_settings está presente, el repositorio está conectado a un host remoto y debes usar herramientas basadas en el espacio de trabajo, como commit_workspace_changes.

Esta acción de confirmación crea una entrada permanente en el historial interno de Git del repositorio.

El valor del parámetro name debe tener el formato projects/{project_id}/locations/{location}/repositories/{repository}.

read_repository_file

Devuelve el contenido de un archivo que se encuentra dentro de un repositorio de Dataform.

Esta herramienta no es para el desarrollo de canalizaciones estándar. Está diseñado para la interacción directa con el repositorio, por lo general, para administrar recursos de un solo archivo, como notebooks o consultas guardadas.

No uses esta herramienta en repositorios conectados a un host de Git remoto. Para verificarlo, usa la herramienta de get_repository. Si el campo git_remote_settings está presente, el repositorio está conectado a un host remoto y debes usar la herramienta read_file para leer el archivo desde un espacio de trabajo.

El valor del parámetro name hace referencia al repositorio y debe tener el formato projects/{project_id}/locations/{location}/repositories/{repository}.

El valor del parámetro path debe ser relativo a la raíz del repositorio. No uses la exploración de directorios, como ... Usa la herramienta query_repository_directory_contents para obtener rutas de acceso de archivos válidas.

query_repository_directory_contents

Devuelve el contenido de un directorio de repositorio de Dataform determinado.

Esta herramienta se usa principalmente para enumerar y administrar activos de un solo archivo directamente en el repositorio.

No uses esta herramienta en repositorios conectados a un host de Git remoto. Para verificarlo, usa la herramienta de get_repository. Si el campo git_remote_settings está presente, el repositorio está conectado a un host remoto y debes usar la herramienta query_directory_contents para enumerar un directorio del espacio de trabajo.

El valor del parámetro name hace referencia al repositorio en el formato projects/{project_id}/locations/{location}/repositories/{repository}.

El valor del parámetro path debe ser relativo a la raíz del repositorio. No uses la exploración de directorios, como ... Si se deja vacío, se usa la raíz del repositorio.

list_workflow_configs

Enumera las configuraciones del flujo de trabajo en un repositorio de Dataform determinado.

El valor del parámetro parent debe tener el formato projects/{project_id}/locations/{location}/repositories/{repository}.

get_workflow_config

Recupera la configuración de un solo flujo de trabajo de Dataform.

El valor del parámetro name debe tener el formato projects/{project_id}/locations/{location}/repositories/{repository}/workflowConfigs/{workflow_config}.

create_workflow_config

Crea una configuración de flujo de trabajo nueva en un repositorio de Dataform determinado.

El valor del parámetro parent debe tener el formato projects/{project_id}/locations/{location}/repositories/{repository}.

El workflow_config_id es el ID de la configuración del flujo de trabajo.

Una configuración de flujo de trabajo vincula un ReleaseConfig con un programa y una identidad. ReleaseConfig determina qué código se compila, mientras que esta herramienta determina cuándo se ejecuta ese código y qué cuenta de servicio lo ejecuta.

Requisito previo: Primero debes crear un ReleaseConfig con la herramienta create_release_config. El valor del parámetro workflow_config.release_config es obligatorio, y la solicitud falla sin él.

Las invocaciones de flujo de trabajo creadas a partir de esta configuración se ejecutan con una cuenta de servicio personalizada. Para especificar esta cuenta de servicio, establece el valor del parámetro invocationConfig.serviceAccount. Si se omite, las invocaciones recurren al uso del service_account del repositorio. La cuenta de servicio no puede ser el agente de servicio predeterminado de Dataform. La cuenta de servicio debe tener los permisos necesarios para ejecutar el flujo de trabajo, y el usuario debe estar autorizado para actuar como la cuenta seleccionada. Por lo general, esta autorización se otorga a través del rol de IAM de Usuario de cuenta de servicio (roles/iam.serviceAccountUser), que se puede otorgar en la cuenta de servicio en sí o en el proyecto que la contiene.

update_workflow_config

Actualiza las propiedades de un parámetro de configuración de flujo de trabajo de Dataform existente, como su programa de ejecución (cron), el parámetro de configuración de lanzamiento asociado o las anulaciones de invocación.

Las modificaciones en cron_schedule entran en vigencia de inmediato para todas las ejecuciones programadas futuras.

El valor del parámetro name debe tener el formato projects/{project_id}/locations/{location}/repositories/{repository}/workflowConfigs/{workflow_config}.

El valor del parámetro workflow_config.release_config es estrictamente obligatorio para cada actualización. Usa la herramienta get_workflow_config para leer la configuración actual del flujo de trabajo y, luego, incluye su valor release_config en tu solicitud de actualización.

Las invocaciones de flujo de trabajo creadas a partir de esta configuración se ejecutan con una cuenta de servicio personalizada. Para especificar esta cuenta de servicio, establece el valor del parámetro invocationConfig.serviceAccount. Si se omite, las invocaciones recurren al uso del service_account del repositorio. La cuenta de servicio no puede ser el agente de servicio predeterminado de Dataform. La cuenta de servicio debe tener los permisos necesarios para ejecutar el flujo de trabajo, y el usuario debe estar autorizado para actuar como la cuenta de servicio seleccionada. Por lo general, esta autorización se otorga a través del rol de IAM de Usuario de cuenta de servicio (roles/iam.serviceAccountUser), que se puede otorgar en la cuenta de servicio en sí o en el proyecto que la contiene.

list_release_configs

Enumera las configuraciones de lanzamiento en un repositorio de Dataform determinado.

El valor del parámetro parent debe tener el formato projects/{project_id}/locations/{location}/repositories/{repository}.

get_release_config

Recupera una sola configuración de lanzamiento de Dataform.

El valor del parámetro name debe tener el formato projects/{project_id}/locations/{location}/repositories/{repository}/releaseConfigs/{release_config}.

create_release_config

Crea una nueva configuración de versión en un repositorio de Dataform determinado.

El valor del parámetro parent debe tener el formato projects/{project_id}/locations/{location}/repositories/{repository}.

release_config_id es el ID definido por el usuario para la configuración de la versión. Si el usuario no especifica un ID, genera uno corto y descriptivo con letras en minúscula, números y guiones según su solicitud.

Omite el valor del parámetro release_config.cron_schedule para los repositorios alojados en Google. Para verificarlo, usa la herramienta de get_repository. Si falta el campo git_remote_settings, el repositorio está alojado en Google. Para programar la canalización, establece la programación con la herramienta de create_workflow_config.

update_release_config

Actualiza una configuración de versión de Dataform existente, que sirve como plantilla para la compilación automática de código.

Las actualizaciones de campos como git_commitish cambian la forma en que se generan los resultados de compilación futuros, pero no alteran de forma retroactiva los recursos CompilationResult existentes.

Omite el valor del parámetro release_config.cron_schedule cuando actualices repositorios alojados en Google. Para verificarlo, usa la herramienta de get_repository. Si falta el campo git_remote_settings, el repositorio está alojado en Google. Para programar la canalización, configura o actualiza la programación con las herramientas create_workflow_config o update_workflow_config.

El valor del parámetro name debe tener el formato projects/{project_id}/locations/{location}/repositories/{repository}/releaseConfigs/{release_config}.

create_compilation_result

Crea un nuevo resultado de compilación de Dataform en un proyecto y una ubicación determinados de Google Cloud.

Esta herramienta compila archivos .sqlx en SQL ejecutable. Los agentes deben saber que los cambios de código posteriores no se reflejan en este resultado, a menos que se active una nueva compilación.

El valor del parámetro parent debe tener el formato projects/{project_id}/locations/{location}/repositories/{repository}.

Los agentes pueden validar el SQL compilado inspeccionando los recursos de CompilationResultAction y, posiblemente, usando una herramienta de BigQuery para una ejecución de prueba.

Se requiere un resultado de compilación válido antes de activar una invocación de flujo de trabajo manual con la herramienta create_workflow_invocation.

Requisito previo: Crea un repositorio con la herramienta create_repository antes de llamar a la herramienta create_compilation_result.

list_workflow_invocations

Enumera las invocaciones de flujo de trabajo en un repositorio de Dataform determinado.

El valor del parámetro parent debe tener el formato projects/{project_id}/locations/{location}/repositories/{repository}.

create_workflow_invocation

Crea una nueva invocación de flujo de trabajo en un repositorio de Dataform determinado.

El valor del parámetro parent debe tener el formato projects/{project_id}/locations/{location}/repositories/{repository}.

Se requiere el valor del parámetro compilation_result o workflow_config.

  • Si usas compilation_result, el valor del parámetro debe tener el formato projects/{project_id}/locations/{location}/repositories/{repository}/compilationResults/{compilation_result}.
  • Si usas workflow_config, el valor del parámetro debe tener el formato projects/{project_id}/locations/{location}/repositories/{repository}/workflowConfigs/{workflow_config}.

Requisito previo: Para activar una invocación, primero debes crear un compilation_result con la herramienta create_compilation_result o un workflow_config con la herramienta create_workflow_config. No puedes activar una invocación directamente desde el código sin procesar del repositorio.

La invocación del flujo de trabajo se ejecuta con una cuenta de servicio determinada por la fuente de compilación:

  • Si usas compilation_result, establece el valor del parámetro invocationConfig.serviceAccount. Si se omite, se usa el service_account predeterminado del repositorio.
  • Si usas workflow_config, no establezcas el parámetro invocationConfig. La invocación se ejecuta automáticamente con la cuenta de servicio configurada en esa configuración del flujo de trabajo.

La cuenta de servicio no puede ser el agente de servicio predeterminado de Dataform. La cuenta de servicio debe tener los permisos necesarios para ejecutar el flujo de trabajo, y el usuario debe estar autorizado para actuar como la cuenta de servicio seleccionada. Por lo general, esta autorización se otorga a través del rol de usuario de cuenta de servicio (roles/iam.serviceAccountUser), que se puede otorgar en la cuenta de servicio o en el proyecto que la contiene.

cancel_workflow_invocation

Solicita la finalización ordenada de una invocación de flujo de trabajo de Dataform en ejecución.

Esta herramienta envía un indicador de cancelación al flujo de trabajo en ejecución. Sin embargo, no se revertirán los trabajos individuales de BigQuery, las creaciones de tablas ni las aserciones que ya se hayan completado como parte de este flujo de trabajo.

El valor del parámetro name debe tener el formato projects/{project_id}/locations/{location}/repositories/{repository}/workflowInvocations/{workflow_invocation}.

get_compilation_result

Recupera un solo resultado de compilación de Dataform.

El valor del parámetro name debe tener el formato projects/{project_id}/locations/{location}/repositories/{repository}/compilationResults/{compilation_result}.

query_compilation_actions

Devuelve las acciones del resultado de compilación para un resultado de compilación de Dataform determinado.

El valor del parámetro name debe tener el formato projects/{project_id}/locations/{location}/repositories/{repository}/compilationResults/{compilation_result}.

query_workflow_invocation_actions

Devuelve las acciones de invocación del flujo de trabajo para una invocación de flujo de trabajo de Dataform determinada.

Estas acciones representan los trabajos individuales de BigQuery, las creaciones de tablas o las aserciones que componen el flujo de trabajo.

El valor del parámetro name debe tener el formato projects/{project_id}/locations/{location}/repositories/{repository}/workflowInvocations/{workflow_invocation}.

get_workflow_invocation

Recupera una sola invocación de flujo de trabajo de Dataform.

El valor del parámetro name debe tener el formato projects/{project_id}/locations/{location}/repositories/{repository}/workflowInvocations/{workflow_invocation}.

list_workspaces

Enumera los lugares de trabajo de desarrollo en un repositorio de Dataform determinado.

Usa esta herramienta para descubrir los espacios de trabajo existentes antes de realizar operaciones con archivos (con herramientas como read_file o write_file) o confirmar código (con una herramienta como commit_workspace_changes).

El valor del parámetro parent debe tener el formato projects/{project_id}/locations/{location}/repositories/{repository}.

get_workspace

Recupera un solo espacio de trabajo de desarrollo de Dataform.

El valor del parámetro name debe tener el formato projects/{project_id}/locations/{location}/repositories/{repository}/workspaces/{workspace}.

Si no conoces el nombre exacto del espacio de trabajo, usa la herramienta list_workspaces para encontrarlo.

create_workspace

Crea un nuevo espacio de trabajo de desarrollo en un repositorio de Dataform determinado.

Un espacio de trabajo es una copia aislada y editable del repositorio. Usa un espacio de trabajo cuando necesites crear o revisar código de canalización en varios archivos y validarlo antes de confirmarlo. Edita archivos en el espacio de trabajo con las herramientas write_file y remove_file, registra el resultado con la herramienta commit_workspace_changes y publica los cambios confirmados en el repositorio con la herramienta push_git_commits.

No uses la herramienta commit_repository_changes para el desarrollo de canalizaciones estándar. Esa herramienta escribe directamente en el repositorio, está diseñada solo para recursos de un solo archivo, como notebooks o consultas guardadas, y falla en los repositorios conectados a un host de Git remoto.

Requisito previo: Debe existir el repositorio principal.

El valor del parámetro parent debe tener el formato projects/{project_id}/locations/{location}/repositories/{repository}.

El valor del parámetro workspace_id es el ID que se usará para el espacio de trabajo.

El valor del parámetro workspace contiene el espacio de trabajo que se creará.

query_directory_contents

Devuelve el contenido de un directorio determinado dentro de un espacio de trabajo de Dataform.

Usa esta herramienta para descubrir rutas de acceso de archivos válidas antes de llamar a las herramientas read_file o write_file.

El valor del parámetro workspace debe tener el formato projects/{project_id}/locations/{location}/repositories/{repository}/workspaces/{workspace}.

El valor del parámetro path es la ruta de acceso relativa al directorio desde la raíz del espacio de trabajo. No uses la exploración de directorios, como ... Si se omite, se usa la raíz del espacio de trabajo.

search_files

Busca archivos y directorios en un espacio de trabajo de Dataform que coincidan con un filtro de búsqueda.

Usa esta herramienta en lugar de enumerar directorios de forma recursiva con la herramienta query_directory_contents cuando busques un archivo por nombre o extensión en un repositorio grande.

El valor del parámetro workspace debe tener el formato projects/{project_id}/locations/{location}/repositories/{repository}/workspaces/{workspace}.

El valor del parámetro filter restringe los resultados. El filtrado solo se admite en el campo path (por ejemplo, path="*.sqlx" o path="definitions/model.sqlx").

read_file

Devuelve el contenido de un archivo dentro de un lugar de trabajo de Dataform, incluidos los cambios no confirmados.

Usa esta herramienta para leer el archivo workflow_settings.yaml del espacio de trabajo, que contiene la configuración de compilación de la canalización, como el conjunto de datos predeterminado de BigQuery, la ubicación predeterminada y la versión principal de Dataform. Este archivo se encuentra en la raíz del directorio de la canalización, que no necesariamente es la raíz del espacio de trabajo, ya que un repositorio puede contener varias canalizaciones en subdirectorios. Ubica el archivo con la herramienta search_files.

Para leer un archivo confirmado directamente desde el repositorio sin un espacio de trabajo, usa la herramienta read_repository_file. Ten en cuenta que read_repository_file solo funciona en repositorios que no están conectados a un host remoto de Git.

El valor del parámetro workspace debe tener el formato projects/{project_id}/locations/{location}/repositories/{repository}/workspaces/{workspace}.

El valor del parámetro path es la ruta de acceso relativa al archivo desde la raíz del espacio de trabajo. No uses la transversalidad de directorios, como ... Las rutas válidas se pueden obtener con las herramientas query_directory_contents o search_files.

El valor del parámetro revision selecciona de forma opcional una revisión de Git específica del archivo. Si se omite, se devuelve el estado actual sin confirmar del archivo.

write_file

Escribe el contenido de un archivo dentro de un espacio de trabajo de Dataform y crea el archivo si no existe.

El valor del parámetro contents proporcionado reemplaza todo el archivo, por lo que debes leer el contenido actual con la herramienta read_file antes de realizar una edición parcial. Los cambios permanecen sin confirmar hasta que se llama a la herramienta commit_workspace_changes.

El valor del parámetro workspace debe tener el formato projects/{project_id}/locations/{location}/repositories/{repository}/workspaces/{workspace}.

El valor del parámetro path es la ruta de acceso relativa al archivo desde la raíz del espacio de trabajo. No uses la exploración de directorios, como ...

El valor del parámetro contents debe ser una cadena codificada en base64 que contenga el contenido del archivo.

remove_file

Borra un archivo dentro de un espacio de trabajo de Dataform.

El borrado no se confirma hasta que se llama a la herramienta commit_workspace_changes.

El valor del parámetro workspace debe tener el formato projects/{project_id}/locations/{location}/repositories/{repository}/workspaces/{workspace}.

El valor del parámetro path es la ruta de acceso relativa al archivo desde la raíz del espacio de trabajo. No uses la exploración de directorios, como ... Las rutas de acceso de archivos válidas se pueden obtener con las herramientas query_directory_contents o search_files.

make_directory

Crea un directorio dentro de un espacio de trabajo de Dataform, incluidos los directorios principales faltantes.

El valor del parámetro workspace debe tener el formato projects/{project_id}/locations/{location}/repositories/{repository}/workspaces/{workspace}.

El valor del parámetro path es la ruta de acceso relativa al directorio desde la raíz del espacio de trabajo. No uses la exploración de directorios, como ...

commit_workspace_changes

Registra una confirmación de Git para los cambios no confirmados en un espacio de trabajo de Dataform.

La confirmación permanece local en el espacio de trabajo hasta que se publica con la herramienta push_git_commits.

De forma predeterminada, se confirman todos los cambios sin confirmar. Para confirmar solo un subconjunto de archivos, proporciona el valor del parámetro paths.

El valor del parámetro name debe tener el formato projects/{project_id}/locations/{location}/repositories/{repository}/workspaces/{workspace}.

El valor del parámetro author identifica al autor de Git registrado para la confirmación. Se requieren author.name y author.email_address. Proporciona los valores que identifican al usuario en cuyo nombre se realiza la confirmación. No uses marcadores de posición, ya que se escriben en el historial de Git.

El valor del parámetro commit_message es el mensaje de la confirmación.

push_git_commits

Envía los cambios confirmados de un espacio de trabajo de Dataform al repositorio remoto de Git.

Requisito previo: Debes confirmar las ediciones del espacio de trabajo con la herramienta commit_workspace_changes antes de enviar los cambios. Las ediciones no confirmadas permanecen locales y no se envían.

Si planeas usar la herramienta create_release_config, primero debes enviar tus confirmaciones. Una configuración de versión resuelve su git_commitish en el Git remoto, por lo que una rama o una confirmación que solo existe en el espacio de trabajo local es invisible para ella.

El valor del parámetro name debe tener el formato projects/{project_id}/locations/{location}/repositories/{repository}/workspaces/{workspace}.

El valor del parámetro remote_branch es la rama remota a la que se enviará la confirmación. Si se omite, un espacio de trabajo con la administración de ramas habilitada enviará los cambios a su rama actualmente activada, y cualquier otro espacio de trabajo enviará los cambios a la rama predeterminada configurada del repositorio.

get_repository

Recupera un solo repositorio de Dataform, incluidos sus parámetros de configuración remotos de Git, las anulaciones de compilación del espacio de trabajo y la cuenta de servicio predeterminada.

Usa esta herramienta para verificar el campo git_remote_settings y determinar cómo interactuar con el repositorio. Si el campo git_remote_settings está presente, el repositorio está conectado a un host de Git remoto, lo que significa que debes usar herramientas basadas en el espacio de trabajo para el desarrollo de la canalización, como create_workspace o commit_workspace_changes. Si falta el campo, el repositorio está alojado en Google. En este caso, puedes seguir usando espacios de trabajo para el desarrollo de canalizaciones. No se recomiendan las herramientas de repositorio directo, como commit_repository_changes, a menos que administres recursos de un solo archivo.

El valor del parámetro name debe tener el formato projects/{project_id}/locations/{location}/repositories/{repository}.

Si no conoces el nombre exacto del repositorio, usa la herramienta list_repositories para encontrarlo.

update_repository

Actualiza las propiedades de un repositorio de Dataform existente, como la configuración remota de Git, las anulaciones de compilación del espacio de trabajo o la cuenta de servicio predeterminada.

Requisito previo: Usa la herramienta get_repository para leer el estado actual del repositorio antes de actualizarlo.

Si se omite el valor del parámetro update_mask, todos los campos mutables se sobrescriben con los valores proporcionados en el valor del parámetro repository. Para modificar solo campos específicos sin borrar los demás, incluye esos campos en update_mask.

El valor del parámetro repository.name debe tener el formato projects/{project_id}/locations/{location}/repositories/{repository}.

create_folder

Crea una carpeta de Dataform nueva en un proyecto y una ubicación determinados de Google Cloud.

Las carpetas organizan los repositorios de Dataform en una jerarquía. La creación de una carpeta no mueve ningún repositorio a ella. Para colocar un repositorio dentro de una carpeta, establece el valor del parámetro containing_folder cuando uses la herramienta create_repository.

No intentes mover un repositorio existente a una carpeta con la herramienta update_repository. Una vez que se crea un repositorio, su campo containing_folder no se puede modificar con las herramientas de MCP.

El valor del parámetro parent debe tener el formato projects/{project_id}/locations/{location}.

El valor del parámetro folder.display_name es obligatorio y especifica el nombre descriptivo de la carpeta.

Obtén las especificaciones de la herramienta de MCP

Para obtener las especificaciones de las herramientas de MCP para todas las herramientas en un servidor de MCP, usa el método tools/list. En el siguiente ejemplo, se muestra cómo usar curl para enumerar todas las herramientas y sus especificaciones disponibles actualmente en el servidor de MCP.

Solicitud de 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
}'