# Le serveur MCP de Code en ligne

Connecte un assistant d’IA compatible aux fiches publiques de Code en ligne : outils search et fetch, versions du protocole, en-têtes et exemple complet.

Page : https://code-en-ligne.fr/donnees/mcp/

Corpus : 264 fiches publiques, avec leurs liens, leurs sources et leurs dates lorsqu’elles sont documentées.

## Utilisation

Accès public, lecture seule, sans clé. Aucune donnée de compte, de progression d’élève ou d’information privée. Citer le lien de la fiche et conserver ses sources et la portée de sa vérification. Les règles officielles (avec leur source) se distinguent des leçons, de la méthode et des offres de Code en ligne.

## MCP

URL : https://code-en-ligne.fr/mcp

Transport Streamable HTTP, réponses JSON, protocoles 2026-07-28 et 2025-11-25 (ainsi que 2025-06-18 et 2025-03-26), sans authentification ni session. Aucun flux SSE n’est nécessaire.

Outils :
- search : {query: "limitation de vitesse"}, renvoie {results: [{id, title, url}]} dans content et structuredContent (20 résultats au plus).
- fetch : {id: "identifiant renvoyé par search"}, renvoie {id, title, text, url, metadata}. Les métadonnées donnent la nature de la fiche, ses sources, ses dates (verified_at pour une vérification, modified_at pour une modification de publication) et, pour une leçon, son chapitre, son image et sa vidéo.

En 2026-07-28 : server/discover, puis tools/list et tools/call. En 2025 : initialize puis notifications/initialized, puis tools/list et tools/call.

## En-têtes

Envoyer Content-Type: application/json et Accept: application/json, text/event-stream. Après initialize, transmettre MCP-Protocol-Version avec la version négociée. En 2026-07-28, chaque requête porte sa version dans _meta et dans les en-têtes MCP-Protocol-Version, Mcp-Method et, pour un outil, Mcp-Name. Un navigateur externe doit passer par l’API REST : la route MCP contrôle les origines. Contrôler les erreurs JSON-RPC et isError même sur une réponse HTTP 200.

## Exemples

### Rechercher puis lire une fiche avec le SDK MCP

Avec Node.js 20 ou ultérieur, installe npm install @modelcontextprotocol/sdk@1.30.0, puis enregistre ce code dans un fichier .mjs. Le SDK gère l’initialisation et les en-têtes du protocole. La lecture utilise l’identifiant réellement renvoyé par la recherche. Conserve le champ url comme citation visible dans ton interface.

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

const client = new Client({ name: 'exemple-code-en-ligne', version: '1.0.0' }, { capabilities: {} });
const transport = new StreamableHTTPClientTransport(new URL('https://code-en-ligne.fr/mcp'));

function readTool(result) {
  if (result.isError) throw new Error('L’outil MCP n’a pas pu traiter la demande.');
  if (result.structuredContent) return result.structuredContent;
  const content = result.content?.find(item => item.type === 'text');
  if (!content) throw new Error('Réponse MCP sans contenu.');
  return JSON.parse(content.text);
}

try {
  await client.connect(transport);
  const available = await client.listTools();
  if (!['search', 'fetch'].every(name => available.tools.some(tool => tool.name === name))) {
    throw new Error('Les outils attendus ne sont pas disponibles.');
  }
  const search = readTool(await client.callTool({
    name: 'search', arguments: { query: 'alcool probatoire' }
  }));
  if (!search.results.length) {
    console.log('Aucune fiche trouvée.');
  } else {
    const record = readTool(await client.callTool({
      name: 'fetch', arguments: { id: search.results[0].id }
    }));
    console.log(JSON.stringify(record, null, 2));
  }
} finally {
  await client.close();
}
```

## Retrouver la version actuelle d’une information

L’API et le serveur MCP donnent accès aux publications publiques de Code en ligne. Les fiches suivent les mises à jour du site, avec un lien vers la page d’origine et les références associées.

Avant de répondre ou de mettre à jour ton outil, relis les fiches utiles : tu retrouves leur version en ligne, leurs sources et leurs dates. Une règle officielle peut changer : sa date de vérification dit quand elle a été relue sur le texte.

## Réutiliser en citant la source

Les contenus publics de Code en ligne peuvent être consultés, cités et résumés pour documenter une réponse ou construire un outil, y compris commercial, avec une attribution visible et un lien vers la page utilisée : « Source : Code en ligne ».

Conserve les références et les réserves qui accompagnent l’information. Indique les adaptations apportées et distingue les règles officielles des explications, de la méthode et des offres de Code en ligne.

Les documents et visuels de tiers restent soumis à leurs propres conditions. Pour republier intégralement un cours ou un article, demande une autorisation à contact@permis.online. L’accès aux données ne vaut ni partenariat ni approbation de ton service par Code en ligne ou par Permis Online SRL.

## Fichiers et pages de référence

- [llms.txt](https://code-en-ligne.fr/llms.txt) : le sommaire du site pour les assistants d’IA
- [llms-full.txt](https://code-en-ligne.fr/llms-full.txt) : le texte intégral des contenus publics
- [Informations de référence](https://code-en-ligne.fr/brand-facts/) : qui édite le site, ce qu’il propose, les règles officielles sourcées et datées
- [brand-facts.md](https://code-en-ligne.fr/brand-facts.md) : les informations de référence en Markdown
- [brand-facts.json](https://code-en-ligne.fr/.well-known/brand-facts.json) : les informations de référence en JSON
- [schema.json](https://code-en-ligne.fr/.well-known/schema.json) : toutes les données structurées du site en un seul graphe
- [ai.json](https://code-en-ligne.fr/.well-known/ai.json) : l’éditeur, le domaine officiel et les ressources pour les IA
- [offers.json](https://code-en-ligne.fr/.well-known/offers.json) : les offres réellement proposées en France
- [Sources et références](https://code-en-ligne.fr/sources/) : les textes officiels et toutes les sources citées
- [sources.txt](https://code-en-ligne.fr/sources.txt) : le registre des sources en texte
- [Plan du site](https://code-en-ligne.fr/rankpress-sitemap.xml) : toutes les pages publiques
- [Jumeaux Markdown](https://code-en-ligne.fr/index.md) : chaque page publique en texte : son adresse suivie de .md (l’accueil : /index.md)
