Serveur MCP des séances de cinéma : demandez le programme à Claude, Cursor ou Copilot

Brancher le serveur MCP d’API Cinéma sur Claude Code, Cursor, VS Code ou Claude Desktop en quelques lignes de configuration, et obtenir les séances en France et aux États-Unis en langage courant.

6 min de lecture

Sur cette page
  1. Comment ça marche
  2. Ce qu’il vous faut
  3. 1.Claude Code
  4. 2.Cursor
  5. 3.VS Code avec Copilot
  6. 4.Claude Desktop
  7. 5.Depuis votre propre code
  8. Les questions qui marchent bien
  9. Combien de requêtes ça coûte ?
  10. Protéger la clé
  11. Pour aller plus loin

« Qu’est-ce qui passe ce soir au Comoedia ? », « où voir le nouveau Spielberg en VO près de Châtelet samedi ? » : avec le serveur MCP d’API Cinéma, vous posez la question à Claude, Cursor ou Copilot, qui répond avec les séances en direct. Aucun code à écrire : une ligne ou quelques lignes de configuration, et votre clé API.

› Qu’est-ce qui passe ce soir au Comoedia à Lyon, en VOST ?
Claude : Ce soir au Comoedia (Lyon), en version originale sous-titrée :
Wicker à 18 h 05 et 20 h 10, Les Diables à 18 h 25, Minotaure à 20 h 30. Réservation : cinema-comoedia.com

Comment ça marche

MCP (Model Context Protocol) est un standard pour donner des outils à un assistant IA. API Cinéma expose son API comme serveur MCP à l’adresse https://api.api-cinema.com/mcp (Streamable HTTP). L’assistant lit la liste des outils, choisit ceux dont il a besoin et les appelle avec votre clé :

Outil Ce qu’il fait
search_cinemas Cinémas par ville, nom, code postal ou autour d’un point
get_cinema Adresse, salles, site et billetterie d’un cinéma
cinema_showtimes Le programme d’un cinéma, pour un jour ou une plage horaire
search_movies Films par titre, au besoin seulement ceux à l’affiche
movie_showtimes Où et quand passe un film, dans une ville ou autour d’un point
search_showtimes Séances filtrées par ville, distance, film, jour et version

Le serveur couvre environ 2 000 cinémas en France et plus de 3 000 aux États-Unis. Les horaires sont à l’heure locale de chaque cinéma. Chaque appel d’outil passe par les mêmes contrôles que l’API REST et compte pour une requête.

Ce qu’il vous faut

  • Une clé API Cinéma : créez un compte gratuit, confirmez votre adresse e-mail, puis créez une clé depuis le tableau de bord. L’offre gratuite donne 150 requêtes par semaine, assez pour un usage personnel : une question coûte deux ou trois appels d’outils.
  • Un client MCP qui envoie un en-tête Authorization : Claude Code, Cursor, VS Code avec Copilot, Claude Desktop (via un petit pont, voir plus bas), ou votre propre code.

Gardez la clé dans une variable d’environnement plutôt que dans les fichiers de configuration : un fichier partagé ou commité par erreur ne l’emporte pas avec lui.

Terminal
export API_CINEMA_KEY="ac_live_…"   # dans ~/.zshrc ou ~/.bashrc pour la garder

Claude Code

Une commande ajoute le serveur à votre configuration utilisateur, disponible dans tous vos projets :

Terminal
claude mcp add --transport http --scope user api-cinema https://api.api-cinema.com/mcp \
  --header "Authorization: Bearer $API_CINEMA_KEY"

Pour partager le serveur avec une équipe, mettez-le plutôt dans un fichier .mcp.json à la racine du projet. Claude Code remplace ${API_CINEMA_KEY} au démarrage : le fichier ne contient aucun secret et peut être commité, chaque développeur définit la variable avec sa propre clé.

.mcp.json
{
  "mcpServers": {
    "api-cinema": {
      "type": "http",
      "url": "https://api.api-cinema.com/mcp",
      "headers": { "Authorization": "Bearer ${API_CINEMA_KEY}" }
    }
  }
}

Lancez claude dans le projet, approuvez le serveur, puis tapez /mcp pour voir ses six outils. Ensuite, posez la question en langage courant : « qu’est-ce qui passe ce soir au Comoedia à Lyon ? ».

Cursor

Dans ~/.cursor/mcp.json (tous les projets) ou .cursor/mcp.json (un projet). Cursor remplace ${env:NOM} dans les en-têtes :

~/.cursor/mcp.json
{
  "mcpServers": {
    "api-cinema": {
      "url": "https://api.api-cinema.com/mcp",
      "headers": { "Authorization": "Bearer ${env:API_CINEMA_KEY}" }
    }
  }
}

Le serveur apparaît dans Settings › MCP, avec ses outils ; l’agent s’en sert dès qu’une question porte sur des cinémas ou des films. Cursor lit l’environnement depuis lequel il a été lancé : ouvrez-le depuis un terminal où API_CINEMA_KEY est définie, ou écrivez la clé dans le fichier s’il ne sort pas de votre machine.

VS Code avec Copilot

Dans .vscode/mcp.json, VS Code peut demander la clé une fois et la garder dans son stockage de secrets, plutôt que dans le fichier :

.vscode/mcp.json
{
  "inputs": [
    { "type": "promptString", "id": "api-cinema-key", "description": "Clé API Cinéma", "password": true }
  ],
  "servers": {
    "api-cinema": {
      "type": "http",
      "url": "https://api.api-cinema.com/mcp",
      "headers": { "Authorization": "Bearer ${input:api-cinema-key}" }
    }
  }
}

Attention à la clé servers au premier niveau : le format de VS Code diffère du mcpServers des autres clients. Démarrez le serveur depuis le fichier (le lien Start au-dessus), saisissez la clé, puis interrogez Copilot en mode agent.

Claude Desktop

Claude Desktop se connecte aux serveurs distants par les connecteurs personnalisés, qui s’authentifient en OAuth ; le serveur d’API Cinéma prend une clé API. Le pont mcp-remote fait le lien : Claude Desktop le lance comme un serveur local, et il transmet chaque appel avec votre en-tête. Dans Réglages › Développeur › Modifier la config :

claude_desktop_config.json
{
  "mcpServers": {
    "api-cinema": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://api.api-cinema.com/mcp", "--header", "Authorization:${AUTH_HEADER}"],
      "env": { "AUTH_HEADER": "Bearer ac_live_…" }
    }
  }
}

L’en-tête est écrit sans espace après les deux-points, et la valeur vient de env, exprès : certains clients coupent les arguments sur les espaces en lançant npx. Node.js 20 ou plus récent doit être installé. Redémarrez Claude Desktop : les outils apparaissent sous l’icône des outils de la zone de saisie.

Depuis votre propre code

Toute bibliothèque cliente MCP se connecte de la même façon. En Node.js, avec le SDK officiel (npm install @modelcontextprotocol/sdk) :

client.js
import { Client } from '@modelcontextprotocol/sdk/client/index.js'
import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js'

const transport = new StreamableHTTPClientTransport(new URL('https://api.api-cinema.com/mcp'), {
  requestInit: { headers: { Authorization: `Bearer ${process.env.API_CINEMA_KEY}` } },
})
const client = new Client({ name: 'showtimes-script', version: '1.0.0' })
await client.connect(transport)

const { tools } = await client.listTools()
console.log(tools.map(t => t.name).join(', '))

const result = await client.callTool({ name: 'search_cinemas', arguments: { city: 'Lyon', limit: 3 } })
const { data } = JSON.parse(result.content[0].text)
for (const cinema of data)
  console.log(`${cinema.name} (${cinema.slug})`)

await client.close()
Terminal
node client.js

Chaque outil renvoie en texte le JSON de la route REST correspondante, avec les mêmes champs que dans la documentation. Pour un script sans modèle, appeler l’API REST directement est plus simple ; le client MCP est la pièce à brancher dans un framework d’agents qui parle MCP. Pour construire votre propre chatbot avec des outils que vous contrôlez, voir le tutoriel chatbot.

Les questions qui marchent bien

  • « Qu’est-ce qui passe ce soir au Pathé Wepler ? » → search_cinemas, puis cinema_showtimes.
  • « Où voir Minotaure en VO à Lyon ce week-end ? » → search_movies, puis movie_showtimes avec city et version.
  • « Les cinémas à moins de 5 km de 48.8584, 2.2945 avec une séance après 21 h ? » → search_showtimes avec lat, lng et from.
  • « Quels films commencent entre 18 h et 19 h au Comoedia samedi ? » → cinema_showtimes avec from et to.

Précisez la ville ou le pays : un nom comme « Paris » existe en France et au Texas. Les outils renvoient 20 résultats par défaut, assez pour une réponse et léger pour le contexte du modèle ; demandez-en plus (« toute la semaine ») et l’assistant augmente limit.

Combien de requêtes ça coûte ?

Une par appel d’outil : deux ou trois pour une question courante (trouver le cinéma ou le film, puis ses séances). Les 150 requêtes par semaine de l’offre gratuite couvrent une cinquantaine de questions ; pour une équipe ou un usage quotidien, Starter (12 € par mois) en donne 10 000 par semaine. Le tableau de bord affiche chaque appel, MCP ou REST, sur le même graphique de consommation.

Protéger la clé

  • La clé reste dans la configuration de votre client, sur votre machine. Elle n’est jamais dans le prompt et le modèle ne la voit pas : le client ajoute l’en-tête à chaque appel.
  • Hors des fichiers partagés. .mcp.json, .cursor/mcp.json et .vscode/mcp.json sont souvent commités : référencez-y une variable d’environnement ou une saisie, jamais la clé elle-même.
  • Une clé par usage. Une clé pour votre assistant, une autre pour votre appli en production : vous pouvez révoquer l’une depuis le tableau de bord sans couper l’autre.
  • Lecture seule. Les outils ne font que lire des données publiques de séances ; aucun n’écrit ni ne supprime quoi que ce soit, un assistant peut donc les appeler sans demander à chaque fois.

Pour aller plus loin

  • Via l’API de Claude ou d’OpenAI. Les deux API savent appeler un serveur MCP distant à votre place : l’API Messages de Claude avec son connecteur MCP (mcp_servers, la clé dans authorization_token), l’API Responses d’OpenAI avec un outil mcp (server_url, la clé dans authorization). Votre serveur envoie une requête, le fournisseur fait les appels d’outils.
  • Automatisations sans code. Le nœud MCP Client Tool de n8n prend la même adresse, avec la clé comme identifiant d’en-tête : un agent IA qui publie « ce soir au cinéma » dans un canal chaque soir.
  • Le registre. Le serveur est référencé dans le registre MCP officiel sous le nom com.api-cinema/showtimes : les clients qui parcourent le registre le trouvent par son nom.

Tous les paramètres des outils sont dans la documentation ; les tutoriels Python et Next.js appellent les mêmes routes en REST.