MCP Server

Collega Claude, ChatGPT, Cursor, VS Code o qualsiasi client MCP direttamente al tuo workspace.


Questo è il modo strategico di usare SOIS: porta il tuo agente. Il tuo workspace Sois AI è un server MCP completo, quindi l'agente AI che già usi si collega e ragiona direttamente sui tool del tuo workspace. Sempre più spesso le persone non accedono mai alla console SOIS. Dicono al loro Claude, ChatGPT, Cursor o Gemini cosa serve e questo opera su SOIS per loro tramite MCP. La console diventa un luogo per visualizzare e gestire l'attività degli agenti, non il modo principale in cui si lavora.

Qualsiasi client che parla il Protocollo di Contesto del Modello può collegarsi e usare i tool del tuo workspace: cerca contatti, crea task, invia email, gestisci documenti e altro ancora, senza scrivere una sola integrazione. Poiché è il tuo agente a fare il ragionamento, SOIS non spende AI per te.

Un solo endpoint. Protocollo standard. Ogni tool che il tuo account può usare, disponibile per qualsiasi client compatibile.


L'unico URL

Il tuo workspace espone un singolo endpoint MCP:

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

Il server si identifica con il brand del tuo workspace (per esempio "Acme"), quindi appare con il tuo nome nel client. Tutto il resto dipende da questo unico URL.

Ci sono due modi per autenticarsi. OAuth è il percorso consigliato ed è quello usato dai connettori integrati in Claude e ChatGPT: incolli l'URL, approvi una volta e non c'è nessun token da copiare o ruotare manualmente. È supportato anche un token Bearer più chiave API per script, server e client che non fanno OAuth.


Opzione A: OAuth 2.1 (consigliata, niente da incollare)

I connettori MCP moderni scoprono e completano l'intero accesso per te. Devi solo fornire l'URL.

1. Nel tuo client (per esempio Claude o ChatGPT), aggiungi un connettore personalizzato e incolla il tuo URL MCP: https://<your-workspace>.sois.ai/api/mcp

2. Il client chiama l'endpoint senza token e riceve un 401 con una challenge di discovery:

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

3. Il client legge quei metadati, trova il server di autorizzazione del tuo workspace, si registra automaticamente (Dynamic Client Registration) e apre la schermata di accesso e consenso.

4. Approvi la connessione nel tuo account SOIS. Il client riceve un token tramite PKCE (con un refresh token rotante) e inizia a lavorare. Nessun token viene mai copiato a mano.

Perché è sicuro. Il server di autorizzazione è il dominio del tuo workspace, quindi i token sono limitati al tenant e non escono mai dalla tua rete. L'autorizzazione è il tuo ruolo: un token concesso non può mai fare più di quello che puoi fare tu, perché ogni chiamata tool viene controllata dai permessi all'esecuzione. Le stringhe di scope sono volutamente generiche; il confine reale sono i tuoi permessi per utente.

Cosa pubblicizza il server di autorizzazione:

Property Value
Authorization endpoint /oauth/authorize
Token endpoint /oauth/token
Registration endpoint /oauth/register (Dynamic Client Registration)
Grant types authorization_code, refresh_token
PKCE required (S256)
Scopes mcp, mcp:read, mcp:write, offline_access

Normalmente non chiami questi endpoint tu stesso; un client MCP conforme percorre il flusso automaticamente una volta che ha l'URL.


Opzione B: Token Bearer + chiave API (diretta o lato server)

Per script, server o qualsiasi client che non implementa OAuth. Generi due credenziali e le invii come header a ogni richiesta.

1. Apri Impostazioni > Collega il tuo Agente nel tuo workspace Sois AI.

2. Scegli il tuo client (Claude Desktop, Cursor, VS Code o Generico) e clicca Genera Credenziali per ottenere un token Bearer, una chiave API e uno snippet di configurazione pronto all'uso.

3. Incolla la configurazione nel tuo client.

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

Cursor usa la stessa struttura in .cursor/mcp.json; VS Code la annida sotto "mcp": { "servers": { ... } } con "type": "http".

Header Value Purpose
Authorization Bearer <token> Identity (Sanctum token, 90-day expiry)
X-Api-Key sois_... Budget and usage tracking

Due credenziali perché identità e spesa sono separate: un token dimostra chi sei, la chiave controlla e misura i costi, e una sola delle due è inutile. (I token OAuth gestiscono l'autorizzazione in modo diverso, quindi un connettore dell'Opzione A non ha bisogno dell'header X-Api-Key.)

Genera la coppia programmaticamente quando automatizzi l'onboarding:

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"}'

Endpoint di discovery

Un client può apprendere tutto ciò che serve da tre documenti pubblici alla radice del tuo workspace:

Endpoint Purpose
/.well-known/mcp.json Server card: name, version, protocol version, and the OAuth metadata locations
/.well-known/oauth-protected-resource RFC 9728: which authorization server protects this resource
/.well-known/oauth-authorization-server RFC 8414: the authorize, token, and registration endpoints, grants, and PKCE method

La server card riporta authentication.type come oauth2 e collega ai due documenti OAuth, ed è così che un connettore sa di avviare il flusso dell'Opzione A.


Dettagli del protocollo

L'endpoint parla Streamable HTTP con JSON-RPC 2.0 (versione della specifica 2025-06-18).

Ciclo di vita della sessione

Step Request Notes
Initialize POST /api/mcp method initialize Negotiates capabilities; the response carries an Mcp-Session-Id header
List tools POST /api/mcp method tools/list Returns every tool your account is allowed to use
Call a tool POST /api/mcp method tools/call params.name + params.arguments
Keep-alive GET /api/mcp with Mcp-Session-Id Opens an SSE stream for server-to-client messages
Teardown DELETE /api/mcp with Mcp-Session-Id Ends the session

Includi l'Mcp-Session-Id dalla risposta di initialize in ogni richiesta successiva.

Metodi supportati

Method Description
initialize Start a session, negotiate capabilities
ping Health check
tools/list List available tools with schemas
tools/call Execute a tool by name with arguments
notifications/initialized Client confirms initialization (no response)
notifications/cancelled Client cancels a pending request (no response)

Quali tool sono disponibili

tools/list restituisce tutto ciò che puoi fare dentro Sois AI, filtrato in base ai tuoi permessi:

  • Contacts: search, create, update, summarise
  • Tasks: create, assign, update status, search
  • Calendar: list, create, update events, check availability
  • Documents: search, create, update content
  • Files: browse, upload, download
  • Inbox: read, compose, send
  • Departments and team: list and manage (admin)
  • Installed apps: every tool added by the extensions you have installed (CRM, invoicing, warehouse, custom entities, and so on)

L'elenco esatto dipende dal ruolo dell'utente autenticato e dalle app installate. I tool sono filtrati per permessi e falliscono in modo chiuso, quindi una connessione non può mai chiamare qualcosa che l'utente non è autorizzato a usare.

L'app builder funziona sullo stesso endpoint

Non esiste un server MCP separato per creare app. I tool dell'extension-builder fanno parte dello stesso server MCP del workspace e appaiono nello stesso tools/list, con una condizione: sono protetti da admin, quindi appaiono solo per gli account con capacità di builder. Se il tuo account può creare app, il tuo elenco di tool include anche:

  • getExtensionRules, getExtensionFrameSpec (what an app must look like)
  • createExtensionProject, listExtensionProjects, getExtensionStatus
  • validateExtensionBundle, uploadExtensionBundle

Quindi creare un'app è lo stesso atto di tutto il resto: colleghi il tuo agente al tuo workspace una sola volta e, se sei un builder, può creare lo scheletro, validare e pubblicare un'app insieme alla gestione della tua attività, tutto attraverso il solo endpoint /api/mcp. Vedi Crea un'app per il flusso di lavoro.

(Non va confuso con il connettore pubblico di sola lettura per il contesto di build che un operatore può aggiungere per pubblicizzare le capacità di una rete; quello è un endpoint separato e non autenticato sul dominio della rete, non il server MCP del tuo workspace.)


Budget, limiti ed errori

What Value
Rate limit 120 requests/minute
Tool-call cost metered as AI credits
Budget per API key (Option B) or per workspace; you set the cap
Token expiry 90 days (Option B Sanctum token); OAuth tokens refresh automatically

Si applicano gli errori JSON-RPC standard, più alcuni codici specifici:

Code Meaning
-32001 Unauthorized or session expired (Option A connectors get the OAuth challenge here)
-32002 Insufficient AI credits
-32003 Tool not permitted for this account
-32004 Budget cap reached

Testa la tua connessione

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

Restituisce se le credenziali funzionano e quanti tool sono visibili a esse.


Portare il tuo agente è il percorso strategico. Il MCP Server permette al tuo client AI di ragionare direttamente sui tool di SOIS, quindi SOIS non spende AI per te. Il Chat Agent Gateway è il punto di accesso per chi non ha un agente: messaggi in linguaggio naturale su HTTP, dove è l'agente di SOIS a fare il ragionamento. Usa quello che si adatta al tuo interlocutore, o entrambi.


Vuoi collegare Sois a server MCP esterni invece? Vedi MCP Gateway per le connessioni in uscita.