> ## 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.

# Permissions MCP et sécurité

> Comment les scopes et les clés API restreintes déterminent ce qu'un client d'IA peut faire sur le serveur MCP de Square Cloud, comment les suppressions et les restaurations conservent un snapshot de sécurité, et le fil d'activité.

Chaque requête vers le serveur MCP transporte une clé : celle que Claude ou ChatGPT a reçue lorsque vous l'avez autorisé, ou une [clé API](https://docs.squarecloud.app/fr/mcp/connect.md#créer-une-clé-api) que vous avez créée. La clé a besoin du scope `mcp` pour se connecter, et ses autres scopes déterminent les [outils](https://docs.squarecloud.app/fr/mcp/tools.md) que voit le client. Un outil hors des scopes de la clé n'est pas listé, et l'appeler répond comme pour un outil inconnu.

## Scopes

| Scope | Outils débloqués |
| - | - |
| `mcp` | Obligatoire pour se connecter. Seul, il donne accès aux outils qui ne nécessitent aucun autre scope : `get_platform_knowledge`, `search_help_center`, `list_help_center`, `get_platform_status` et `get_discord_status`. |
| `apps:read` | `list_applications`, `get_application_status`, `get_all_applications_status`, `get_application_logs`, `get_deployments`, `get_metrics_history` (applications), `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`, et avec `databases:credentials` : `connect_database`, `rotate_database_credentials` et `create_database` avec `connect_to_app` |
| `snapshots:read` | `list_snapshots` |
| `snapshots:write` | `create_snapshot`, `restore_snapshot`, et `commit_application` avec `snapshot` |
| `databases:read` | `list_databases`, `get_metrics_history` (bases de données) |
| `databases:write` | `create_database`, `start_database`, `stop_database`, `update_database`, `delete_database` |
| `databases:credentials` | Avec `envs:write` : `connect_database`, `rotate_database_credentials` et `create_database` avec `connect_to_app` |
| `workspaces:manage` | `list_workspaces` |

Certains appels vérifient un scope d'après leurs arguments. `get_metrics_history` nécessite `apps:read` pour une application et `databases:read` pour une base de données. `create_database` avec `connect_to_app` nécessite aussi `databases:credentials` et `envs:write`, `set_env_vars` avec `restart` nécessite aussi `apps:control`, et `commit_application` avec `snapshot` nécessite aussi `snapshots:write`. Sans le scope requis, cet appel répond `MISSING_SCOPE` et rien ne s'exécute.

Claude et ChatGPT demandent tous les scopes ci-dessus. Sur la page de consentement Square Cloud, vous pouvez décocher n'importe lequel sauf `mcp`, mais jamais en ajouter. Une connexion ne reçoit jamais `account:read`, `apps:deploy`, `ai:chat` ni les scopes de Blob Storage, car aucun outil MCP ne les utilise.

> [!WARNING]
>
> Certains scopes vont plus loin que leur nom ne le laisse penser. `files:write` modifie le code qu'exécute votre application, `envs:write` modifie sa configuration et ses secrets, et `databases:credentials` change les mots de passe des bases de données. Ne donnez à un client que ce dont il a besoin : pour un accès en lecture seule, utilisez `mcp` avec les scopes `:read`.

## Clés restreintes à des applications et bases de données

Une [clé API](https://docs.squarecloud.app/fr/api-reference/authentication.md#restreindre-une-clé-à-des-ressources) peut être limitée à certaines applications et bases de données. Via le MCP, une telle clé :

* **N'atteint que ces ressources.** Un appel qui désigne toute autre application ou base de données répond `RESOURCE_NOT_ALLOWED` avant toute exécution, et `list_applications` et `list_databases` ne renvoient que les ressources de la clé.
* **Perd les outils à l'échelle du compte :** `get_all_applications_status`, `list_account_domains`, `list_workspaces`, `create_application`, `upload_application`, `create_database`, `connect_database` et `rotate_database_credentials` (un renouvellement met à jour toutes les applications qui utilisent la base de données).
* **Désigne sa cible :** `list_snapshots` et `restore_snapshot` ont besoin de l'application ou de la base de données, puisque la vue d'ensemble du compte couvre des ressources hors de la clé.

Les connexions Claude et ChatGPT couvrent tout le compte. Pour limiter un client d'IA à certaines applications, connectez-le avec une clé API restreinte.

## Chaque modification est exécutée immédiatement

Tous les outils agissent dès le premier appel, y compris pour supprimer une application ou une base de données et restaurer un snapshot. Square Cloud ne vous demande rien avant : c'est votre client d'IA qui décide quand appeler un outil. Chaque outil indique au client s'il se contente de lire ou s'il peut détruire quelque chose, et la plupart des clients demandent votre permission avant un outil destructif : laissez cette demande activée.

## Suppressions et restaurations

`delete_application`, `delete_database` et `restore_snapshot` sont irréversibles, donc Square Cloud prend un snapshot de sécurité de l'application ou de la base de données avant d'agir, sauf s'il en existe un des dernières minutes. Le champ `safety_snapshot` du résultat indique quel cas s'est produit :

| `status` | Signification |
| - | - |
| `created` | Un snapshot de sécurité a été pris. |
| `recent` | Un snapshot des dernières minutes existait déjà. |
| `none` | Aucun snapshot n'a pu être pris, et l'action s'est exécutée quand même. `reason` vaut `daily_limit` lorsque la limite quotidienne de snapshots de votre plan est atteinte, sinon `failed`. |

Tant que le snapshot est encore en cours de génération, rien ne s'exécute : l'appel répond `SNAPSHOT_NOT_READY` et le client réessaie avec les mêmes arguments dans 2 minutes environ.

Le snapshot de sécurité compte dans la limite quotidienne de snapshots de votre plan. Après une suppression, il reste dans le tableau de bord, prêt à être téléchargé et envoyé comme nouvelle application : `restore_snapshot` ne restaure que des applications et des bases de données qui existent encore.

## Secrets

* `list_env_vars` ne renvoie que les noms des variables et, d'une URL de connexion, seulement son schéma et son hôte.
* Les outils de fichiers ne lisent, n'écrivent ni ne suppriment jamais les fichiers `.env` (ni `*.env`, `.env-*` et `.envrc` ; un gabarit comme `.env.example` peut être lu) et ne lisent jamais les clés privées ni les certificats (`.pem`, `.key`, `.p12`, `.pfx`, `.ppk`, `.jks` et les clés SSH comme `id_rsa`).
* Les secrets reconnus dans les logs des applications sont masqués.
* Les liens de téléchargement des snapshots et des certificats ne sont jamais envoyés.

> [!NOTE]
>
> Les logs et les fichiers de vos applications sont du contenu que lit le modèle, et le texte qu'ils contiennent pourrait tenter de l'orienter. Vérifiez ce que propose le client avant de l'autoriser.

## Fil d'activité

Les modifications faites via le MCP apparaissent dans votre [fil d'activité](https://squarecloud.app/fr/dashboard/activity) (plans Standard et supérieurs) avec **MCP** comme origine, sous la même action que dans le tableau de bord : un redémarrage, un envoi de fichier, une modification de variable d'environnement. Les lectures ne sont pas enregistrées. L'autorisation de Claude ou de ChatGPT apparaît comme une autorisation de client.


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