Skip to main content
Glama

MCP LaTeX Server

A Model Context Protocol (MCP) server for LaTeX file creation, editing, validation, and compilation. Built with FastMCP and Pydantic for type-safe, structured output.

Features

  • Create LaTeX documents from parameters or bundled templates (article, beamer, report)

  • Edit files with replace, insert, append, and prepend operations

  • Read and list .tex files within a secure base directory

  • Validate syntax — braces, environments, references, required declarations

  • Compile to PDF with pdflatex, xelatex, or lualatex

  • Resources — browse and retrieve bundled templates via latex:// URIs

Related MCP server: GoLatex MCP Server

Prerequisites

  • Python 3.11.9+

  • LaTeX distribution (for compilation):

    • Windows: MiKTeX or TeX Live

    • macOS: MacTeX (brew install --cask mactex)

    • Linux: sudo apt install texlive-full (Debian/Ubuntu) or sudo dnf install texlive-scheme-full (Fedora)

Installation

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

Using 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 .

Quick setup (Windows)

python quick_setup.py

This checks Python version, installs dependencies, verifies the server imports correctly, and optionally configures Claude Desktop.

Configuration

The server uses a single environment variable:

Variable

Description

Default

LATEX_SERVER_BASE_PATH

Root directory for all file operations

. (current directory)

All file paths passed to tools are resolved relative to this base directory. Access outside it is denied.

MCP client configuration

Claude Desktop

Add to your 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)

Add to .vscode/mcp.json in your workspace:

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

Tools

create_latex_file

Create a new LaTeX document from parameters.

Parameter

Type

Default

Description

file_path

str

required

Path for the new .tex file

document_type

article|report|book|letter|beamer|minimal

article

Document class

title

str

""

Document title

author

str

""

Document author

date

str

\today

Document date

content

str

""

Body content

packages

list[str]

[]

Extra LaTeX packages

geometry

str

""

Geometry settings (e.g. margin=1in)

create_from_template

Create a document from a bundled template.

Parameter

Type

Default

Description

file_path

str

required

Path for the new .tex file

template

article|beamer|report

article

Template name

edit_latex_file

Edit an existing LaTeX file.

Parameter

Type

Default

Description

file_path

str

required

Path to the file

operation

replace|insert_before|insert_after|append|prepend

required

Edit operation

new_text

str

required

Text to insert or replace with

search_text

str|null

null

Text to find (required for replace/insert)

line_number

int|null

null

1-based line number (alternative to search_text)

read_latex_file

Read and return the contents of a .tex file.

Parameter

Type

Default

Description

file_path

str

required

Path to the file

list_latex_files

List all .tex files in a directory.

Parameter

Type

Default

Description

directory_path

str

.

Directory to search

recursive

bool

false

Search subdirectories

validate_latex

Check LaTeX syntax: required declarations, balanced braces, environment matching, undefined references.

Parameter

Type

Default

Description

file_path

str

required

Path to the file

get_latex_structure

Extract document structure: class, title, author, packages, and section hierarchy.

Parameter

Type

Default

Description

file_path

str

required

Path to the file

compile_latex

Compile a .tex file to PDF (runs the engine twice for references/TOC).

Parameter

Type

Default

Description

file_path

str

required

Path to the file

engine

pdflatex|xelatex|lualatex

pdflatex

LaTeX engine

Resources

URI

Description

latex://templates

List available bundled templates

latex://template/{name}

Get the content of a specific template

Testing

Test with the MCP Inspector:

uv run mcp dev latex_server.py

Or run the included test suite:

python test_server.py

Troubleshooting

Server won't start — Verify Python 3.10+ (python --version) and that mcp is installed (pip list | grep mcp).

Compilation fails — Ensure a LaTeX distribution is on your PATH (pdflatex --version). Install MiKTeX or TeX Live if missing.

"Access denied" errors — The requested file path resolves outside LATEX_SERVER_BASE_PATH. Use relative paths or adjust the env variable.

Claude can't connect — Double-check file paths in your MCP config, restart Claude Desktop, and verify with uv run mcp dev latex_server.py.

License

MIT

Available Tools

8 tools
compile_latexB

Compile a LaTeX file to PDF using the specified engine.

Inputs: file_path (required), engine. Returns: Result of LaTeX compilation.

create_from_templateB

Create a LaTeX document from a bundled template file.

Inputs: file_path (required), template. Returns: Result of a file operation.

create_latex_fileC

Create a new LaTeX document with specified content and structure.

Inputs: file_path (required), document_type, title, author, +4 more. Returns: Result of a file operation.

edit_latex_fileB

Edit an existing LaTeX file by replacing, inserting, or appending content.

Inputs: file_path (required), operation (required), new_text (required), search_text, +1 more. Returns: Result of a file operation.

get_latex_structureA

Extract document structure: class, title, author, packages, and section hierarchy.

Inputs: file_path (required). Returns: Extracted structure of a LaTeX document.

list_latex_filesB

List all .tex files in a directory.

Inputs: directory_path, recursive. Returns: Result of listing LaTeX files.

read_latex_fileB

Read and return the contents of a LaTeX file.

Inputs: file_path (required). Returns: Result of a file operation.

validate_latexB

Perform LaTeX syntax validation (structure, braces, environments, references).

Inputs: file_path (required). Returns: Result of LaTeX validation.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.5/5.0

    Scored across 8 tools

    Disambiguation5/5

    Each tool has a clearly distinct purpose with no ambiguity: compile, create from template, create new file, edit file, get structure, list files, read file, and validate syntax. The descriptions reinforce unique functions, preventing misselection.

    Naming Consistency5/5

    All tool names follow a consistent verb_noun pattern using snake_case (e.g., compile_latex, edit_latex_file). This predictability makes the set easy to navigate and understand.

    Tool Count5/5

    With 8 tools, the server is well-scoped for LaTeX document management. Each tool earns its place by covering essential operations like creation, editing, reading, validation, and compilation without bloat.

    Completeness4/5

    The toolset provides strong coverage for core LaTeX workflows, including CRUD operations and validation. A minor gap is the lack of tools for managing bibliographies or handling complex LaTeX errors, but agents can work around this with existing tools.

    Maintenance

    ActivityInactive
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers