MCP w OpenAI Responses API: transkrypcje z YouTube dla GPT-5

OpenAI Responses API potrafi wywoływać zdalne serwery MCP bezpośrednio — deklarujesz serwer w tools, a model sam odkrywa i wywołuje jego narzędzia. Podłącz serwer MCP youtube2text.org, a GPT-5 pobierze dowolną transkrypcję z YouTube w trakcie rozmowy, bez jednego napisanego przez Ciebie wywołania fetch. Testowałem dokładnie tę konfigurację na gpt-5 dzisiaj; poniższy config jest gotowy do skopiowania.
Blok narzędzia
To jest cała integracja:
{
"type": "mcp",
"server_label": "youtube2text",
"server_url": "https://youtube2text.org/mcp",
"headers": {"x-api-key": "YOUR_KEY"},
"require_approval": "never"
}
Pole headers przekazuje Twój klucz API youtube2text do serwera przy każdym wywołaniu. require_approval: "never" pomija rundę zatwierdzania przez człowieka — rozsądne w tym przypadku, bo jedyne narzędzie to pobieranie transkrypcji tylko do odczytu. Klucz zdobędziesz przez logowanie Google na youtube2text.org/app/keys albo weź współdzielony klucz demo z GET https://youtube2text.org/api/demo-key (5 filmów miesięcznie na IP).
Pełny przykład w Pythonie
from openai import OpenAI
client = OpenAI()
resp = client.responses.create(
model="gpt-5",
tools=[{
"type": "mcp",
"server_label": "youtube2text",
"server_url": "https://youtube2text.org/mcp",
"headers": {"x-api-key": "YOUR_KEY"},
"require_approval": "never",
}],
input="Summarize https://www.youtube.com/watch?v=dQw4w9WgXcQ "
"in five bullet points.",
)
print(resp.output_text)
To wszystko. Żadnego kodu pobierającego transkrypcję, żadnego parsowania, żadnego sklejania promptów. Model uznaje, że potrzebuje transkrypcji, wywołuje narzędzie, czyta wynik i pisze streszczenie.
Co dzieje się pod maską
Przejdź po resp.output, a zobaczysz całą maszynerię:
- Najpierw pojawia się element
mcp_list_tools. Responses API połączyło się zhttps://youtube2text.org/mcpi pobrało manifest narzędzi — w naszym przypadku jedno narzędzie,transcribe_video(url, maxChars?), które zwraca{title, content, contentSize, videoId, pubDate, truncated}. Ten import następuje raz na rozmowę i jest cache'owany w kolejnych turach. - Gdy model decyduje się je wywołać, pojawia się element
mcp_callz wybranymi przez niego argumentami ({"url": "https://www.youtube.com/watch?v=..."}) oraz, gdy serwer odpowie, pełnym wynikiem narzędzia. - Na końcu zwykły element
messagez odpowiedzią modelu — to właśnie zwracaoutput_text.
Serwer jest strumieniowalny po HTTP i bezstanowy, więc nie ma żadnego handshake'u sesji do zarządzania — każde wywołanie jest samodzielne. Jeśli film nie ma napisów, narzędzie zwraca błąd TRANSCRIPT_UNAVAILABLE, który model przekazuje zwykłym językiem, zamiast wywalać Twój przebieg.
Jedna osobliwość warta znajomości
GPT-5 chętnie streszcza, analizuje i cytuje krótkie fragmenty transkrypcji. Poproś go jednak o odtworzenie długich dosłownych fragmentów, a może odmówić — zabezpieczenia OpenAI dotyczące praw autorskich włączają się przy dłuższej reprodukcji cudzych treści słowo w słowo. W moich dzisiejszych testach streszczenia, ekstrakcja tematów i Q&A działały bez tarcia; „oddaj mi pełną transkrypcję" — nie. Jeśli potrzebujesz surowego tekstu, pomiń model całkowicie i uderz w endpoint REST przez curl — w przeciwnym razie płacisz tokenami za pranie własnej odpowiedzi API.
Uwaga o kosztach
Transkrypcje są duże. Godzina mówienia to z grubsza 8 000-10 000 słów, które w całości lądują w kontekście GPT-5 jako wynik narzędzia i są rozliczane jako tokeny wejściowe. Jeśli streszczasz na dużą skalę, przekaż maxChars w instrukcji promptu (model prześle go jako argument narzędzia) albo przetwarzaj wstępnie czymś tańszym.
Ten sam serwer, inni klienci
Identyczny endpoint MCP działa z Claude — przez blok mcp_servers w Messages API albo jako konektor claude.ai i w Claude Code — więc jeden klucz youtube2text obsługuje całe Twoje zoo agentów.
Klucze i plany (od darmowych 5 miesięcznie po nielimitowany za 19,99 USD) znajdziesz na youtube2text.org/app/keys.