HomeBlogTranscribePlansAPI Keys

MCP con la OpenAI Responses API: trascrizioni YouTube per GPT-5

OpenAI Responses API che si connette a un server MCP remoto per recuperare una trascrizione YouTube

La OpenAI Responses API può chiamare direttamente server MCP remoti — dichiari il server in tools, e il modello scopre e chiama i suoi tool in autonomia. Collega il server MCP di youtube2text.org e GPT-5 può recuperare qualsiasi trascrizione YouTube nel mezzo di una conversazione senza che tu scriva una sola chiamata di fetch. Ho testato esattamente questa configurazione contro gpt-5 oggi; la config qui sotto è pronta da copiare e incollare.

Il blocco tool

Questa è l'intera integrazione:

{
  "type": "mcp",
  "server_label": "youtube2text",
  "server_url": "https://youtube2text.org/mcp",
  "headers": {"x-api-key": "YOUR_KEY"},
  "require_approval": "never"
}

Il campo headers inoltra la tua chiave API di youtube2text al server a ogni chiamata. require_approval: "never" salta il giro di approvazione umana — ragionevole in questo caso, dato che l'unico tool è un fetch di trascrizione in sola lettura. Ottieni una chiave con l'accesso Google su youtube2text.org/app/keys, oppure prendi la chiave demo condivisa da GET https://youtube2text.org/api/demo-key (5 video al mese per IP).

Esempio Python completo

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)

Tutto qui. Nessun codice per recuperare la trascrizione, nessun parsing, nessun assemblaggio di prompt. Il modello decide che gli serve la trascrizione, chiama il tool, legge il risultato e scrive il riassunto.

Cosa succede sotto il cofano

Scorri resp.output e vedrai il meccanismo:

  1. Per primo compare un item mcp_list_tools. La Responses API si è connessa a https://youtube2text.org/mcp e ha scaricato il manifest dei tool — nel nostro caso un singolo tool, transcribe_video(url, maxChars?), che restituisce {title, content, contentSize, videoId, pubDate, truncated}. Questo import avviene una volta per conversazione e viene messo in cache nei turni successivi.
  2. Quando il modello decide di chiamarlo, compare un item mcp_call con gli argomenti scelti ({"url": "https://www.youtube.com/watch?v=..."}) e, una volta che il server risponde, l'output completo del tool.
  3. Infine un normale item message con la risposta del modello, che è ciò che ti dà output_text.

Il server è streamable HTTP e stateless, quindi non c'è alcun handshake di sessione da gestire — ogni chiamata è a sé stante. Se un video non ha sottotitoli il tool restituisce un errore TRANSCRIPT_UNAVAILABLE, che il modello riferisce in linguaggio naturale invece di far crashare la tua esecuzione.

Una stranezza che vale la pena conoscere

GPT-5 riassumerà, analizzerà e citerà volentieri brevi frammenti delle trascrizioni. Ma chiedigli di riprodurre lunghi passaggi letterali e potrebbe rifiutarsi — i guardrail sul copyright di OpenAI scattano sulla riproduzione estesa parola per parola di contenuti di terzi. Nei miei test di oggi, riassunti, estrazione di argomenti e Q&A hanno funzionato tutti senza attriti; "restituiscimi la trascrizione completa" no. Se ti serve il testo grezzo, salta del tutto il modello e chiama l'endpoint REST con curl — altrimenti stai pagando token per riciclare la risposta della tua stessa API.

Nota sui costi

Le trascrizioni sono grandi. Un'ora di parlato sono all'incirca 8.000-10.000 parole, che finiscono tutte nel contesto di GPT-5 come output del tool e vengono fatturate come token di input. Se riassumi a volume, passa maxChars nell'istruzione del prompt (il modello lo inoltra come argomento del tool) oppure preprocessa con qualcosa di più economico.

Stesso server, altri client

Lo stesso identico endpoint MCP funziona con Claude — tramite il blocco mcp_servers della Messages API o come connettore claude.ai e in Claude Code — quindi una sola chiave youtube2text copre tutto il tuo zoo di agenti.

Chiavi e piani (dal gratuito con 5 al mese fino all'illimitato a 19,99 $) si trovano su youtube2text.org/app/keys.