Configurazione diretta in Codex
Aggiungi questa sezione a ~/.codex/config.toml.
Su Windows il file si trova normalmente in %USERPROFILE%\.codex\config.toml.
Sostituisci YOUR_API_KEY con la chiave del servizio.
[mcp_servers.transmedia]
enabled = true
url = "https://mcp.transmedia.desme.digital/"
startup_timeout_sec = 30
tool_timeout_sec = 180
[mcp_servers.transmedia.http_headers]
x-api-key = "YOUR_API_KEY"
Dopo il salvataggio riavvia Codex per ricaricare la connessione. In chat puoi chiedere: «Usa Transmedia per elencare le categorie disponibili».
Questa configurazione usa l'header x-api-key.
bearer_token_env_var è un'alternativa per chi usa un token Bearer:
deve indicare il nome di una variabile d'ambiente realmente impostata, non il nome dell'header HTTP.
Autenticazione e opzioni
Per accedere ai dati usa uno dei due header equivalenti:
x-api-key: YOUR_API_KEY oppure Authorization: Bearer YOUR_API_KEY.
La chiave viene inoltrata al backend Transmedia, che applica i permessi dell'account.
initialize e tools/list possono rispondere anche senza chiave.
Vedere l'elenco degli strumenti non dimostra che l'accesso al catalogo sia autorizzato:
verifica anche una chiamata a list_categories.
| Header | Valore | Effetto |
|---|---|---|
X-Raw-Context | true, 1, yes |
Per i tool ask_*, recupera il contesto RAG senza generare una risposta con il modello del backend. La risposta è sincrona. Il client può usare il proprio modello per elaborare il contesto. |
X-Raw-Context | Assente o altro valore | Modalità predefinita: risposta del modello Transmedia. I tool ask_item e ask_organization possono usare SSE; ask_library segue il percorso sincrono. |
X-Transmedia-Url | URL HTTP(S) dell'istanza | Inoltra le richieste e la chiave API all'istanza indicata. Se manca, usa l'istanza Transmedia predefinita. Configuralo solo per un backend di tua fiducia. |
Esempio di opzioni aggiuntive in Codex, nella stessa sezione degli header:
[mcp_servers.transmedia.http_headers]
x-api-key = "YOUR_API_KEY"
X-Raw-Context = "true"
X-Transmedia-Url = "https://transmedia.desme.digital"
Altri client MCP
Claude Code
Per rendere Transmedia disponibile in tutti i tuoi progetti, esegui questo comando nel terminale. La riga singola funziona anche in PowerShell:
claude mcp add --transport http --scope user --header "x-api-key: YOUR_API_KEY" transmedia https://mcp.transmedia.desme.digital/
Sostituisci YOUR_API_KEY con la tua chiave. Lo scope user
salva la connessione personale in ~/.claude.json.
Usa --scope local per limitarla al progetto corrente mantenendola privata.
In alternativa, crea .mcp.json nella radice del progetto.
Questo esempio usa una variabile d'ambiente per la chiave:
{
"mcpServers": {
"transmedia": {
"type": "http",
"url": "https://mcp.transmedia.desme.digital/",
"headers": {
"x-api-key": "${TRANSMEDIA_API_KEY}"
}
}
}
}
Imposta la variabile prima di avviare Claude Code, scegliendo il comando della tua shell:
# PowerShell (sessione corrente)
$env:TRANSMEDIA_API_KEY = "YOUR_API_KEY"
# Bash / Zsh (sessione corrente)
export TRANSMEDIA_API_KEY="YOUR_API_KEY"
La configurazione .mcp.json ha scope project:
Claude Code può chiedere di approvarla al primo utilizzo. La variabile deve essere disponibile
nell'ambiente da cui avvii Claude Code.
Controlla la connessione dal terminale e, nella sessione interattiva, con /mcp:
claude mcp list
claude mcp get transmedia
Prova quindi: «Usa Transmedia per elencare le categorie disponibili».
Per abilitare il contesto RAG grezzo aggiungi "X-Raw-Context": "true"
alla sezione headers.
Configurazione MCP di Claude Code.
OpenCode
Inserisci il server in opencode.json. Per questa autenticazione con API key, disattiva l'avvio automatico di OAuth.
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"transmedia": {
"type": "remote",
"url": "https://mcp.transmedia.desme.digital/",
"enabled": true,
"oauth": false,
"headers": { "x-api-key": "YOUR_API_KEY" }
}
}
}
Configurazione MCP in OpenCode.
Cline
Apri la gestione MCP di Cline, aggiungi un server remoto e seleziona
Streamable HTTP. Imposta https://mcp.transmedia.desme.digital/ come URL e
x-api-key come header di autenticazione.
Usa il file di configurazione aperto da Cline: .claude/settings.json non è la configurazione MCP di Cline.
Continue
Aggiungi questo blocco alla sezione mcpServers di config.yaml.
Gli strumenti sono disponibili in modalità Agent.
mcpServers:
- name: Transmedia
type: streamable-http
url: https://mcp.transmedia.desme.digital/
requestOptions:
headers:
x-api-key: YOUR_API_KEY
Claude Desktop e ChatGPT sul web
La configurazione locale di Codex non si trasferisce automaticamente ad altri prodotti. Per collegare il server da un'interfaccia web, usa la procedura per i connettori remoti del prodotto e verifica che supporti l'autenticazione richiesta dal servizio.
Questo server inoltra una API key: non implementa un flusso OAuth.
Un connettore che non permette di impostare gli header di autenticazione non potrà accedere ai dati
con la sola URL. Le connessioni locali di Claude Desktop basate su command e
args richiedono un client o bridge dedicato per raggiungere un server HTTP.
Verifica manuale
Gli esempi seguenti usano la sintassi di una shell POSIX. Su PowerShell usa
curl.exe e adatta le continuazioni di riga, oppure usa MCP Inspector.
1. Inizializzazione
curl -X POST https://mcp.transmedia.desme.digital/ \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":"init-1","method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"manual-test","version":"1.0"}}}'
Atteso: risposta JSON-RPC con lo stesso id,
result.serverInfo.name = "transmedia-library" e capacità tools.
2. Conferma dell'inizializzazione
curl -i -X POST https://mcp.transmedia.desme.digital/ \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","method":"notifications/initialized"}'
Atteso: 202 Accepted senza corpo. Le notifiche non hanno un id.
3. Elenco degli strumenti
curl -X POST https://mcp.transmedia.desme.digital/ \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":"tools-1","method":"tools/list","params":{}}'
Atteso: result.tools con 15 definizioni.
4. Lettura autenticata
curl -X POST https://mcp.transmedia.desme.digital/ \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-H 'x-api-key: YOUR_API_KEY' \
-d '{"jsonrpc":"2.0","id":"read-1","method":"tools/call","params":{"name":"list_categories","arguments":{}}}'
Atteso: result.isError = false e categorie in result.content.
Controlla il contenuto della risposta: un errore del backend può essere restituito come risultato MCP
con isError: true, anche quando lo stato HTTP è 200.
Comportamento HTTP e SSE
POST /: richieste JSON-RPC; risposte JSON oppure SSE in base all'headerAccept.- Le risposte SSE usano
event: messageedata:con un oggetto JSON-RPC. Lo stream termina dopo la risposta finale. Non viene inviato un eventoendpoint. GET /da browser: questa pagina HTML.GET /conAccept: text/event-stream: 405, perché il server non offre un canale SSE standalone.OPTIONS /: 204 per il preflight CORS. Il server non assegna unMcp-Session-Id.- Durante le chiamate streaming, le notifiche
notifications/progressvengono inviate solo se la richiesta contieneparams._meta.progressToken.
Strumenti disponibili
Gli schemi aggiornati e i parametri obbligatori vengono restituiti da tools/list.
| Strumento | Uso | Parametri principali |
|---|---|---|
list_models | Modelli accessibili con la chiave corrente | Nessuno |
get_org | Informazioni e branding dell'organizzazione | Nessuno |
list_categories | Categorie del catalogo | Nessuno |
list_media_types | Tipi di media | Nessuno |
list_items | Ricerca e paginazione del catalogo | q, category, media_type, page, per_page |
get_item | Dettagli di un item | item_id |
get_item_relations | Relazioni di un item | item_id, min_score |
get_graph_seed | Nodi iniziali del grafo | Nessuno |
expand_graph | Esplorazione incrementale del grafo | known, limit, min_score |
ask_item | Domanda su un item | item_id, question |
ask_organization | Domanda sul catalogo; richiede admin o superadmin | question |
ask_library | Delega all'organizzazione o a un item specifico | query, item_id opzionale |
get_resource_content | Riassunto e testo estratto di una risorsa | resource_id |
resolve_labels | Etichette leggibili per le citazioni | doc_ids |
get_chunks | Testo completo dei passaggi citati | doc_ids, item_id opzionale |
Usare il catalogo e verificare le fonti
- Se l'item non è noto, usa
ask_organizationoask_libraryper identificare gli item rilevanti. Per cercare per parola chiave usalist_items. - Leggi i dettagli con
get_iteme, se serve, esplora le relazioni. - Verifica i passaggi citati con
get_chunks; usaresolve_labelsper associare ogni citazione a una fonte leggibile. - Per approfondimenti su un item usa
ask_item. Riporta le fonti insieme alla risposta.
Problemi frequenti
- Gli strumenti non compaiono
- Controlla URL, trasporto Streamable HTTP, server abilitato e caricamento della configurazione.
Riavvia il client e verifica
initializeetools/list. - «connection closed: initialize response» o errore di deserializzazione
- Verifica che tutti i file aggiornati siano stati pubblicati, inclusi
index.phpemcp/errors.php. Il POST non deve iniziare conevent: endpoint. - 401 / Invalid or missing API key
- Controlla la chiave e l'header di autenticazione. Un elenco strumenti riuscito non verifica la chiave.
- 403
- La chiave non autorizza la risorsa o il modello richiesto. Controlla ruolo e ambito di accesso.
- 429
- È stato raggiunto il limite di richieste. Rispetta il valore dell'header
Retry-After. - Timeout nelle risposte AI
- Controlla timeout del client e del backend. Per il percorso streaming, verifica che il proxy non accumuli gli eventi SSE prima di inoltrarli.
- 405 sulla GET SSE
- È il comportamento previsto: il client deve inizializzare la connessione con un POST Streamable HTTP.