Skip to main content

TeXFlow MCP

License PyPI Python

A LaTeX document compiler with an MCP interface. AI agents operate on a structured document model — sections, paragraphs, figures, tables — while TeXFlow handles all LaTeX mechanics: packages, preamble, fonts, and compilation.

Install

pip install texflow-mcp

Or run without installing:

uvx texflow-mcp

System dependencies (optional)

TeXFlow compiles documents to PDF using XeLaTeX. Without it, you can still build and export .tex files.

# Arch
pacman -S texlive-xetex texlive-fontsrecommended texlive-fontsextra

# Debian/Ubuntu
apt install texlive-xetex texlive-fonts-recommended texlive-fonts-extra

# Fedora
dnf install texlive-xetex texlive-collection-fontsrecommended texlive-collection-fontsextra

For page preview (PNG), install poppler-utils (provides pdftoppm).

Configure with Claude Code

claude mcp add texflow -- uvx texflow-mcp

That's it. Restart Claude Code and the tools are available.

To set a workspace directory (where documents are saved):

claude mcp add texflow -- uvx texflow-mcp ~/Documents/TeXFlow

Configure with Claude Desktop

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "texflow": {
      "command": "uvx",
      "args": ["texflow-mcp"]
    }
  }
}

How it works

TeXFlow has two entry flows, both converging on the same in-memory document model:

  1. Scaffold — document(action="create") builds an empty document skeleton. Add content with edit(action="insert").
  2. Markdown ingest — document(action="ingest", source="paper.md") parses markdown into the model. Refine layout from there.

The model auto-saves to disk as JSON. LaTeX is only ever an output artifact — you never edit .tex directly.

Tools

Tool Purpose
document Create, ingest markdown, show outline, read sections
layout Columns, fonts, paper, margins, headers/footers, TOC
edit Insert, replace, delete, move blocks (section, paragraph, figure, table, code, equation, list, raw)
render Compile to PDF, preview page as PNG, export .tex
reference Search LaTeX commands, symbols, packages, error help
queue Batch multiple operations in one call

Every response includes a workflow state hint showing where you are and what to do next.

Example session

> document(action="create", title="My Paper", document_class="article")

> queue(operations=[
    {"tool": "edit", "action": "insert", "block_type": "section", "title": "Introduction", "level": 1},
    {"tool": "edit", "action": "insert", "content": "This paper explores...", "section": "Introduction"},
    {"tool": "edit", "action": "insert", "block_type": "section", "title": "Methods", "level": 1},
    {"tool": "layout", "font": "palatino", "columns": 2}
  ])

> render(action="compile")

Development

git clone https://github.com/aaronsb/texflow-mcp
cd texflow-mcp
uv sync
uv run pytest tests/ -v    # 222 tests
uv run texflow              # Start MCP server

License

MIT

Metadata

Release files for texflow-mcp 1.6.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for texflow-mcp 1.6.3
File Size Uploaded
texflow_mcp-1.6.3.tar.gz 96.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for texflow-mcp 1.6.3
File Interpreter ABI Platform
texflow_mcp-1.6.3-py3-none-any.whl Python 3 none any Details

Total release size: 191.3 kB

Release files / texflow_mcp-1.6.3.tar.gz

Download URL texflow_mcp-1.6.3.tar.gz
Size 96.8 kB
Tags Source
SHA-256 checksum
How to use checksums
fd0528a5a2a53c83e5dd2cd71bb01e2d4018e6e42bf5ed87616ca91c1be58c9a
BLAKE2b-256 checksum
How to use checksums
5fb29463dacc63c439af1347679e43132523c0e21345f47162255ef8e7612964
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.10.8 {"installer":{"name":"uv","version":"0.10.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Arch Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / texflow_mcp-1.6.3-py3-none-any.whl

Download URL texflow_mcp-1.6.3-py3-none-any.whl
Size 94.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ea58b3cf51923ea26e2d0056da993106f6ff4aa1510c567b5ef0d8da709d8001
BLAKE2b-256 checksum
How to use checksums
c4f4fcbc27d05948a57faf5663b8d42832ce26fab705ab1e08a6ceede1e42320
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.10.8 {"installer":{"name":"uv","version":"0.10.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Arch Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

This release

1.6.3 This release

2 release files

1.6.2

2 release files

1.6.1

2 release files

1.6.0

2 release files

1.5.2

2 release files

1.5.1

2 release files

1.5.0

2 release files

1.4.0

2 release files

1.3.0

2 release files

1.2.0

2 release files

1.1.1

2 release files

1.1.0

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page