Aller au contenu

Serveurs MCP

Ajoutez des outils MCP locaux et distants.

Vous pouvez ajouter des outils externes a OpenCode en utilisant le Model Context Protocol, ou MCP. OpenCode prend en charge a la fois les serveurs locaux et distants.

Une fois ajoutes, les outils MCP sont automatiquement disponibles pour le LLM aux cote des outils integres.


Avertissements

Lorsque vous utilisez un serveur MCP, il ajoute au contexte. Cela peut s’accumuler rapidement si vous avez beaucoup d’outils. Nous vous recommandons donc d’etre prudent avec les serveurs MCP que vous utilisez.

Certains serveurs MCP, comme le serveur MCP GitHub, ont tendance a ajouter beaucoup de jetons et peuvent facilement depasser la limite du contexte.


Activer

Vous pouvez definir des serveurs MCP dans votre Configuration OpenCode sous mcp. Ajoutez chaque MCP avec un nom unique. Vous pouvez faire reference a ce MCP par nom lorsque vous invitez le LLM.

opencode.jsonc
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"name-of-mcp-server": {
// ...
"enabled": true,
},
"name-of-other-mcp-server": {
// ...
},
},
}

Vous pouvez egalement desactiver un serveur en definissant enabled sur false. C’est utile si vous souhaitez desactiver temporairement un serveur sans le supprimer de votre configuration.


Remplacer les valeurs par defaut distants

Les organisations peuvent fournir des serveurs MCP par defaut via leur point de terminaison .well-known/opencode. Ces serveurs peuvent etre desactives par defaut, permettant aux utilisateurs d’opter pour ceux dont ils ont besoin.

Pour activer un serveur specifique a partir de la configuration distante de votre organisation, ajoutez-le a votre configuration locale avec enabled: true:

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"jira": {
"type": "remote",
"url": "https://jira.example.com/mcp",
"enabled": true
}
}
}

Vos valeurs de configuration locale remplacent les valeurs par defaut distantes. Voir precedence de configuration pour plus de details.


Local

Ajoutez des serveurs MCP locaux en utilisant type sur "local" dans l’objet MCP.

opencode.jsonc
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"my-local-mcp-server": {
"type": "local",
// Ou ["bun", "x", "my-mcp-command"]
"command": ["npx", "-y", "my-mcp-command"],
"enabled": true,
"environment": {
"MY_ENV_VAR": "my_env_var_value",
},
},
},
}

La commande est comment le serveur MCP local est demarre. Vous pouvez egalement passer une liste de variables d’environnement.

Par exemple, voici comment vous pouvez ajouter le serveur MCP de test @modelcontextprotocol/server-everything.

opencode.jsonc
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"mcp_everything": {
"type": "local",
"command": ["npx", "-y", "@modelcontextprotocol/server-everything"],
},
},
}

Et pour l’utiliser, je peux ajouter use the mcp_everything tool a mes invites.

use the mcp_everything tool to add the number 3 and 4

Options

Voici toutes les options pour configurer un serveur MCP local.

OptionTypeRequiredDescription
typeStringYType de connexion MCP, doit etre "local".
commandArrayYCommande et arguments pour executer le serveur MCP.
environmentObjectVariables d’environnement a definir lors de l’execution du serveur.
enabledBooleanActiver ou desactiver le serveur MCP au demarrage.
timeoutNumberDelai d’attente en ms pour recuperer les outils du serveur MCP. Par defaut 5000 (5 secondes).

Distant

Ajoutez des serveurs MCP distants en definissant type sur "remote".

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"my-remote-mcp": {
"type": "remote",
"url": "https://my-mcp-server.com",
"enabled": true,
"headers": {
"Authorization": "Bearer MY_API_KEY"
}
}
}
}

L’url est l’URL du serveur MCP distant et avec l’option headers vous pouvez passer une liste d’en-tetes.


Options

OptionTypeRequiredDescription
typeStringYType de connexion MCP, doit etre "remote".
urlStringYURL du serveur MCP distant.
enabledBooleanActiver ou desactiver le serveur MCP au demarrage.
headersObjectEn-tetes a envoyer avec la requete.
oauthObjectConfiguration de l’authentification OAuth. Voir la section OAuth ci-dessous.
timeoutNumberDelai d’attente en ms pour recuperer les outils du serveur MCP. Par defaut 5000 (5 secondes).

OAuth

OpenCode gere automatiquement l’authentification OAuth pour les serveurs MCP distants. Lorsqu’un serveur necessite une authentification, OpenCode va :

  1. Detecter la reponse 401 et lancer le flux OAuth
  2. Utiliser l’Enregistrement dynamique de client (RFC 7591) si pris en charge par le serveur
  3. Stocker les jetons de maniere securisee pour les demandes futures

Automatique

Pour la plupart des serveurs MCP compatibles OAuth, aucune configuration speciale n’est necessaire. Configurez simplement le serveur distant :

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"my-oauth-server": {
"type": "remote",
"url": "https://mcp.example.com/mcp"
}
}
}

Si le serveur necessite une authentification, OpenCode vous demandera de vous authentifier lorsque vous essayerez de l’utiliser pour la premiere fois. Sinon, vous pouvez declencher manuellement le flux avec opencode mcp auth <server-name>.


Pre-enregistre

Si vous avez des identifiants client du fournisseur de serveur MCP, vous pouvez les configurer :

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"my-oauth-server": {
"type": "remote",
"url": "https://mcp.example.com/mcp",
"oauth": {
"clientId": "{env:MY_MCP_CLIENT_ID}",
"clientSecret": "{env:MY_MCP_CLIENT_SECRET}",
"scope": "tools:read tools:execute"
}
}
}
}

Authentification

Vous pouvez declencher manuellement l’authentification ou gerer les identifiants.

Authentifiez-vous avec un serveur MCP specifique :

Fenêtre de terminal
opencode mcp auth my-oauth-server

Lister tous les serveurs MCP et leur statut d’authentification :

Fenêtre de terminal
opencode mcp list

Supprimer les identifiants stockes :

Fenêtre de terminal
opencode mcp logout my-oauth-server

La commande mcp auth ouvrira votre navigateur pour l’autorisation. Apres autorisation, OpenCode stockera les jetons de maniere securisee dans ~/.local/share/opencode/mcp-auth.json.


Desactiver OAuth

Si vous souhaitez desactiver OAuth automatique pour un serveur (par exemple, pour les serveurs qui utilisent des cles API a la place), definissez oauth sur false :

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"my-api-key-server": {
"type": "remote",
"url": "https://mcp.example.com/mcp",
"oauth": false,
"headers": {
"Authorization": "Bearer {env:MY_API_KEY}"
}
}
}
}

Options OAuth

OptionTypeDescription
oauthObject | falseObjet de configuration OAuth, ou false pour desactiver la detection automatique OAuth.
clientIdStringID client OAuth. Si non fourni, l’enregistrement dynamique de client sera tente.
clientSecretStringSecret client OAuth, si requis par le serveur d’autorisation.
scopeStringPortees OAuth a demander lors de l’autorisation.

Debogage

Si un serveur MCP distant ne parvient pas a s’authentifier, vous pouvez diagnostiquer les problemes avec :

Fenêtre de terminal
# Voir le statut d'authentification pour tous les serveurs compatibles OAuth
opencode mcp auth list
# Deboguer la connexion et le flux OAuth pour un serveur specifique
opencode mcp debug my-oauth-server

La commande mcp debug affiche le statut d’authentification actuel, teste la connectivite HTTP et tente le flux de decouverte OAuth.


Gerer

Vos MCP sont disponibles en tant qu’outils dans OpenCode, aux cote des outils integres. Vous pouvez donc les gerer via la configuration OpenCode comme n’importe quel autre outil.


Global

Cela signifie que vous pouvez les activer ou les desactiver globalement.

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"my-mcp-foo": {
"type": "local",
"command": ["bun", "x", "my-mcp-command-foo"]
},
"my-mcp-bar": {
"type": "local",
"command": ["bun", "x", "my-mcp-command-bar"]
}
},
"tools": {
"my-mcp-foo": false
}
}

Nous pouvons egalement utiliser un modele glob pour desactiver tous les MCP correspondants.

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"my-mcp-foo": {
"type": "local",
"command": ["bun", "x", "my-mcp-command-foo"]
},
"my-mcp-bar": {
"type": "local",
"command": ["bun", "x", "my-mcp-command-bar"]
}
},
"tools": {
"my-mcp*": false
}
}

Ici, nous utilisons le modele glob my-mcp* pour desactiver tous les MCP.


Par agent

Si vous avez un grand nombre de serveurs MCP, vous pouvez peut-etre souhaiter ne les activer que par agent et les desactiver globalement. Pour ce faire :

  1. Desactivez-le en tant qu’outil globalement.
  2. Dans votre configuration d’agent, activez le serveur MCP en tant qu’outil.
opencode.json
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"my-mcp": {
"type": "local",
"command": ["bun", "x", "my-mcp-command"],
"enabled": true
}
},
"tools": {
"my-mcp*": false
},
"agent": {
"my-agent": {
"tools": {
"my-mcp*": true
}
}
}
}

Modeles glob

Le modele glob utilise des modeles glob regex simples :

  • * correspond a zero ou plusieurs caracteres (par exemple, "my-mcp*" correspond a my-mcp_search, my-mcp_list, etc.)
  • ? correspond exactement a un caractere
  • Tous les autres caracteres correspondent litteralement

Exemples

Voici des exemples de certains serveurs MCP courants. Vous pouvez soumettre une PR si vous souhaitez documenter d’autres serveurs.


Sentry

Ajoutez le serveur MCP Sentry pour interagir avec vos projets et problemes Sentry.

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"sentry": {
"type": "remote",
"url": "https://mcp.sentry.dev/mcp",
"oauth": {}
}
}
}

Apres avoir ajoute la configuration, authentifiez-vous avec Sentry :

Fenêtre de terminal
opencode mcp auth sentry

Cela ouvrira une fenetre de navigateur pour terminer le flux OAuth et connecter OpenCode a votre compte Sentry.

Une fois authentifie, vous pouvez utiliser les outils Sentry dans vos invites pour interroger les problemes, les projets et les donnees d’erreur.

Show me the latest unresolved issues in my project. use sentry

Context7

Ajoutez le serveur MCP Context7 pour rechercher dans la documentation.

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"context7": {
"type": "remote",
"url": "https://mcp.context7.com/mcp"
}
}
}

Si vous vous etes inscrit a un compte gratuit, vous pouvez utiliser votre cle API et obtenir des limites de taux plus elevees.

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"context7": {
"type": "remote",
"url": "https://mcp.context7.com/mcp",
"headers": {
"CONTEXT7_API_KEY": "{env:CONTEXT7_API_KEY}"
}
}
}
}

Ici, nous supposons que vous avez la variable d’environnement CONTEXT7_API_KEY definie.

Ajoutez use context7 a vos invites pour utiliser le serveur MCP Context7.

Configure a Cloudflare Worker script to cache JSON API responses for five minutes. use context7

Alternativement, vous pouvez ajouter quelque chose comme ceci a votre AGENTS.md.

AGENTS.md
When you need to search docs, use `context7` tools.

Grep by Vercel

Ajoutez le serveur MCP Grep by Vercel pour rechercher dans des extraits de code sur GitHub.

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"gh_grep": {
"type": "remote",
"url": "https://mcp.grep.app"
}
}
}

Puisque nous avons nomme notre serveur MCP gh_grep, vous pouvez ajouter use the gh_grep tool a vos invites pour que l’agent l’utilise.

What's the right way to set a custom domain in an SST Astro component? use the gh_grep tool

Alternativement, vous pouvez ajouter quelque chose comme ceci a votre AGENTS.md.

AGENTS.md
If you are unsure how to do something, use `gh_grep` to search code examples from GitHub.