MCP LaTeX Server

Crear, editar y gestionar archivos LaTeX. Requiere una distribución externa de LaTeX como MiKTeX, TeX Live o MacTeX.

Documentación

MCP LaTeX Server

Un servidor del Model Context Protocol (MCP) para la creación, edición, validación y compilación de archivos LaTeX. Construido con FastMCP y Pydantic para una salida estructurada y con seguridad de tipos.

Características

  • Crear documentos LaTeX a partir de parámetros o plantillas incluidas (article, beamer, report)
  • Editar archivos con operaciones de reemplazo, inserción, anexado y anteposición
  • Leer y listar archivos .tex dentro de un directorio base seguro
  • Validar sintaxis: llaves, entornos, referencias, declaraciones requeridas
  • Compilar a PDF con pdflatex, xelatex o lualatex
  • Recursos — explorar y recuperar plantillas incluidas mediante URIs latex://

Requisitos previos

  • Python 3.11.9+
  • Distribución de LaTeX (para compilación):
    • Windows: MiKTeX o TeX Live
    • macOS: MacTeX (brew install --cask mactex)
    • Linux: sudo apt install texlive-full (Debian/Ubuntu) o sudo dnf install texlive-scheme-full (Fedora)

Instalación

Usando uv (recomendado)

git clone https://github.com/RobertoDure/mcp-latex-server
cd mcp-latex-server
uv pip install -e .

Usando pip

git clone <repository-url>
cd mcp-latex-server
python -m venv .venv
# Windows
.venv\Scripts\activate
# macOS/Linux
source .venv/bin/activate
pip install -e .

Configuración rápida (Windows)

python quick_setup.py

Esto verifica la versión de Python, instala las dependencias, comprueba que el servidor se importa correctamente y, opcionalmente, configura Claude Desktop.

Configuración

El servidor utiliza una única variable de entorno:

VariableDescripciónPredeterminado
LATEX_SERVER_BASE_PATHDirectorio raíz para todas las operaciones de archivo. (directorio actual)

Todas las rutas de archivo pasadas a las herramientas se resuelven en relación con este directorio base. Se deniega el acceso fuera de él.

Configuración del cliente MCP

Claude Desktop

Añade a tu claude_desktop_config.json:

  • Windows: %APPDATA%\Claude\claude_desktop_config.json
  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Linux: ~/.config/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "latex-server": {
      "command": "uv",
      "args": [
        "--directory",
        "/path/to/mcp-latex-server",
        "run",
        "latex_server.py"
      ],
      "env": {
        "LATEX_SERVER_BASE_PATH": "/path/to/your/latex/files"
      }
    }
  }
}

VS Code (GitHub Copilot)

Añade a .vscode/mcp.json en tu espacio de trabajo:

{
  "servers": {
    "latex-server": {
      "command": "uv",
      "args": [
        "--directory",
        "/path/to/mcp-latex-server",
        "run",
        "latex_server.py"
      ],
      "env": {
        "LATEX_SERVER_BASE_PATH": "${workspaceFolder}"
      }
    }
  }
}

Herramientas

create_latex_file

Crear un nuevo documento LaTeX a partir de parámetros.

ParámetroTipoPredeterminadoDescripción
file_pathstrobligatorioRuta para el nuevo archivo .tex
document_typearticle|report|book|letter|beamer|minimalarticleClase de documento
titlestr""Título del documento
authorstr""Autor del documento
datestr\todayFecha del documento
contentstr""Contenido del cuerpo
packageslist[str][]Paquetes LaTeX adicionales
geometrystr""Configuración de geometría (p. ej. margin=1in)

create_from_template

Crear un documento a partir de una plantilla incluida.

ParámetroTipoPredeterminadoDescripción
file_pathstrobligatorioRuta para el nuevo archivo .tex
templatearticle|beamer|reportarticleNombre de la plantilla

edit_latex_file

Editar un archivo LaTeX existente.

ParámetroTipoPredeterminadoDescripción
file_pathstrobligatorioRuta al archivo
operationreplace|insert_before|insert_after|append|prependobligatorioOperación de edición
new_textstrobligatorioTexto a insertar o con el que reemplazar
search_textstr|nullnullTexto a buscar (obligatorio para reemplazar/insertar)
line_numberint|nullnullNúmero de línea basado en 1 (alternativa a search_text)

read_latex_file

Leer y devolver el contenido de un archivo .tex.

ParámetroTipoPredeterminadoDescripción
file_pathstrobligatorioRuta al archivo

list_latex_files

Listar todos los archivos .tex en un directorio.

ParámetroTipoPredeterminadoDescripción
directory_pathstr.Directorio a buscar
recursiveboolfalseBuscar en subdirectorios

validate_latex

Verificar la sintaxis de LaTeX: declaraciones requeridas, llaves balanceadas, coincidencia de entornos, referencias no definidas.

ParámetroTipoPredeterminadoDescripción
file_pathstrobligatorioRuta al archivo

get_latex_structure

Extraer la estructura del documento: clase, título, autor, paquetes y jerarquía de secciones.

ParámetroTipoPredeterminadoDescripción
file_pathstrobligatorioRuta al archivo

compile_latex

Compilar un archivo .tex a PDF (ejecuta el motor dos veces para referencias/índice).

ParámetroTipoPredeterminadoDescripción
file_pathstrobligatorioRuta al archivo
enginepdflatex|xelatex|lualatexpdflatexMotor de LaTeX

Recursos

URIDescripción
latex://templatesListar plantillas incluidas disponibles
latex://template/{name}Obtener el contenido de una plantilla específica

Pruebas

Prueba con el MCP Inspector:

uv run mcp dev latex_server.py

O ejecuta el conjunto de pruebas incluido:

python test_server.py

Solución de problemas

El servidor no se inicia — Verifica Python 3.10+ (python --version) y que mcp esté instalado (pip list | grep mcp).

La compilación falla — Asegúrate de que una distribución de LaTeX esté en tu PATH (pdflatex --version). Instala MiKTeX o TeX Live si falta.

Errores de «Acceso denegado» — La ruta de archivo solicitada se resuelve fuera de LATEX_SERVER_BASE_PATH. Usa rutas relativas o ajusta la variable de entorno.

Claude no puede conectarse — Vuelve a verificar las rutas de archivo en tu configuración de MCP, reinicia Claude Desktop y verifica con uv run mcp dev latex_server.py.

Licencia

MIT