Semaine 1 : Installer et maîtriser le socle › Semaine 1 : Partie 2 (Installer le socle) › Connecter ces outils
# Connecter 1Password
> Stocker une clé API dans 1Password et la transmettre à un MCP sans l'écrire dans OpenCode.
## Pourquoi 1Password ?
Une clé API est un accès. Elle peut lire des données, consommer un budget ou agir au nom de ton entreprise.
1Password conserve cette clé dans un coffre chiffré. Son Environment la transmet uniquement au processus qui en a besoin. La configuration OpenCode contient la commande et l'identifiant de l'Environment, jamais la valeur de la clé.
## Les trois types de connexion
<div class="system-levers">
<div class="system-lever system-lever--green">
<p class="system-lever__kicker">Mot de passe</p>
<p class="system-lever__title">Tu te connectes toi-même avec ton email et ton mot de passe.</p>
<p class="system-lever__body">Dans ta tête ou dans 1Password.</p>
</div>
<div class="system-lever system-lever--blue">
<p class="system-lever__kicker">OAuth</p>
<p class="system-lever__title">Tu autorises une application, dans ton navigateur, à accéder à un service comme Google ou Slack.</p>
<p class="system-lever__body">Dans le Keychain de ton ordinateur.</p>
</div>
<div class="system-lever system-lever--orange">
<p class="system-lever__kicker">Clé API</p>
<p class="system-lever__title">Un MCP, un script ou un provider appelle un service automatiquement.</p>
<p class="system-lever__body">Dans un Environment 1Password.</p>
</div>
</div>
Le **Keychain** est le coffre sécurisé intégré à macOS. Après ton autorisation, Google ou Slack donne à l'application un token limité aux droits acceptés. L'application ne reçoit jamais ton mot de passe.
Le mot de passe te connecte toi. OAuth autorise une application à agir pour toi. Une clé API permet à un logiciel d'appeler un service automatiquement.
<div class="system-comparison">
<section class="system-comparison__panel system-comparison__panel--rose">
<p class="system-comparison__title">Sans 1Password</p>
<div class="diagram-sequence">
<div class="diagram-step"><p class="diagram-step-title">OpenCode</p><p class="diagram-step-body">Démarre le MCP</p></div>
<div class="mcp-flow__line" aria-hidden="true"></div>
<div class="diagram-step diagram-step--rose"><p class="diagram-step-title">Configuration locale</p><p class="diagram-step-body">Clé API enregistrée ici</p></div>
<div class="mcp-flow__line" aria-hidden="true"></div>
<div class="diagram-step diagram-step--violet"><p class="diagram-step-title">MCP Firecrawl</p><p class="diagram-step-body">Utilise la clé</p></div>
<div class="mcp-flow__line" aria-hidden="true"></div>
<div class="diagram-step diagram-step--green"><p class="diagram-step-title">Firecrawl</p><p class="diagram-step-body">Lit ou recherche sur le web</p></div>
</div>
</section>
<section class="system-comparison__panel system-comparison__panel--blue">
<p class="system-comparison__title">Avec 1Password</p>
<div class="diagram-sequence">
<div class="diagram-step"><p class="diagram-step-title">OpenCode</p><p class="diagram-step-body">Démarre le MCP</p></div>
<div class="mcp-flow__line" aria-hidden="true"></div>
<div class="diagram-step"><p class="diagram-step-title">Configuration OpenCode</p><p class="diagram-step-body">Environment ID seulement</p></div>
<div class="mcp-flow__line" aria-hidden="true"></div>
<div class="diagram-step diagram-step--blue"><p class="diagram-step-title">1Password</p><p class="diagram-step-body">Clé API chiffrée</p></div>
<div class="mcp-flow__line" aria-hidden="true"></div>
<div class="diagram-step diagram-step--violet"><p class="diagram-step-title"><code>op run</code></p><p class="diagram-step-body">Injection au démarrage</p></div>
<div class="mcp-flow__line" aria-hidden="true"></div>
<div class="diagram-step diagram-step--violet"><p class="diagram-step-title">MCP Firecrawl</p><p class="diagram-step-body">Utilise la clé temporairement</p></div>
<div class="mcp-flow__line" aria-hidden="true"></div>
<div class="diagram-step diagram-step--green"><p class="diagram-step-title">Firecrawl</p><p class="diagram-step-body">Lit ou recherche sur le web</p></div>
</div>
</section>
</div>
<p class="diagram-note">Dans les deux scénarios, le MCP utilise la clé. Avec 1Password, elle n'est pas écrite dans OpenCode ni dans sa configuration.</p>
```text
1Password Environment
-> op run démarre le MCP
-> le MCP utilise la clé API
-> OpenCode reçoit le résultat, pas la clé
```
## Regarde la vidéo
La vidéo montre l'installation de 1Password, la création d'un Environment et le premier test avec Firecrawl.
## Avant de commencer
- Tu as un compte 1Password et une clé API de test avec des droits limités.
- Tu ne copies jamais la clé dans OpenCode, une note, Git, Slack ou un email.
- Tu utilises Firecrawl pour le premier test. Il lit une page publique et ne modifie aucune donnée métier.
## Étape 1 : installer 1Password et la CLI
1. Télécharge [1Password](https://1password.com/downloads/) et connecte-toi à ton compte.
2. Active la double authentification sur ton compte.
3. Dans l'application, ouvre **Developer** et active l'intégration avec la CLI.
4. Dans Terminal, vérifie la commande :
```bash
op --version
```
Si `op` ne répond pas, termine l'installation de la CLI avant de connecter un outil. Ne contourne pas le problème en copiant la clé dans OpenCode.
## Étape 2 : créer un Environment de test
1. Dans 1Password, ouvre **Developer**, puis **Environments**.
2. Crée un Environment nommé `v0-ceo-test`.
3. Ajoute la variable `FIRECRAWL_API_KEY`.
4. Colle directement ta clé de test dans 1Password.
5. Copie l'Environment ID depuis **Manage Environment**.
L'Environment ID identifie ton Environment. Ce n'est pas la clé API. Tu peux le donner à `Connect Tool` pour configurer le MCP.
## Étape 3 : connecter Firecrawl sans clé en clair
Dans OpenCode, lance `Connect Tool` avec cette demande. Remplace `<ENVIRONMENT_ID>` par ton identifiant.
```text
Connecte Firecrawl à mon OpenCode sous le nom firecrawl.
La clé API est dans mon Environment 1Password <ENVIRONMENT_ID>.
N'écris aucune clé dans un fichier ou dans la configuration MCP.
Lance le MCP avec op run et vérifie la connexion avec une requête de lecture seule.
Ne révèle aucun credential.
```
La configuration finale suit cette logique :
```text
op run --environment <ENVIRONMENT_ID> -- npx -y firecrawl-mcp
```
Tu ne modifies pas manuellement les fichiers de configuration. `Connect Tool` vérifie la commande actuelle du MCP avant d'écrire la configuration nécessaire.
## Tester la connexion
Ouvre une nouvelle session OpenCode et demande :
```text
Avec le MCP Firecrawl uniquement, scrape https://example.com.
Donne-moi le titre de la page.
Ne modifie aucun fichier et ne révèle aucun credential.
```
Le test est réussi si OpenCode retourne le titre de la page. Une clé correctement gérée ne doit jamais apparaître dans le résultat, la conversation ou la configuration.
## Où vit chaque accès ?
| Élément | Emplacement |
|---|---|
| Mot de passe utilisé par une personne | Entrée classique 1Password |
| Clé API ou token technique | Environment 1Password |
| Token OAuth Google, Slack ou service équivalent | Keychain ou trousseau du système |
| Environment ID et commande de lancement | Configuration OpenCode |
Un Environment sert aussi à un script, un provider ou une automatisation locale. Il n'est pas réservé aux MCP. Pour une connexion OAuth, utilise le mécanisme natif du service plutôt que de déplacer son token dans 1Password.
## Si une clé est exposée
Révoque-la immédiatement chez le provider, puis crée une nouvelle clé avec les droits minimums. Supprimer le message ou le fichier ne suffit pas.
## Alternative gratuite
[Bitwarden Secrets Manager](https://bitwarden.com/products/secrets-manager/) applique le même principe avec `bws run`. Bitwarden Password Manager reste adapté aux mots de passe humains, mais n'est pas le mécanisme recommandé pour injecter une clé API à un MCP.
## Checklist
- [ ] J'ai activé la double authentification sur 1Password.
- [ ] La commande `op --version` fonctionne.
- [ ] J'ai créé un Environment de test dédié.
- [ ] Ma clé API n'apparaît ni dans mon vault, ni dans OpenCode, ni dans Git.
- [ ] Mon MCP utilise `op run` pour démarrer.
- [ ] J'ai réussi une requête de lecture seule.
- [ ] Je sais où révoquer la clé de test.
## Ressources
- [1Password Downloads](https://1password.com/downloads/)
- [Documentation 1Password Developer](https://developer.1password.com/)
- [Documentation de la CLI 1Password](https://developer.1password.com/docs/cli/)
- [[Semaine 01 - Installer et comprendre le socle/Bloc 01 - Comprendre le système/01.01 - Carte du système/02 - Cours - Sécurité, confidentialité et secrets|Sécurité, confidentialité et secrets]]
- [[../02 - Connecter ces outils/01 - Cours - Connecter Firecrawl|Configurer Firecrawl]]
Connecter 1Password
Stocker une clé API dans 1Password et la transmettre à un MCP sans l’écrire dans OpenCode.
Pourquoi 1Password ?
Une clé API est un accès. Elle peut lire des données, consommer un budget ou agir au nom de ton entreprise.
1Password conserve cette clé dans un coffre chiffré. Son Environment la transmet uniquement au processus qui en a besoin. La configuration OpenCode contient la commande et l’identifiant de l’Environment, jamais la valeur de la clé.
Les trois types de connexion
Mot de passe
Tu te connectes toi-même avec ton email et ton mot de passe.
Dans ta tête ou dans 1Password.
OAuth
Tu autorises une application, dans ton navigateur, à accéder à un service comme Google ou Slack.
Dans le Keychain de ton ordinateur.
Clé API
Un MCP, un script ou un provider appelle un service automatiquement.
Dans un Environment 1Password.
Le Keychain est le coffre sécurisé intégré à macOS. Après ton autorisation, Google ou Slack donne à l’application un token limité aux droits acceptés. L’application ne reçoit jamais ton mot de passe.
Le mot de passe te connecte toi. OAuth autorise une application à agir pour toi. Une clé API permet à un logiciel d’appeler un service automatiquement.
Sans 1Password
OpenCode
Démarre le MCP
Configuration locale
Clé API enregistrée ici
MCP Firecrawl
Utilise la clé
Firecrawl
Lit ou recherche sur le web
Avec 1Password
OpenCode
Démarre le MCP
Configuration OpenCode
Environment ID seulement
1Password
Clé API chiffrée
op run
Injection au démarrage
MCP Firecrawl
Utilise la clé temporairement
Firecrawl
Lit ou recherche sur le web
Dans les deux scénarios, le MCP utilise la clé. Avec 1Password, elle n'est pas écrite dans OpenCode ni dans sa configuration.
1Password Environment
-> op run démarre le MCP
-> le MCP utilise la clé API
-> OpenCode reçoit le résultat, pas la clé
Regarde la vidéo
La vidéo montre l’installation de 1Password, la création d’un Environment et le premier test avec Firecrawl.
Avant de commencer
Tu as un compte 1Password et une clé API de test avec des droits limités.
Tu ne copies jamais la clé dans OpenCode, une note, Git, Slack ou un email.
Tu utilises Firecrawl pour le premier test. Il lit une page publique et ne modifie aucune donnée métier.
Étape 1 : installer 1Password et la CLI
Télécharge 1Password et connecte-toi à ton compte.
Active la double authentification sur ton compte.
Dans l’application, ouvre Developer et active l’intégration avec la CLI.
Dans Terminal, vérifie la commande :
op --version
Si op ne répond pas, termine l’installation de la CLI avant de connecter un outil. Ne contourne pas le problème en copiant la clé dans OpenCode.
Étape 2 : créer un Environment de test
Dans 1Password, ouvre Developer, puis Environments.
Crée un Environment nommé v0-ceo-test.
Ajoute la variable FIRECRAWL_API_KEY.
Colle directement ta clé de test dans 1Password.
Copie l’Environment ID depuis Manage Environment.
L’Environment ID identifie ton Environment. Ce n’est pas la clé API. Tu peux le donner à Connect Tool pour configurer le MCP.
Étape 3 : connecter Firecrawl sans clé en clair
Dans OpenCode, lance Connect Tool avec cette demande. Remplace <ENVIRONMENT_ID> par ton identifiant.
Connecte Firecrawl à mon OpenCode sous le nom firecrawl.
La clé API est dans mon Environment 1Password <ENVIRONMENT_ID>.
N'écris aucune clé dans un fichier ou dans la configuration MCP.
Lance le MCP avec op run et vérifie la connexion avec une requête de lecture seule.
Ne révèle aucun credential.
La configuration finale suit cette logique :
op run --environment <ENVIRONMENT_ID> -- npx -y firecrawl-mcp
Tu ne modifies pas manuellement les fichiers de configuration. Connect Tool vérifie la commande actuelle du MCP avant d’écrire la configuration nécessaire.
Tester la connexion
Ouvre une nouvelle session OpenCode et demande :
Avec le MCP Firecrawl uniquement, scrape https://example.com.
Donne-moi le titre de la page.
Ne modifie aucun fichier et ne révèle aucun credential.
Le test est réussi si OpenCode retourne le titre de la page. Une clé correctement gérée ne doit jamais apparaître dans le résultat, la conversation ou la configuration.
Où vit chaque accès ?
Élément
Emplacement
Mot de passe utilisé par une personne
Entrée classique 1Password
Clé API ou token technique
Environment 1Password
Token OAuth Google, Slack ou service équivalent
Keychain ou trousseau du système
Environment ID et commande de lancement
Configuration OpenCode
Un Environment sert aussi à un script, un provider ou une automatisation locale. Il n’est pas réservé aux MCP. Pour une connexion OAuth, utilise le mécanisme natif du service plutôt que de déplacer son token dans 1Password.
Si une clé est exposée
Révoque-la immédiatement chez le provider, puis crée une nouvelle clé avec les droits minimums. Supprimer le message ou le fichier ne suffit pas.
Alternative gratuite
Bitwarden Secrets Manager applique le même principe avec bws run. Bitwarden Password Manager reste adapté aux mots de passe humains, mais n’est pas le mécanisme recommandé pour injecter une clé API à un MCP.
Checklist
J’ai activé la double authentification sur 1Password.
La commande op --version fonctionne.
J’ai créé un Environment de test dédié.
Ma clé API n’apparaît ni dans mon vault, ni dans OpenCode, ni dans Git.