MCP LaTeX Server

Create, edit, and manage LaTeX files. Requires an external LaTeX distribution like MiKTeX, TeX Live, or MacTeX.

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

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

Using uv (recommended)

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:

VariableDescriptionDefault
LATEX_SERVER_BASE_PATHRoot 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.

ParameterTypeDefaultDescription
file_pathstrrequiredPath for the new .tex file
document_typearticle|report|book|letter|beamer|minimalarticleDocument class
titlestr""Document title
authorstr""Document author
datestr\todayDocument date
contentstr""Body content
packageslist[str][]Extra LaTeX packages
geometrystr""Geometry settings (e.g. margin=1in)

create_from_template

Create a document from a bundled template.

ParameterTypeDefaultDescription
file_pathstrrequiredPath for the new .tex file
templatearticle|beamer|reportarticleTemplate name

edit_latex_file

Edit an existing LaTeX file.

ParameterTypeDefaultDescription
file_pathstrrequiredPath to the file
operationreplace|insert_before|insert_after|append|prependrequiredEdit operation
new_textstrrequiredText to insert or replace with
search_textstr|nullnullText to find (required for replace/insert)
line_numberint|nullnull1-based line number (alternative to search_text)

read_latex_file

Read and return the contents of a .tex file.

ParameterTypeDefaultDescription
file_pathstrrequiredPath to the file

list_latex_files

List all .tex files in a directory.

ParameterTypeDefaultDescription
directory_pathstr.Directory to search
recursiveboolfalseSearch subdirectories

validate_latex

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

ParameterTypeDefaultDescription
file_pathstrrequiredPath to the file

get_latex_structure

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

ParameterTypeDefaultDescription
file_pathstrrequiredPath to the file

compile_latex

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

ParameterTypeDefaultDescription
file_pathstrrequiredPath to the file
enginepdflatex|xelatex|lualatexpdflatexLaTeX engine

Resources

URIDescription
latex://templatesList 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

관련 서버

NotebookLM 웹 임포터

원클릭으로 웹 페이지와 YouTube 동영상을 NotebookLM에 가져오기. 200,000명 이상이 사용 중.

Chrome 확장 프로그램 설치