\usepackage{mcp}
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}
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}
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.
Le serveur à l'adressehttps://mcp.formatex.io/mcputilise Streamable HTTP. Il n'y a rien à installer, et chaque requête transporte votre clé API.
Authorization: Bearer <your key>.https://mcp.formatex.io/mcpclaude_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.
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.
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"{
"mcpServers": {
"formatex": {
"type": "http",
"url": "https://mcp.formatex.io/mcp",
"headers": {
"Authorization": "Bearer ${FORMATEX_API_KEY}"
}
}
}
}Ajoutez le serveur à.cursor/mcp.jsondans votre projet, ou à~/.cursor/mcp.jsonpour tous les projets.
{
"mcpServers": {
"formatex": {
"url": "https://mcp.formatex.io/mcp",
"headers": {
"Authorization": "Bearer ${env:FORMATEX_API_KEY}"
}
}
}
}VS Code lit.vscode/mcp.json. Sa clé de premier niveau est servers, et nonmcpServers, et les entrées distantes nécessitent "type": "http".
{
"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}"
}
}
}
}Ajoutez une table de serveur à~/.codex/config.toml. bearer_token_env_varindique le nom de la variable d'environnement qui contient la clé.
[mcp_servers.formatex]
url = "https://mcp.formatex.io/mcp"
bearer_token_env_var = "FORMATEX_API_KEY"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.
# 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/releasesModifiez ~/Library/Application Support/Claude/claude_desktop_config.json sous macOS ou%APPDATA%\Claude\claude_desktop_config.json sous Windows, puis redémarrez Claude Desktop.
{
"mcpServers": {
"formatex": {
"command": "/full/path/to/formatex-mcp",
"env": {
"FORMATEX_API_KEY": "fex_your_api_key"
}
}
}
}claude mcp add --env FORMATEX_API_KEY=fex_your_api_key \
--transport stdio formatex -- /full/path/to/formatex-mcp[mcp_servers.formatex]
command = "formatex-mcp"
[mcp_servers.formatex.env]
FORMATEX_API_KEY = "fex_your_api_key"Authorization: Bearer <key>ou X-API-Key: <key>. Une requête sans clé reçoit une erreur 401./sse, donc un client qui ne prend en charge que l'ancien transport SSE doit utiliser le binaire local.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.
curl https://mcp.formatex.io/health
# {"status":"ok","service":"formatex-mcp","version":"1.0.0"}\section{Outils}
| Outil | Fonction |
|---|---|
| compile_smart | Compile 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_latex | Compile avec le moteur que vous indiquez : pdflatex, xelatex, lualatex ou latexmk. Renvoie un lien de téléchargement du PDF. |
| check_syntax | Valide la source (erreurs de syntaxe, commandes interdites, problèmes de structure) sans compiler. Ne compte pas dans le quota mensuel de compilations. |
| compile_async | Soumet un job de compilation et renvoie immédiatement un ID de job. Adapté aux documents volumineux et aux flux de travail par lots. |
| get_job | Renvoie 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_bytes | Renvoie un PDF compilé sous forme d'octets base64, lorsque vous avez besoin du fichier lui-même plutôt que d'un lien. |
| list_engines | Liste les moteurs LaTeX disponibles et quand utiliser chacun. |
| get_usage | Affiche les statistiques de compilation du mois et les limites de l'offre pour la clé API. |
| list_templates | Liste vos modèles enregistrés avec leurs ID, noms, descriptions et variables. Offre Pro et supérieure. |
| get_template | Renvoie un modèle enregistré avec son source LaTeX complet et ses définitions de variables. Offre Pro et supérieure. |
| create_template | Enregistre 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_template | Ne modifie que les champs fournis sur un modèle enregistré. La version précédente est remplacée. Offre Pro et supérieure. |
| compile_template | Compile 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}
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.
{
"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.
Compilation successful. Engine: pdflatex, Duration: <ms> ms, Job ID: <job id>, PDF size: <bytes> bytes
Download PDF: <url>\section{Exemple Python}
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.
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}
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.
\section{Related}
\end{mcp}
Créez une clé API FormaTeX, ajoutez le serveur hébergé à votre client et commencez à générer des PDF depuis votre chat IA.