Serveur MCP

Connecte Claude, ChatGPT, Cursor, VS Code, ou tout client MCP directement à ton espace de travail.


Voici la façon stratégique d'utiliser SOIS : amène ton propre agent. Ton espace de travail Sois AI est un serveur MCP complet, donc l'agent IA que tu utilises déjà se connecte et raisonne directement sur les outils de ton espace de travail. De plus en plus, les gens ne se connectent jamais à la console SOIS. Ils indiquent à leur propre Claude, ChatGPT, Cursor ou Gemini ce dont ils ont besoin, et celui-ci opère SOIS en leur nom via MCP. La console devient un endroit pour visualiser et gérer l'activité des agents, pas la façon principale de travailler.

Tout client qui parle le Protocole de Contexte de Modèle peut se connecter et utiliser les outils de ton espace de travail : rechercher des contacts, créer des tâches, envoyer des e-mails, gérer des documents, et plus encore, sans écrire une seule intégration. Parce que ton propre agent fait le raisonnement, SOIS ne dépense aucune IA en ton nom.

Un seul point de terminaison. Protocole standard. Chaque outil que ton compte est autorisé à utiliser, disponible pour tout client compatible.


L'unique URL

Ton espace de travail expose un seul point de terminaison MCP :

https://<your-workspace>.sois.ai/api/mcp

Le serveur s'identifie avec la marque de ton espace de travail (par exemple "Acme"), donc il apparaît sous ton propre nom dans le client. Tout ce qui suit dépend de cette unique URL.

Il existe deux façons de s'authentifier. OAuth est la voie recommandée et c'est ce que les connecteurs intégrés dans Claude et ChatGPT utilisent : tu colles l'URL, tu approuves une fois, et il n'y a aucun jeton à copier ou à renouveler manuellement. Un jeton Bearer plus clé API est également pris en charge pour les scripts, serveurs et clients qui n'utilisent pas OAuth.


Option A : OAuth 2.1 (recommandée, rien à coller)

Les connecteurs MCP modernes découvrent et terminent toute la connexion pour toi. Tu fournis uniquement l'URL.

1. Dans ton client (par exemple Claude ou ChatGPT), ajoute un connecteur personnalisé et colle ton URL MCP : https://<your-workspace>.sois.ai/api/mcp

2. Le client appelle le point de terminaison sans jeton et reçoit un 401 portant un défi de découverte :

WWW-Authenticate: Bearer resource_metadata="https://<your-workspace>.sois.ai/.well-known/oauth-protected-resource"

3. Le client lit ces métadonnées, trouve le serveur d'autorisation de ton espace de travail, s'enregistre automatiquement (Dynamic Client Registration), et ouvre l'écran de connexion et de consentement.

4. Tu approuves la connexion dans ton compte SOIS. Le client reçoit un jeton via PKCE (avec un jeton de rafraîchissement tournant) et commence à fonctionner. Aucun jeton n'est jamais copié manuellement.

Pourquoi c'est sûr. Le serveur d'autorisation est ton propre domaine d'espace de travail, donc les jetons sont limités au locataire et ne quittent jamais ton réseau. L'autorisation est ton rôle : un jeton accordé ne peut jamais faire plus que ce que tu peux faire, car chaque appel d'outil est vérifié par permissions à l'exécution. Les chaînes de portée sont volontairement grossières ; la vraie limite est tes permissions par utilisateur.

Ce que le serveur d'autorisation annonce :

Propriété Valeur
Point de terminaison d'autorisation /oauth/authorize
Point de terminaison de jeton /oauth/token
Point de terminaison d'enregistrement /oauth/register (Dynamic Client Registration)
Types d'octroi authorization_code, refresh_token
PKCE requis (S256)
Portées mcp, mcp:read, mcp:write, offline_access

Tu n'appelles normalement pas ces éléments toi-même ; un client MCP conforme suit le flux automatiquement une fois qu'il a l'URL.


Option B : Jeton Bearer + clé API (direct ou côté serveur)

Pour les scripts, serveurs, ou tout client qui n'implémente pas OAuth. Tu génères deux identifiants et les envoies comme en-têtes à chaque requête.

1. Ouvre Paramètres > Connecte ton Agent dans ton espace de travail Sois AI.

2. Choisis ton client (Claude Desktop, Cursor, VS Code, ou Générique) et clique sur Générer des identifiants pour obtenir un jeton Bearer, une clé API, et un extrait de configuration prêt à l'emploi.

3. Colle la configuration dans ton client.

{
  "mcpServers": {
    "sois-workspace": {
      "url": "https://<your-workspace>.sois.ai/api/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_TOKEN",
        "X-Api-Key": "YOUR_API_KEY"
      }
    }
  }
}

Cursor utilise la même forme dans .cursor/mcp.json ; VS Code l'imbrique sous "mcp": { "servers": { ... } } avec "type": "http".

En-tête Valeur Objectif
Authorization Bearer <token> Identité (jeton Sanctum, expiration à 90 jours)
X-Api-Key sois_... Suivi du budget et de l'utilisation

Deux identifiants parce que l'identité et les dépenses sont séparées : un jeton prouve qui tu es, la clé contrôle et mesure le coût, et l'un sans l'autre est inutile. (Les jetons OAuth portent leur autorisation différemment, donc un connecteur sur l'Option A n'a pas besoin de l'en-tête X-Api-Key.)

Génère la paire par programmation quand tu automatises l'intégration :

curl -X POST "https://<your-workspace>.sois.ai/api/mcp/quick-setup" \
  -H "Authorization: Bearer YOUR_EXISTING_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"client": "generic"}'

Points de terminaison de découverte

Un client peut tout apprendre à partir de trois documents publics à la racine de ton espace de travail :

Point de terminaison Objectif
/.well-known/mcp.json Carte du serveur : nom, version, version du protocole, et emplacements des métadonnées OAuth
/.well-known/oauth-protected-resource RFC 9728 : quel serveur d'autorisation protège cette ressource
/.well-known/oauth-authorization-server RFC 8414 : les points de terminaison authorize, token et register, les octrois, et la méthode PKCE

La carte du serveur indique authentication.type comme oauth2 et renvoie aux deux documents OAuth, c'est ainsi qu'un connecteur sait démarrer le flux de l'Option A.


Détails du protocole

Le point de terminaison parle Streamable HTTP avec JSON-RPC 2.0 (version de spécification 2025-06-18).

Cycle de vie de la session

Étape Requête Notes
Initialiser POST /api/mcp méthode initialize Négocie les capacités ; la réponse porte un en-tête Mcp-Session-Id
Lister les outils POST /api/mcp méthode tools/list Retourne chaque outil que ton compte est autorisé à utiliser
Appeler un outil POST /api/mcp méthode tools/call params.name + params.arguments
Maintenir vivant GET /api/mcp avec Mcp-Session-Id Ouvre un flux SSE pour les messages serveur vers client
Démantèlement DELETE /api/mcp avec Mcp-Session-Id Termine la session

Inclus le Mcp-Session-Id de la réponse d'initialisation sur chaque requête ultérieure.

Méthodes prises en charge

Méthode Description
initialize Démarre une session, négocie les capacités
ping Vérification de santé
tools/list Liste les outils disponibles avec schémas
tools/call Exécute un outil par nom avec arguments
notifications/initialized Le client confirme l'initialisation (pas de réponse)
notifications/cancelled Le client annule une requête en attente (pas de réponse)

Quels outils sont disponibles

tools/list retourne tout ce que ton compte peut faire dans Sois AI, filtré selon tes permissions :

  • Contacts : rechercher, créer, mettre à jour, résumer
  • Tâches : créer, assigner, mettre à jour le statut, rechercher
  • Calendrier : lister, créer, mettre à jour des événements, vérifier la disponibilité
  • Documents : rechercher, créer, mettre à jour le contenu
  • Fichiers : parcourir, télécharger, envoyer
  • Boîte de réception : lire, rédiger, envoyer
  • Départements et équipe : lister et gérer (admin)
  • Applications installées : chaque outil ajouté par les extensions que tu as installées (CRM, facturation, entrepôt, entités personnalisées, etc.)

La liste exacte dépend du rôle de l'utilisateur authentifié et des applications installées. Les outils sont filtrés par permissions et échouent en mode fermé, donc une connexion ne peut jamais appeler quelque chose que l'utilisateur n'est pas autorisé à utiliser.

Le constructeur d'applications fonctionne sur ce même point de terminaison

Il n'y a pas de serveur MCP séparé pour construire des applications. Les outils du constructeur d'extensions font partie du même serveur MCP d'espace de travail et apparaissent dans le même tools/list, avec une condition : ils sont réservés aux administrateurs, donc ils n'apparaissent que pour les comptes capables de construire. Si ton compte peut construire des applications, ta liste d'outils inclut aussi :

  • getExtensionRules, getExtensionFrameSpec (à quoi une application doit ressembler)
  • createExtensionProject, listExtensionProjects, getExtensionStatus
  • validateExtensionBundle, uploadExtensionBundle

Donc construire une application est le même acte que tout le reste : tu connectes ton agent à ton espace de travail une fois, et si tu es un constructeur il peut échafauder, valider et publier une application en parallèle de la gestion de ton entreprise, tout via le seul point de terminaison /api/mcp. Voir Construire une application pour le flux de travail.

(À ne pas confondre avec le connecteur public en lecture seule de contexte de construction qu'un opérateur peut ajouter pour annoncer les capacités d'un réseau ; c'est un point de terminaison séparé, non authentifié sur le domaine du réseau, pas ton serveur MCP d'espace de travail.)


Budget, limites et erreurs

Quoi Valeur
Limite de débit 120 requêtes/minute
Coût d'appel d'outil facturé en crédits IA
Budget par clé API (Option B) ou par espace de travail ; tu définis le plafond
Expiration du jeton 90 jours (jeton Sanctum Option B) ; les jetons OAuth se rafraîchissent automatiquement

Les erreurs JSON-RPC standard s'appliquent, plus quelques codes spécifiques :

Code Signification
-32001 Non autorisé ou session expirée (les connecteurs Option A reçoivent le défi OAuth ici)
-32002 Crédits IA insuffisants
-32003 Outil non autorisé pour ce compte
-32004 Plafond de budget atteint

Teste ta connexion

curl -X POST "https://<your-workspace>.sois.ai/api/mcp/test" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "X-Api-Key: YOUR_API_KEY"

Retourne si les identifiants fonctionnent et combien d'outils leur sont visibles.


Amener ton propre agent est la voie stratégique. Le Serveur MCP permet à ton propre client IA de raisonner directement sur tes outils SOIS, donc SOIS ne dépense aucune IA en ton nom. La Passerelle d'Agent de Chat est la rampe d'accès pour les appelants qui n'ont pas d'agent : messages en langage clair sur HTTP, où l'agent propre de SOIS fait le raisonnement. Utilise celui qui convient à ton appelant, ou les deux.


Tu veux connecter Sois à des serveurs MCP externes à la place ? Voir la Passerelle MCP pour les connexions sortantes.