Crea un client per l’assistente
Server MCP
L’endpoint MCP di Setherion per creare il tuo client: trasporto, autenticazione, strumenti ed errori.
https://www.setherion.com/api/mcpPiano: Ogni piano
Setherion ha un server MCP, il modo standard in cui gli assistenti IA usano altri servizi. Se vuoi usarlo solo da Claude, ChatGPT, Cursor o VS Code, segui MCP: collegare un assistente IA. Questa pagina è per chi crea il proprio client.
Il server è l’API con un’altra voce. Ogni strumento è una chiamata all’endpoint con lo stesso nome in questo riferimento, fatta con la credenziale di chi chiama, quindi il server non può mai fare più di quanto possa fare l’API.
Trasporto
- Streamable HTTP, senza stato. Invia ogni messaggio come un unico messaggio JSON-RPC 2.0 nel corpo di una
POST. Non ci sono sessioni e niente da riprendere. - Versioni del protocollo
2025-06-18e2025-03-26.initializerisponde con la versione che hai chiesto se è una di queste, e con2025-06-18in caso contrario. Dopoinitialize, invia la versione nell’headerMCP-Protocol-Version. Un valore diverso viene rifiutato con400. - Solo strumenti. Il server non offre risorse né prompt, e non invia messaggi propri.
- Un messaggio per richiesta. Un batch viene rifiutato con
400. GETeDELETErispondono405conAllow: POST.- Origin. Una richiesta da una pagina del browser deve provenire da
https://www.setherion.com. Qualsiasi altroOriginrisponde403. Le richieste dei programmi non ne hanno uno e sono consentite.
Tieni il www nell’indirizzo. L’indirizzo senza fa un reindirizzamento, e un reindirizzamento perde la credenziale.
Autenticazione
Invia una credenziale nell’header Authorization. Va bene una qualsiasi delle due:
- Una chiave API:
Authorization: Bearer sth_.... Vedi Autenticazione. - Un token di accesso OAuth, che inizia con
sto_, emesso per questo endpoint e per nessun altro. Vedi la pagina di accesso con OAuth di questo riferimento.
Una richiesta senza nessuna delle due, o con una credenziale sbagliata, scaduta o revocata, risponde 401 con un’indicazione su dove accedere:
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Bearer realm="Setherion", resource_metadata="https://www.setherion.com/.well-known/oauth-protected-resource/api/mcp"{
"jsonrpc": "2.0",
"id": null,
"error": {
"code": -32001,
"message": "Sign in to Setherion to use this server, or send an API key from your account page as \"Authorization: Bearer sth_...\"."
}
}Un client senza credenziali segue resource_metadata per trovare l’accesso. I token funzionano solo su questo endpoint: gli endpoint REST di questo riferimento accettano una chiave API.
Metodi
| Metodo | Risposta |
|---|---|
initialize | La versione del protocollo, capabilities con { "tools": { "listChanged": false } }, serverInfo (setherion, Setherion, 1.0.0) e instructions per il modello. |
ping | {} |
tools/list | I sei strumenti qui sotto, con i loro schemi di input. |
tools/call | Esegue uno strumento. |
| Notifiche e risposte | 202 con il corpo {}. |
| Qualsiasi altro | Un errore JSON-RPC -32601, Method not found: <method>. |
curl -X POST https://www.setherion.com/api/mcp \
-H "Authorization: Bearer $SETHERION_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "jsonrpc": "2.0", "id": 1, "method": "tools/list" }'Strumenti
| Strumento | Chiama | Argomenti | Crediti |
|---|---|---|---|
list_projects | Elencare le tue app | query, offset (entrambi facoltativi) | Nessuno |
edit_project | Modificare un’app | project_id, instruction (entrambi obbligatori) | Gli stessi dell’editor |
edit_status | Seguire una modifica | project_id, run_id (entrambi obbligatori) | Nessuno |
publish_project | Pubblicare un’app | project_id | Nessuno |
store_guide | Preparazione per gli store | project_id, way (facoltativo) | Nessuno |
store_privacy_answers | Risposte sulla privacy per gli store | project_id, way (obbligatorio) | Nessuno |
write_store_listing | Scrivere la scheda dello store | project_id | Pochi, Pro e superiori |
instruction viene inviata come prompt della modifica, fino a 4.000 caratteri. way è easy o native. offset è un numero intero, 0 o più, e può essere inviato come testo. edit_project non accetta un modello: funziona con auto.
tools/list dà title, description, inputSchema e annotations di ogni strumento. Gli strumenti di lettura sono contrassegnati con readOnlyHint: true, e publish_project è contrassegnato come idempotente.
curl -X POST https://www.setherion.com/api/mcp \
-H "Authorization: Bearer $SETHERION_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "jsonrpc": "2.0", "id": 2, "method": "tools/call",
"params": { "name": "list_projects", "arguments": { "query": "coffee" } } }'Il risultato di uno strumento
Uno strumento risponde con il JSON del suo endpoint, in due forme per ogni tipo di client:
{
"jsonrpc": "2.0",
"id": 2,
"result": {
"content": [{ "type": "text", "text": "{ \"ok\": true, \"total\": 1, ... }" }],
"structuredContent": { "ok": true, "total": 1, "truncated": false, "offset": 0, "nextOffset": null, "projects": [] },
"isError": false
}
}(projects qui è abbreviato. Ha le voci descritte in Elencare le tue app.)
Quando l’endpoint rifiuta, isError è true, structuredContent viene omesso e content contiene soltanto la frase error dell’endpoint, da leggere per il modello. Anche una modifica che termina con ok: false è un errore in questo senso.
Modifiche lunghe
Una modifica richiede minuti. Invia la richiesta con Accept: text/event-stream e la risposta arriva in streaming:
- Ogni 10 secondi il server invia un evento
notifications/progress, conprogressimpostato sui secondi trascorsi e il messaggioStill editing, 30s so far, quando metti unprogressTokeninparams._meta. Senza un token invia una riga di commento,: still editing. Entrambi mantengono viva la connessione e permettono a un client di azzerare il suo timeout. - L’ultimo evento è il risultato dello strumento, come
event: messagecon la risposta JSON-RPC indata.
event: message
data: {"jsonrpc":"2.0","method":"notifications/progress","params":{"progressToken":"t1","progress":10,"message":"Still editing, 10s so far"}}
event: message
data: {"jsonrpc":"2.0","id":3,"result":{"content":[...],"structuredContent":{"ok":true,"runId":"..."},"isError":false}}Senza quell’header Accept la richiesta resta aperta e risponde con un solo oggetto JSON.
Una modifica ancora in corso dopo quattro minuti
edit_project aspetta al massimo circa quattro minuti, perché alcuni assistenti rinunciano a uno strumento che è rimasto in silenzio per cinque. Una modifica che sta ancora lavorando a quel punto risponde ok: true con status: "running" e il suo runId:
{
"ok": true,
"status": "running",
"runId": "b3f0e2d1-6a47-4c8e-9d15-0f2b7a3c8e61",
"projectId": "7c1e4a52-9b0d-4f3e-8a61-2d5f0c9e7b14",
"message": "Still editing. It carries on in Setherion without you: do not send it again. Call edit_status with this runId in a minute or so, until it says \"done\"."
}La modifica prosegue in Setherion. Chiama edit_status con project_id e run_id ogni minuto circa. Risponde come in Seguire una modifica, finché status non è done.
Chiudere la connessione non ferma la modifica
Un client che chiude la connessione, o invia una notifica di annullamento, lascia la modifica in corso e pagata. Arriva nell’app come se avessi aspettato. Per fermarla, premi Stop nell’editor di Setherion, sulla scheda che mostra la modifica in corso.
Errori
| Dove | Errore |
|---|---|
HTTP 401 | Codice JSON-RPC -32001. Vedi Autenticazione sopra. |
HTTP 403 | { "error": "Origin not allowed" } |
HTTP 405 | Codice -32000, Method not allowed. This server answers POST only. |
HTTP 400 | Codice -32700 Parse error per un corpo che non è JSON; -32600 per un batch, un messaggio che non è JSON-RPC 2.0 o un MCP-Protocol-Version non supportato. |
| Errore JSON-RPC | -32601 per un metodo che non esiste; -32602 per argomenti dello strumento sbagliati. |
Le frasi per gli argomenti dello strumento sbagliati
Tutte tornano con il codice -32602.
Unknown tool: <name>Arguments must be an object.Missing "project_id".(o qualsiasi argomento obbligatorio)Unknown argument "<name>"."<name>" must be a string."way" must be one of: easy, native."offset" must be a whole number, 0 or more.
I rifiuti degli strumenti stessi, come un’app che non viene trovata o un limite raggiunto, sono risultati di strumento con isError: true. Le loro frasi sono quelle elencate in Errori e limiti.
Questa pagina ti è stata utile?
