\usepackage{mcp}

Servidor MCP para LaTeX

Conecte Claude, Claude Code, Cursor, VS Code y otros agentes compatibles con MCP a FormaTeX. Su asistente escribe el LaTeX, lo compila y le devuelve un enlace al PDF en la misma conversación.

\section{Qué es MCP}

¿Qué es el Model Context Protocol?

Uso de herramientas nativo para IA

MCP es un protocolo abierto, presentado por Anthropic, que permite a los clientes de IA descubrir y llamar a herramientas externas en tiempo de ejecución, de modo que un asistente puede actuar sin código de integración a medida.

Una interfaz de servidor estándar

Un servidor MCP publica herramientas con nombre y entradas en JSON Schema. Cualquier cliente compatible, como Claude, Claude Code, Cursor, VS Code, Codex o su propio agente, puede llamarlas.

FormaTeX como conjunto de herramientas

El servidor de FormaTeX expone herramientas para compilar LaTeX con el motor que usted elija o con correcciones automáticas, validar la sintaxis, ejecutar trabajos asíncronos y compilar plantillas guardadas, además de recursos y un prompt fix_latex.

De principio a fin en un solo turno

Pida un informe. El asistente escribe el LaTeX, llama a una herramienta de compilación y devuelve un enlace de descarga del PDF terminado.

\section{Configuración}

Guía de configuración

Hay dos formas de conectarse. El servidor alojado no requiere instalar nada; el binario local se ejecuta en su equipo. Ambos usan la misma clave de API de FormaTeX y funcionan en todos los planes, incluido el gratuito. Las compilaciones realizadas mediante MCP cuentan para la misma cuota mensual de API que las llamadas REST.

Paso 1. Cree una clave de API

Cree una clave en la página de claves de API de su panel. Las claves de FormaTeX comienzan por fex_. Guarde la clave en una variable de entorno como FORMATEX_API_KEYen lugar de subirla a un repositorio.

Paso 2, opción 1. Servidor alojado (recomendado)

El servidor enhttps://mcp.formatex.io/mcpusa Streamable HTTP. No hay nada que instalar y cada solicitud lleva su clave de API.

Claude (claude.ai y Claude Desktop)

  1. Abra Customize, luego Connectors y elija Add custom connector.
  2. Introduzca la URL del servidor que aparece a continuación.
  3. Inicie sesión cuando se le solicite. La página de autorización pide su clave de API de FormaTeX. Si su cliente expone cabeceras de solicitud, configure Authorization: Bearer <your key>.
Server URL
https://mcp.formatex.io/mcp

claude_desktop_config.jsonsolo sirve para servidores locales que Claude Desktop inicia por sí mismo. Añada el servidor alojado mediante Connectors, no mediante ese archivo.

Claude Code

Registre el servidor desde la CLI o incluya un archivo .mcp.jsonen la raíz del proyecto.${VAR} la expansión funciona en ese archivo, así que la clave permanece en su entorno.

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

Añada el servidor a.cursor/mcp.jsonen su proyecto, o a~/.cursor/mcp.jsonpara todos los proyectos.

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

VS Code

VS Code lee.vscode/mcp.json. Su clave de nivel superior es servers, nomcpServers, y las entradas remotas necesitan "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

Añada una tabla de servidor a~/.codex/config.toml. bearer_token_env_varindica la variable de entorno que contiene la clave.

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

Paso 2, opción 2. Binario local (stdio)

Ejecuteformatex-mcpen su equipo. El cliente lo inicia como proceso hijo y el binario lee su clave de la variable de entorno. FORMATEX_API_KEYElija esta vía si su cliente solo admite stdio.

Instale el binario

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

Edite ~/Library/Application Support/Claude/claude_desktop_config.json en macOS o%APPDATA%\Claude\claude_desktop_config.json en Windows y reinicie 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"

Autenticación y comprobaciones

  • Servidor alojado: envíe la clave como Authorization: Bearer <key>o X-API-Key: <key>. Una solicitud sin clave recibe un 401.
  • Los conectores personalizados de Claude inician sesión con OAuth. La página de autorización pide su clave de API.
  • El servidor alojado es solo Streamable HTTP. No tiene el endpoint /ssepor lo que un cliente que solo admita el antiguo transporte SSE debe usar el binario local.
  • Los planes gratuitos compilan con pdflatex y xelatex. lualatex, latexmk y las plantillas guardadas requieren Pro o superior.

Para confirmar que el servidor alojado está activo, llame a su endpoint de estado. Después pida a su asistente que “Liste los motores de LaTeX disponibles”; debería llamar alist_engines.

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

\section{Herramientas}

Herramientas, recursos y prompt

HerramientaQué hace
compile_smartCompila con detección automática del motor y corrección de errores, reintentando con motores alternativos. Es la opción predeterminada recomendada. Devuelve un enlace de descarga del PDF.
compile_latexCompila con el motor que usted indique: pdflatex, xelatex, lualatex o latexmk. Devuelve un enlace de descarga del PDF.
check_syntaxValida el código en busca de errores de sintaxis, comandos prohibidos y problemas estructurales sin compilar. No cuenta para la cuota mensual de compilaciones.
compile_asyncEnvía un trabajo de compilación y devuelve de inmediato un ID de trabajo. Adecuado para documentos grandes y flujos de trabajo por lotes.
get_jobDevuelve el estado de un trabajo asíncrono: un enlace de descarga del PDF si se completó, o el registro de errores si falló.
fetch_pdf_bytesDevuelve un PDF compilado como bytes en base64, para cuando necesita el archivo en sí y no un enlace.
list_enginesLista los motores de LaTeX disponibles y cuándo usar cada uno.
get_usageMuestra las estadísticas de compilación de este mes y los límites del plan para la clave de API.
list_templatesLista sus plantillas guardadas con ID, nombres, descripciones y variables. Plan Pro y superiores.
get_templateDevuelve una plantilla guardada con su código LaTeX completo y las definiciones de variables. Plan Pro y superiores.
create_templateGuarda una nueva plantilla con marcadores de variables, comprobando antes el esquema de variables. Plan Pro y superiores, hasta el límite de plantillas del plan.
update_templateModifica solo los campos indicados de una plantilla guardada. La versión anterior se reemplaza. Plan Pro y superiores.
compile_templateCompila una plantilla guardada por ID con sustituciones de variables opcionales. Plan Pro y superiores.

Dos recursos,formatex://enginesy formatex://usage, exponen la lista de motores y su uso actual. Elfix_latexprompt toma su código LaTeX y el registro de errores y devuelve instrucciones estructuradas para corregir los errores.

\section{Definición de una herramienta}

Definición de la herramienta

Esta es la entrada decompile_latexexactamente como la devuelve el servidor alojado desdetools/list. runsy timeoutson enteros; envíe0 para dejar que lo decida la API, que entonces elige el número de pasadas y aplica el tiempo de espera predeterminado de su plan. compile_smarttoma latex, runsytimeouty elige el motor por sí misma, ycompile_asyncrequiere sololatex.

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
  }
}

Una compilación correcta devuelve texto sin formato: metadatos del trabajo y un enlace Download PDFEl PDF en sí no se incluye en línea, lo que mantiene la conversación ligera.fetch_pdf_byteses la única herramienta que devuelve el archivo en base64; llámela con el ID del trabajo cuando necesite los bytes.

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

\section{Ejemplo en Python}

Use el servidor desde la API de Messages

El conector MCP de la API de Messages permite que Claude llame al servidor alojado sin que usted ejecute un cliente MCP. Es una función en beta: envíe la cabecera mcp-client-2025-11-20beta, indique el servidor en mcp_servers, y habilite sus herramientas con una entrada mcp_toolsetentools. El ejemplo pide a Claude que escriba y compile una nota de una página en una sola solicitud.

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)

El conector solo admite llamadas a herramientas, por lo que los recursos y el fix_latexprompt están disponibles en clientes MCP y no a través de la API.

\section{Casos de uso}

Casos de uso

Informes de investigación

Pida a su asistente que resuma un artículo y compile un PDF con formato, con ecuaciones, figuras y bibliografía, a partir de un solo prompt.

Documentación automatizada

Deje que un agente de su pipeline genere notas de versión o documentos de referencia en LaTeX y los compile a PDF.

Certificados bajo demanda

Genere certificados o facturas personalizados. El agente rellena las variables de una plantilla guardada (Pro y superiores) y FormaTeX genera el PDF.

\end{mcp}

Deje que Claude compile su LaTeX

Cree una clave de API de FormaTeX, añada el servidor alojado a su cliente y empiece a generar PDF desde su chat de IA.