> ## Documentation Index
> Fetch the complete documentation index at: https://docs.squarecloud.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Permisos y seguridad del MCP

> Cómo los scopes y las claves de API restringidas deciden lo que un cliente de IA puede hacer en el servidor MCP de Square Cloud, cómo las eliminaciones y restauraciones conservan un snapshot de seguridad, y el registro de actividad.

Cada solicitud al servidor MCP lleva una clave: la que recibió Claude o ChatGPT cuando lo autorizaste, o una [clave de API](https://docs.squarecloud.app/es/mcp/connect.md#crear-una-clave-de-api) que creaste. La clave necesita el scope `mcp` para conectarse, y sus demás scopes deciden qué [herramientas](https://docs.squarecloud.app/es/mcp/tools.md) ve el cliente. Una herramienta fuera de los scopes de la clave no aparece en la lista, y llamarla responde como una herramienta desconocida.

## Scopes

| Scope | Herramientas que habilita |
| - | - |
| `mcp` | Necesario para conectarse. Por sí solo da las herramientas que no necesitan ningún otro scope: `get_platform_knowledge`, `search_help_center`, `list_help_center`, `get_platform_status` y `get_discord_status`. |
| `apps:read` | `list_applications`, `get_application_status`, `get_all_applications_status`, `get_application_logs`, `get_deployments`, `get_metrics_history` (aplicaciones), `list_account_domains`, `list_dns_records`, `get_network_analytics`, `get_network_errors`, `get_network_performance`, `get_network_logs` |
| `apps:control` | `start_application`, `stop_application`, `restart_application` |
| `apps:write` | `create_application`, `upload_application`, `purge_network_cache`, `set_custom_domain`, `delete_application` |
| `files:read` | `list_files`, `read_file`, `search_files` |
| `files:write` | `create_file`, `edit_file`, `patch_file`, `rename_file`, `delete_file`, `edit_config_file`, `commit_application` |
| `envs:read` | `list_env_vars` |
| `envs:write` | `set_env_vars`, y con `databases:credentials`: `connect_database`, `rotate_database_credentials` y `create_database` con `connect_to_app` |
| `snapshots:read` | `list_snapshots` |
| `snapshots:write` | `create_snapshot`, `restore_snapshot`, y `commit_application` con `snapshot` |
| `databases:read` | `list_databases`, `get_metrics_history` (bases de datos) |
| `databases:write` | `create_database`, `start_database`, `stop_database`, `update_database`, `delete_database` |
| `databases:credentials` | Con `envs:write`: `connect_database`, `rotate_database_credentials` y `create_database` con `connect_to_app` |
| `workspaces:manage` | `list_workspaces` |

Algunas llamadas comprueban un scope a partir de sus argumentos. `get_metrics_history` necesita `apps:read` para una aplicación y `databases:read` para una base de datos. `create_database` con `connect_to_app` también necesita `databases:credentials` y `envs:write`, `set_env_vars` con `restart` también necesita `apps:control`, y `commit_application` con `snapshot` también necesita `snapshots:write`. Sin el scope necesario, esa llamada responde `MISSING_SCOPE` y no se ejecuta nada.

Claude y ChatGPT piden todos los scopes anteriores. En la página de consentimiento de Square Cloud puedes desmarcar cualquiera de ellos excepto `mcp`, pero nunca añadir uno. Una conexión nunca recibe `account:read`, `apps:deploy`, `ai:chat` ni los scopes de Blob Storage, porque ninguna herramienta MCP los usa.

> [!WARNING]
>
> Algunos scopes llegan más lejos de lo que sugiere su nombre. `files:write` cambia el código que ejecuta tu aplicación, `envs:write` cambia su configuración y sus secretos, y `databases:credentials` rota las contraseñas de las bases de datos. Da a un cliente solo lo que necesita: para acceso de solo lectura, usa `mcp` con los scopes `:read`.

## Claves restringidas a aplicaciones y bases de datos

Una [clave de API](https://docs.squarecloud.app/es/api-reference/authentication.md#restringir-una-clave-a-recursos) se puede limitar a algunas aplicaciones y bases de datos. En el MCP, una clave así:

* **Solo llega a esos recursos.** Una llamada que nombra cualquier otra aplicación o base de datos responde `RESOURCE_NOT_ALLOWED` antes de que se ejecute nada, y `list_applications` y `list_databases` devuelven solo los recursos de la clave.
* **Pierde las herramientas de toda la cuenta:** `get_all_applications_status`, `list_account_domains`, `list_workspaces`, `create_application`, `upload_application`, `create_database`, `connect_database` y `rotate_database_credentials` (una rotación actualiza todas las aplicaciones que usan la base de datos).
* **Indica su objetivo:** `list_snapshots` y `restore_snapshot` necesitan la aplicación o la base de datos, ya que la vista general de la cuenta cubre recursos fuera de la clave.

Las conexiones de Claude y ChatGPT cubren toda la cuenta. Para limitar un cliente de IA a algunas aplicaciones, conéctalo con una clave de API restringida.

## Cada cambio se ejecuta al instante

Cada herramienta actúa ya en la primera llamada, incluso para eliminar una aplicación o una base de datos y restaurar un snapshot. Square Cloud no te pregunta antes: cuándo llamar a una herramienta lo decide tu cliente de IA. Cada herramienta le indica al cliente si solo lee o si puede destruir algo, y la mayoría de los clientes piden tu permiso antes de una herramienta destructiva: mantén activado ese aviso.

## Eliminaciones y restauraciones

`delete_application`, `delete_database` y `restore_snapshot` no se pueden deshacer, así que Square Cloud toma un snapshot de seguridad de la aplicación o de la base de datos antes de actuar, salvo que exista uno de los últimos minutos. El campo `safety_snapshot` del resultado indica cuál fue el caso:

| `status` | Significado |
| - | - |
| `created` | Se tomó un snapshot de seguridad. |
| `recent` | Ya existía un snapshot de los últimos minutos. |
| `none` | No se pudo tomar ningún snapshot, y la acción se ejecutó de todos modos. `reason` es `daily_limit` cuando se agotó el límite diario de snapshots de tu plan, o `failed`. |

Mientras el snapshot todavía se está generando, no se ejecuta nada: la llamada responde `SNAPSHOT_NOT_READY` y el cliente lo intenta de nuevo con los mismos argumentos en unos 2 minutos.

El snapshot de seguridad cuenta para el límite diario de snapshots de tu plan. Después de una eliminación, queda en el dashboard, listo para descargarlo y subirlo como una aplicación nueva: `restore_snapshot` solo restaura aplicaciones y bases de datos que todavía existen.

## Secretos

* `list_env_vars` devuelve solo los nombres de las variables y, de una URL de conexión, solo su esquema y su host.
* Las herramientas de archivos nunca leen, escriben ni eliminan archivos `.env` (tampoco `*.env`, `.env-*` ni `.envrc`; una plantilla como `.env.example` sí se puede leer) y nunca leen claves privadas ni certificados (`.pem`, `.key`, `.p12`, `.pfx`, `.ppk`, `.jks` y claves SSH como `id_rsa`).
* Los secretos que se reconocen en los logs de las aplicaciones se enmascaran.
* Los enlaces de descarga de snapshots y certificados nunca se envían.

> [!NOTE]
>
> Los logs y los archivos de tus aplicaciones son contenido que lee el modelo, y el texto que contienen podría intentar dirigirlo. Revisa lo que propone el cliente antes de permitirlo.

## Registro de actividad

Los cambios hechos a través del MCP aparecen en tu [registro de actividad](https://squarecloud.app/es/dashboard/activity) (planes Standard y superiores) con **MCP** como origen, bajo la misma acción que en el dashboard: un reinicio, una subida de archivos, un cambio en una variable de entorno. Las lecturas no se registran. Autorizar a Claude o ChatGPT aparece como una autorización de cliente.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.