API i MCP

Serwer MCP

Serwer MCP Diaform łączy Twojego agenta AI z opiniami, które zbierasz. Po połączeniu możesz zadawać agentowi pytania w rodzaju „Na co klienci narzekali w tym miesiącu?”, a on pobierze rozmowy, podsumowania i raporty.

MCP (Model Context Protocol) to standardowy sposób łączenia agentów AI z zewnętrznymi narzędziami. Serwer udostępnia te same dane co REST API, działa tylko do odczytu i używa tego samego klucza API.

Zanim zaczniesz#

Potrzebujesz planu Pro, Business lub Enterprise i klucza API. Osoby z rolami Właściciel i Administrator tworzą klucze w Ustawienia → Ogólne → Klucze API. Zobacz Przegląd API.

UstawienieWartość
URL serwerahttps://diaform.io/api/mcp
TransportStreamable HTTP
UwierzytelnianieNagłówek Authorization: Bearer dia_org_live_...

Klucz daje agentowi dostęp do odczytu wszystkich projektów w Twojej organizacji. Utwórz osobny klucz dla każdego agenta, żeby móc unieważnić jeden bez wpływu na pozostałe.

Połącz swojego agenta#

Wybierz swojego agenta:

Uruchom to polecenie w terminalu:

Shell
claude mcp add --transport http diaform https://diaform.io/api/mcp \
  --header "Authorization: Bearer $DIAFORM_API_KEY"

Potem uruchom /mcp w Claude Code, żeby sprawdzić, czy diaform jest połączony.

Narzędzia#

Agent widzi sześć narzędzi tylko do odczytu:

NarzędzieCo robiArgumenty
list_projectsZwraca listę wszystkich projektów z ID, nazwą i statusemBrak
get_projectZwraca jeden projekt z pytaniami i liczbą rozmówproject_id
list_conversationsZwraca listę rozmów w projekcie z respondentem, sentymentem i podsumowaniem AIproject_id oraz opcjonalnie status, sentiment, created_after, created_before, search, limit, cursor
get_conversationZwraca jedną rozmowę z podsumowaniem i pełną transkrypcjąconversation_id
list_reportsZwraca listę raportów AI w projekcieproject_id oraz opcjonalnie status, limit, cursor
get_reportZwraca jeden raport AI z tematami, problemami, odosobnionymi głosami i cytatamireport_id

Każde narzędzie zwraca ten sam JSON co jego endpoint REST. Pola są opisane na stronach Projekty, Rozmowy i Raporty. status i sentiment to tablice, np. ["completed"].

Listy zwracają do 100 elementów naraz. Gdy wynik zawiera has_more: true, agent przekazuje next_cursor jako cursor, żeby pobrać następną stronę.

O co możesz zapytać#

  • „Wypisz moje projekty w Diaform i powiedz, który zebrał najwięcej odpowiedzi.”
  • „Przeczytaj zakończone rozmowy z ostatnich 30 dni w projekcie o onboardingu i pogrupuj skargi według tematów.”
  • „Znajdź rozmowy, w których mowa o cenach, i zacytuj, co powiedzieli ludzie.”
  • „Podsumuj najnowszy raport AI i przygotuj szkic aktualizacji na Slack dla zespołu produktowego.”
  • „Pobierz pełną transkrypcję najbardziej negatywnej rozmowy z tego tygodnia.”

Błędy i limity#

Brak klucza, unieważniony klucz albo plan bez dostępu do API kończy połączenie błędem HTTP 401 lub 403. Twój klient zwykle pokazuje wtedy, że serwer nie działa albo nie ma autoryzacji.

Gdy wywołanie narzędzia się nie powiedzie, na przykład z powodu błędnego ID, agent dostaje te same wartości error i code co w REST API i może sam się poprawić. Zobacz Błędy.

Żądania MCP liczą się do tego samego limitu co REST API: 120 żądań na minutę na każdy klucz.

Szczegóły techniczne#

Jeśli budujesz własnego klienta:

  • Wysyłaj komunikaty JSON-RPC 2.0 przez POST https://diaform.io/api/mcp. Serwer odpowiada na każde żądanie jedną odpowiedzią JSON, a nie strumieniem zdarzeń.
  • Serwer jest bezstanowy. Nie wydaje ID sesji, a GET i DELETE zwracają 405.
  • Obsługiwane wersje protokołu to 2025-06-18, 2025-03-26 i 2024-11-05.
  • Implementuje initialize, ping, tools/list i tools/call. Nie ma zasobów ani promptów.
Shell
curl -X POST "https://diaform.io/api/mcp" \
  -H "Authorization: Bearer $DIAFORM_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
      "name": "list_conversations",
      "arguments": {
        "project_id": "b8acb3ab-1f3d-4a7e-a846-b7f493f86b6d",
        "status": ["completed"],
        "limit": 10
      }
    }
  }'