Zbuduj klienta asystenta

Serwer MCP

Punkt końcowy MCP Setherion do budowania własnego klienta: transport, uwierzytelnianie, narzędzia i błędy.

POSThttps://www.setherion.com/api/mcp

Plan: 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-18 i 2025-03-26. initialize odpowiada wersją, o którą poprosisz, jeśli jest jedną z tych, a w przeciwnym razie 2025-06-18. Po initialize wysyłaj wersję w nagłówku MCP-Protocol-Version. Inna wartość jest odrzucana z 400.
  • 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.
  • GET i DELETE odpowiadają 405 z Allow: POST.
  • Origin. Żądanie ze strony w przeglądarce musi pochodzić z https://www.setherion.com. Każdy inny Origin odpowiada 403. Żą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
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Bearer realm="Setherion", resource_metadata="https://www.setherion.com/.well-known/oauth-protected-resource/api/mcp"
json
{
  "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

MetodaOdpowiedź
initializeWersja protokołu, capabilities o wartości { "tools": { "listChanged": false } }, serverInfo (setherion, Setherion, 1.0.0) i instructions dla modelu.
ping{}
tools/listSześć narzędzi poniżej, z ich schematami wejścia.
tools/callUruchamia narzędzie.
Powiadomienia i odpowiedzi202 z treścią {}.
Cokolwiek innegoBłąd JSON-RPC -32601, Method not found: <method>.
bash
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ędzieWywołujeArgumentyKredyty
list_projectsLista Twoich aplikacjiquery, offset (oba opcjonalne)Brak
edit_projectEdycja aplikacjiproject_id, instruction (oba wymagane)Tyle co w edytorze
edit_statusŚledzenie edycjiproject_id, run_id (oba wymagane)Brak
publish_projectPublikowanie aplikacjiproject_idBrak
store_guideGotowość do sklepów (API)project_id, way (opcjonalny)Brak
store_privacy_answersOdpowiedzi o prywatności w sklepachproject_id, way (wymagany)Brak
write_store_listingPisanie strony sklepowejproject_idKilka, 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.

bash
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:

json
{
  "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, z progress ustawionym na dotychczasowe sekundy i komunikatem Still editing, 30s so far, gdy umieścisz progressToken w params._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: message z odpowiedzią JSON-RPC w data.
text
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:

json
{
  "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

GdzieBłąd
HTTP 401Kod JSON-RPC -32001. Zobacz Uwierzytelnianie powyżej.
HTTP 403{ "error": "Origin not allowed" }
HTTP 405Kod -32000, Method not allowed. This server answers POST only.
HTTP 400Kod -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?

Dołącz do społeczności

Pytania, pomysły i to, co budują inni.