\usepackage{mcp}

Serveur MCP pour LaTeX

Connectez Claude, Claude Code, Cursor, VS Code et d'autres agents compatibles MCP à FormaTeX. Votre assistant écrit le LaTeX, le compile et vous renvoie un lien vers le PDF dans la même conversation.

\section{Qu'est-ce que MCP}

Qu'est-ce que le Model Context Protocol ?

Utilisation d'outils native pour l'IA

MCP est un protocole ouvert, introduit par Anthropic, qui permet aux clients IA de découvrir et d'appeler des outils externes à l'exécution, afin qu'un assistant puisse agir sans code d'intégration sur mesure.

Une interface serveur standard

Un serveur MCP publie des outils nommés avec des entrées en JSON Schema. Tout client compatible, comme Claude, Claude Code, Cursor, VS Code, Codex ou votre propre agent, peut les appeler.

FormaTeX comme boîte à outils

Le serveur FormaTeX expose des outils pour compiler du LaTeX avec le moteur de votre choix ou avec corrections automatiques, valider la syntaxe, lancer des jobs asynchrones et compiler des modèles enregistrés, ainsi que des ressources et un prompt fix_latex.

De bout en bout en un seul échange

Demandez un rapport. L'assistant écrit le LaTeX, appelle un outil de compilation et renvoie un lien de téléchargement du PDF terminé.

\section{Configuration}

Guide de configuration

Il existe deux façons de se connecter. Le serveur hébergé ne nécessite aucune installation ; le binaire local s'exécute sur votre machine. Les deux utilisent la même clé API FormaTeX et fonctionnent avec toutes les offres, y compris l'offre gratuite. Les compilations effectuées via MCP comptent dans le même quota mensuel d'API que les appels REST.

Étape 1. Créer une clé API

Créez une clé sur la page Clés API de votre tableau de bord. Les clés FormaTeX commencent par fex_. Conservez la clé dans une variable d'environnement telle que FORMATEX_API_KEYplutôt que de la valider dans un dépôt.

Étape 2, option 1. Serveur hébergé (recommandé)

Le serveur à l'adressehttps://mcp.formatex.io/mcputilise Streamable HTTP. Il n'y a rien à installer, et chaque requête transporte votre clé API.

Claude (claude.ai et Claude Desktop)

  1. Ouvrez Personnaliser, puis Connecteurs, et choisissez Ajouter un connecteur personnalisé.
  2. Saisissez l'URL du serveur ci-dessous.
  3. Connectez-vous lorsque vous y êtes invité. La page d'autorisation demande votre clé API FormaTeX. Si votre client expose les en-têtes de requête, définissez plutôt Authorization: Bearer <your key>.
Server URL
https://mcp.formatex.io/mcp

claude_desktop_config.jsonne sert que pour les serveurs locaux que Claude Desktop démarre lui-même. Ajoutez le serveur hébergé via les Connecteurs, pas via ce fichier.

Claude Code

Enregistrez le serveur depuis la CLI, ou validez un fichier .mcp.jsonà la racine du projet.${VAR} fonctionne dans ce fichier, la clé reste donc dans votre environnement.

terminal
export FORMATEX_API_KEY="fex_your_api_key"

claude mcp add --transport http formatex https://mcp.formatex.io/mcp \
  --header "Authorization: Bearer $FORMATEX_API_KEY"
.mcp.json
{
  "mcpServers": {
    "formatex": {
      "type": "http",
      "url": "https://mcp.formatex.io/mcp",
      "headers": {
        "Authorization": "Bearer ${FORMATEX_API_KEY}"
      }
    }
  }
}

Cursor

Ajoutez le serveur à.cursor/mcp.jsondans votre projet, ou à~/.cursor/mcp.jsonpour tous les projets.

.cursor/mcp.json
{
  "mcpServers": {
    "formatex": {
      "url": "https://mcp.formatex.io/mcp",
      "headers": {
        "Authorization": "Bearer ${env:FORMATEX_API_KEY}"
      }
    }
  }
}

VS Code

VS Code lit.vscode/mcp.json. Sa clé de premier niveau est servers, et nonmcpServers, et les entrées distantes nécessitent "type": "http".

.vscode/mcp.json
{
  "inputs": [
    {
      "type": "promptString",
      "id": "formatex-api-key",
      "description": "FormaTeX API key",
      "password": true
    }
  ],
  "servers": {
    "formatex": {
      "type": "http",
      "url": "https://mcp.formatex.io/mcp",
      "headers": {
        "Authorization": "Bearer ${input:formatex-api-key}"
      }
    }
  }
}

Codex

Ajoutez une table de serveur à~/.codex/config.toml. bearer_token_env_varindique le nom de la variable d'environnement qui contient la clé.

~/.codex/config.toml
[mcp_servers.formatex]
url = "https://mcp.formatex.io/mcp"
bearer_token_env_var = "FORMATEX_API_KEY"

Étape 2, option 2. Binaire local (stdio)

Lancezformatex-mcpsur votre machine. Le client le démarre comme processus enfant et le binaire lit votre clé dans la variable FORMATEX_API_KEYd'environnement. Choisissez cette voie si votre client ne prend en charge que stdio.

Installer le binaire

terminal
# Requires Go 1.23 or newer
go install github.com/formatexio/mcp/cmd/formatex-mcp@latest

# The binary lands in $(go env GOPATH)/bin as formatex-mcp.
# Prebuilt binaries: https://github.com/formatexio/mcp/releases

Claude Desktop

Modifiez ~/Library/Application Support/Claude/claude_desktop_config.json sous macOS ou%APPDATA%\Claude\claude_desktop_config.json sous Windows, puis redémarrez Claude Desktop.

claude_desktop_config.json
{
  "mcpServers": {
    "formatex": {
      "command": "/full/path/to/formatex-mcp",
      "env": {
        "FORMATEX_API_KEY": "fex_your_api_key"
      }
    }
  }
}

Claude Code

terminal
claude mcp add --env FORMATEX_API_KEY=fex_your_api_key \
  --transport stdio formatex -- /full/path/to/formatex-mcp

Codex

~/.codex/config.toml
[mcp_servers.formatex]
command = "formatex-mcp"

[mcp_servers.formatex.env]
FORMATEX_API_KEY = "fex_your_api_key"

Authentification et vérifications

  • Serveur hébergé : envoyez la clé sous la forme Authorization: Bearer <key>ou X-API-Key: <key>. Une requête sans clé reçoit une erreur 401.
  • Les connecteurs personnalisés de Claude se connectent via OAuth. La page d'autorisation demande votre clé API.
  • Le serveur hébergé fonctionne uniquement en Streamable HTTP. Il n'a pas de point de terminaison /sse, donc un client qui ne prend en charge que l'ancien transport SSE doit utiliser le binaire local.
  • Les offres gratuites compilent avec pdflatex et xelatex. lualatex, latexmk et les modèles enregistrés nécessitent l'offre Pro ou supérieure.

Pour vérifier que le serveur hébergé est opérationnel, appelez son point de terminaison de santé. Demandez ensuite à votre assistant de « Lister les moteurs LaTeX disponibles »; il devrait appelerlist_engines.

terminal
curl https://mcp.formatex.io/health
# {"status":"ok","service":"formatex-mcp","version":"1.0.0"}

\section{Outils}

Outils, ressources et prompt

OutilFonction
compile_smartCompile avec détection automatique du moteur et correction des erreurs, en réessayant avec des moteurs de secours. Le choix par défaut recommandé. Renvoie un lien de téléchargement du PDF.
compile_latexCompile avec le moteur que vous indiquez : pdflatex, xelatex, lualatex ou latexmk. Renvoie un lien de téléchargement du PDF.
check_syntaxValide la source (erreurs de syntaxe, commandes interdites, problèmes de structure) sans compiler. Ne compte pas dans le quota mensuel de compilations.
compile_asyncSoumet un job de compilation et renvoie immédiatement un ID de job. Adapté aux documents volumineux et aux flux de travail par lots.
get_jobRenvoie l'état d'un job asynchrone : un lien de téléchargement du PDF s'il est terminé, le journal d'erreurs s'il a échoué.
fetch_pdf_bytesRenvoie un PDF compilé sous forme d'octets base64, lorsque vous avez besoin du fichier lui-même plutôt que d'un lien.
list_enginesListe les moteurs LaTeX disponibles et quand utiliser chacun.
get_usageAffiche les statistiques de compilation du mois et les limites de l'offre pour la clé API.
list_templatesListe vos modèles enregistrés avec leurs ID, noms, descriptions et variables. Offre Pro et supérieure.
get_templateRenvoie un modèle enregistré avec son source LaTeX complet et ses définitions de variables. Offre Pro et supérieure.
create_templateEnregistre un nouveau modèle avec des variables de substitution, après vérification du schéma des variables. Offre Pro et supérieure, dans la limite de modèles de l'offre.
update_templateNe modifie que les champs fournis sur un modèle enregistré. La version précédente est remplacée. Offre Pro et supérieure.
compile_templateCompile un modèle enregistré par ID, avec des substitutions de variables facultatives. Offre Pro et supérieure.

Deux ressources,formatex://engineset formatex://usage, exposent la liste des moteurs et votre consommation actuelle. Le promptfix_latexprend votre source LaTeX et le journal d'erreurs, et renvoie des instructions structurées pour corriger les erreurs.

\section{Définition d'un outil}

Définition de l'outil

Voici l'entréecompile_latexexactement telle que le serveur hébergé la renvoie danstools/list. runset timeoutsont des entiers ; envoyez0 pour les laisser à l'API, qui choisit alors le nombre de passes et applique le délai d'expiration par défaut de votre offre. compile_smartprend latex, runsettimeoutet choisit lui-même le moteur, etcompile_asyncne requiert quelatex.

tools/list entry: compile_latex
{
  "name": "compile_latex",
  "description": "Compile LaTeX source code to a PDF using the FormaTeX API. Returns a download URL for the PDF. Specify the engine explicitly (pdflatex for standard documents, xelatex/lualatex for Unicode/modern fonts, latexmk for complex documents).",
  "inputSchema": {
    "type": "object",
    "properties": {
      "latex": { "type": "string" },
      "engine": { "type": "string" },
      "runs": { "type": "integer" },
      "timeout": { "type": "integer" }
    },
    "required": ["latex", "engine", "runs", "timeout"],
    "additionalProperties": false
  }
}

Une compilation réussie renvoie du texte brut : les métadonnées du job et un lien Download PDF. Le PDF lui-même n'est pas intégré, ce qui garde la conversation légère.fetch_pdf_bytesest le seul outil qui renvoie le fichier en base64 ; appelez-le avec l'ID du job lorsque vous avez besoin des octets.

tool result text
Compilation successful. Engine: pdflatex, Duration: <ms> ms, Job ID: <job id>, PDF size: <bytes> bytes
Download PDF: <url>

\section{Exemple Python}

Utiliser le serveur depuis la Messages API

Le connecteur MCP de la Messages API permet à Claude d'appeler le serveur hébergé sans que vous exécutiez de client MCP. C'est une fonctionnalité bêta : envoyez l'en-tête bêta mcp-client-2025-11-20, déclarez le serveur sous mcp_servers, et activez ses outils avec une entrée mcp_toolsetdanstools. L'exemple demande à Claude de rédiger et de compiler une note d'une page en une seule requête.

mcp_example.py
import os

import anthropic

client = anthropic.Anthropic()  # reads ANTHROPIC_API_KEY

response = client.beta.messages.create(
    model="claude-sonnet-5-5",
    max_tokens=2048,
    betas=["mcp-client-2025-11-20"],
    mcp_servers=[
        {
            "type": "url",
            "url": "https://mcp.formatex.io/mcp",
            "name": "formatex",
            # Your FormaTeX API key, sent to the server as a bearer token.
            "authorization_token": os.environ["FORMATEX_API_KEY"],
        }
    ],
    tools=[{"type": "mcp_toolset", "mcp_server_name": "formatex"}],
    messages=[
        {
            "role": "user",
            "content": (
                "Write a one-page LaTeX note on gradient descent with the "
                "update rule as a display equation, compile it, and give me "
                "the PDF link."
            ),
        }
    ],
)

for block in response.content:
    if block.type == "mcp_tool_use":
        print("Tool call:", block.name)
    elif block.type == "text":
        print(block.text)

Le connecteur ne prend en charge que les appels d'outils ; les ressources et le fix_latexprompt sont donc disponibles dans les clients MCP plutôt que via l'API.

\section{Cas d'usage}

Cas d'usage

Rapports de recherche

Demandez à votre assistant de résumer un article et de compiler un PDF mis en forme avec équations, figures et bibliographie à partir d'un seul prompt.

Documentation automatisée

Laissez un agent de votre pipeline générer des notes de version ou des documents de référence en LaTeX et les compiler en PDF.

Certificats à la demande

Générez des certificats ou des factures personnalisés. L'agent renseigne les variables d'un modèle enregistré (Pro et supérieur) et FormaTeX produit le PDF.

\end{mcp}

Laissez Claude compiler votre LaTeX

Créez une clé API FormaTeX, ajoutez le serveur hébergé à votre client et commencez à générer des PDF depuis votre chat IA.