Zbuduj klienta asystenta
Serwer MCP
Punkt końcowy MCP Setherion do budowania własnego klienta: transport, uwierzytelnianie, narzędzia i błędy.
https://www.setherion.com/api/mcpPlan: Każdy plan
Setherion ma serwer MCP, standardowy sposób, w jaki asystenci AI korzystają z innych usług. Jeśli chcesz używać go tylko z Claude, ChatGPT, Cursor lub VS Code, skorzystaj z MCP: podłącz asystenta AI. Ta strona jest dla tych, którzy budują własnego klienta.
Serwer to API innym głosem. Każde narzędzie to wywołanie punktu końcowego o tej samej nazwie w tej dokumentacji, wykonane z własnymi poświadczeniami wywołującego, więc serwer nigdy nie może zrobić więcej niż API.
Transport
- Streamable HTTP, bez stanu. Wysyłaj każdą wiadomość jako jedną wiadomość JSON-RPC 2.0 w treści żądania
POST. Nie ma sesji i nie ma czego wznawiać. - Wersje protokołu
2025-06-18i2025-03-26.initializeodpowiada wersją, o którą poprosisz, jeśli jest jedną z tych, a w przeciwnym razie2025-06-18. Poinitializewysyłaj wersję w nagłówkuMCP-Protocol-Version. Inna wartość jest odrzucana z400. - Tylko narzędzia. Serwer nie oferuje zasobów ani promptów i nie wysyła własnych wiadomości.
- Jedna wiadomość na żądanie. Paczka wiadomości jest odrzucana z
400. GETiDELETEodpowiadają405zAllow: POST.- Origin. Żądanie ze strony w przeglądarce musi pochodzić z
https://www.setherion.com. Każdy innyOriginodpowiada403. Żądania z programów go nie mają i są dozwolone.
Zachowaj www w adresie. Adres bez niego przekierowuje, a przekierowanie gubi poświadczenia.
Uwierzytelnianie
Wyślij poświadczenia w nagłówku Authorization. Działa jedno i drugie:
- Klucz API:
Authorization: Bearer sth_.... Zobacz Uwierzytelnianie. - Token dostępu OAuth, który zaczyna się od
sto_, wydany dla tego punktu końcowego i żadnego innego. Zobacz stronę logowania przez OAuth w tej dokumentacji.
Żądanie bez żadnych poświadczeń albo z poświadczeniami błędnymi, wygasłymi lub cofniętymi odpowiada 401 ze wskazaniem, gdzie się zalogować:
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_...\"."
}
}Klient bez poświadczeń idzie za resource_metadata, aby znaleźć logowanie. Tokeny działają tylko w tym punkcie końcowym: punkty końcowe REST w tej dokumentacji przyjmują klucz API.
Metody
| Metoda | Odpowiedź |
|---|---|
initialize | Wersja protokołu, capabilities o wartości { "tools": { "listChanged": false } }, serverInfo (setherion, Setherion, 1.0.0) i instructions dla modelu. |
ping | {} |
tools/list | Sześć narzędzi poniżej, z ich schematami wejścia. |
tools/call | Uruchamia narzędzie. |
| Powiadomienia i odpowiedzi | 202 z treścią {}. |
| Cokolwiek innego | Błąd 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" }'Narzędzia
| Narzędzie | Wywołuje | Argumenty | Kredyty |
|---|---|---|---|
list_projects | Lista Twoich aplikacji | query, offset (oba opcjonalne) | Brak |
edit_project | Edycja aplikacji | project_id, instruction (oba wymagane) | Tyle co w edytorze |
edit_status | Śledzenie edycji | project_id, run_id (oba wymagane) | Brak |
publish_project | Publikowanie aplikacji | project_id | Brak |
store_guide | Gotowość do sklepów (API) | project_id, way (opcjonalny) | Brak |
store_privacy_answers | Odpowiedzi o prywatności w sklepach | project_id, way (wymagany) | Brak |
write_store_listing | Pisanie strony sklepowej | project_id | Kilka, Pro i wyżej |
instruction jest wysyłane jako prompt edycji, do 4 000 znaków. way to easy lub native. offset to liczba całkowita, 0 lub więcej, którą można wysłać jako tekst. edit_project nie przyjmuje modelu: działa na auto.
tools/list podaje dla każdego narzędzia title, description, inputSchema i annotations. Narzędzia tylko do odczytu są oznaczone readOnlyHint: true, a publish_project jest oznaczone jako idempotentne.
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" } } }'Wynik narzędzia
Narzędzie odpowiada JSON-em swojego punktu końcowego, w dwóch postaciach dla każdego rodzaju klienta:
{
"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 jest tu skrócone. Ma wpisy opisane na stronie Lista Twoich aplikacji.)
Gdy punkt końcowy odmawia, isError ma wartość true, structuredContent jest pomijane, a content zawiera samo zdanie error punktu końcowego, do przeczytania przez model. Edycja, która kończy się ok: false, jest w tym sensie także błędem.
Długie edycje
Edycja trwa minuty. Wyślij żądanie z Accept: text/event-stream, a odpowiedź będzie strumieniowana:
- Co 10 sekund serwer wysyła zdarzenie
notifications/progress, zprogressustawionym na dotychczasowe sekundy i komunikatemStill editing, 30s so far, gdy umieściszprogressTokenwparams._meta. Bez tokena wysyła wiersz komentarza,: still editing. Jedno i drugie utrzymuje połączenie i pozwala klientowi zresetować limit czasu. - Ostatnie zdarzenie to wynik narzędzia, jako
event: messagez odpowiedzią JSON-RPC wdata.
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}}Bez tego nagłówka Accept żądanie pozostaje otwarte i odpowiada jednym obiektem JSON.
Edycja nadal trwa po czterech minutach
edit_project czeka najwyżej około czterech minut, ponieważ niektórzy asystenci rezygnują z narzędzia, które milczy przez pięć. Edycja, która nadal trwa, odpowiada wtedy ok: true ze status: "running" i swoim 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\"."
}Edycja trwa dalej w Setherion. Wywołuj edit_status z project_id i run_id mniej więcej co minutę. Odpowiada tak jak w Śledzenie edycji, aż status będzie done.
Zamknięcie połączenia nie zatrzymuje edycji
Klient, który zamyka połączenie albo wysyła powiadomienie o anulowaniu, zostawia edycję w toku i opłaconą. Trafia do aplikacji tak, jakby edycja została doczekana do końca. Aby ją zatrzymać, naciśnij Stop w edytorze Setherion, na karcie pokazującej trwającą edycję.
Błędy
| Gdzie | Błąd |
|---|---|
HTTP 401 | Kod JSON-RPC -32001. Zobacz Uwierzytelnianie powyżej. |
HTTP 403 | { "error": "Origin not allowed" } |
HTTP 405 | Kod -32000, Method not allowed. This server answers POST only. |
HTTP 400 | Kod -32700 Parse error dla treści, która nie jest JSON-em; -32600 dla paczki wiadomości, wiadomości, która nie jest JSON-RPC 2.0, albo nieobsługiwanego MCP-Protocol-Version. |
| Błąd JSON-RPC | -32601 dla metody, która nie istnieje; -32602 dla błędnych argumentów narzędzia. |
Zdania dla błędnych argumentów narzędzia
Wszystkie wracają z kodem -32602.
Unknown tool: <name>Arguments must be an object.Missing "project_id".(lub dowolny inny wymagany argument)Unknown argument "<name>"."<name>" must be a string."way" must be one of: easy, native."offset" must be a whole number, 0 or more.
Odmowy samych narzędzi, takie jak nieznaleziona aplikacja albo osiągnięty limit, są wynikami narzędzi z isError: true. Ich zdania są te wymienione na stronie Błędy i limity.
Czy ta strona była pomocna?
