LaTeX Server¶
Overview¶
The LaTeX MCP Server provides comprehensive capabilities for LaTeX document creation, editing, and compilation. It supports creating documents from templates, adding content, and compiling to various formats including PDF, DVI, and PS. The server includes built-in templates for articles, letters, beamer presentations, reports, and books.
Key Features¶
- Document Creation: Create LaTeX documents from scratch or templates
- Content Management: Add sections, tables, figures, and arbitrary content
- Compilation: Compile LaTeX to PDF, DVI, or PS formats
- Templates: Built-in templates for articles, letters, beamer presentations, reports, and books
- Document Analysis: Analyze LaTeX document structure and content
- Multi-format Support: Support for pdflatex, xelatex, lualatex
Quick Start¶
Prerequisites¶
TeX Distribution must be installed:
# Ubuntu/Debian
sudo apt install texlive-full
# macOS
brew install --cask mactex
# Windows: Download from tug.org/texlive
Installation¶
Running the Server¶
Available Tools¶
create_document¶
Create a new LaTeX document with specified class and packages.
Parameters: - file_path
(required): Path where the document will be saved - document_class
: LaTeX document class (default: "article") - packages
: List of LaTeX packages to include - title
: Document title - author
: Document author - date
: Document date (default: current date)
compile_document¶
Compile LaTeX document to PDF or other formats.
Parameters: - file_path
(required): Path to LaTeX file - output_format
: Output format - "pdf", "dvi", or "ps" (default: "pdf") - compiler
: LaTeX compiler - "pdflatex", "xelatex", or "lualatex" (default: "pdflatex") - output_dir
: Output directory (default: same as input file) - clean_aux
: Remove auxiliary files after compilation (default: true)
add_content¶
Add arbitrary LaTeX content to a document.
Parameters: - file_path
(required): Path to LaTeX document - content
(required): LaTeX content to add - position
: Where to add content - "end" or "before_end" (default: "before_end")
add_section¶
Add structured sections, subsections, or subsubsections.
Parameters: - file_path
(required): Path to LaTeX document - title
(required): Section title - level
: Section level - "section", "subsection", or "subsubsection" (default: "section") - content
: Section content - label
: Label for cross-referencing
add_table¶
Add formatted tables with optional headers and captions.
Parameters: - file_path
(required): Path to LaTeX document - data
(required): 2D array of table data - headers
: List of column headers - caption
: Table caption - label
: Label for cross-referencing - position
: Table position specifier (default: "h")
add_figure¶
Add figures with images, captions, and labels.
Parameters: - file_path
(required): Path to LaTeX document - image_path
(required): Path to image file - caption
: Figure caption - label
: Label for cross-referencing - width
: Image width (default: "0.8\textwidth") - position
: Figure position specifier (default: "h")
analyze_document¶
Analyze document structure, packages, and statistics.
Parameters: - file_path
(required): Path to LaTeX document
create_from_template¶
Create documents from built-in templates.
Parameters: - template_type
(required): Template type - "article", "letter", "beamer", "report", or "book" - file_path
(required): Path where document will be saved - variables
: Dictionary of template variables
Configuration¶
MCP Client Configuration¶
{
"mcpServers": {
"latex-server": {
"command": "python",
"args": ["-m", "latex_server.server_fastmcp"],
"cwd": "/path/to/latex_server"
}
}
}
Examples¶
Create Article from Template¶
{
"template_type": "article",
"file_path": "./my_paper.tex",
"variables": {
"title": "Advanced Machine Learning Techniques",
"author": "John Doe",
"abstract": "This paper explores advanced ML techniques...",
"introduction": "Machine learning has evolved significantly...",
"conclusion": "These techniques show promise..."
}
}
Create Basic Document¶
{
"file_path": "./document.tex",
"document_class": "article",
"packages": ["geometry", "amsmath", "graphicx"],
"title": "My Document",
"author": "Author Name"
}
Add Table with Headers¶
{
"file_path": "./my_paper.tex",
"data": [
["SVM", "92.5%", "15s"],
["Neural Net", "94.1%", "45s"],
["Random Forest", "89.7%", "8s"]
],
"headers": ["Algorithm", "Accuracy", "Runtime"],
"caption": "Performance comparison of different algorithms",
"label": "tab:performance"
}
Add Figure¶
{
"file_path": "./my_paper.tex",
"image_path": "./images/results_chart.png",
"caption": "Performance results across different datasets",
"label": "fig:results",
"width": "0.8\\textwidth"
}
Compile to PDF¶
{
"file_path": "./my_paper.tex",
"output_format": "pdf",
"output_dir": "./build",
"clean_aux": true
}
Add Section with Content¶
{
"file_path": "./document.tex",
"title": "Methodology",
"level": "section",
"content": "Our approach consists of three main phases: data collection, analysis, and validation.",
"label": "sec:methodology"
}
Integration¶
With MCP Gateway¶
# Start the LaTeX server via HTTP
make serve-http
# Register with MCP Gateway
curl -X POST http://localhost:8000/gateways \
-H "Content-Type: application/json" \
-d '{
"name": "latex-server",
"url": "http://localhost:9000",
"description": "LaTeX document creation and compilation server"
}'
Programmatic Usage¶
import asyncio
from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client
async def create_latex_doc():
server_params = StdioServerParameters(
command="python",
args=["-m", "latex_server.server_fastmcp"]
)
async with stdio_client(server_params) as (read, write):
async with ClientSession(read, write) as session:
await session.initialize()
# Create document from template
await session.call_tool("create_from_template", {
"template_type": "article",
"file_path": "./paper.tex",
"variables": {
"title": "Research Paper",
"author": "Researcher"
}
})
# Add content
await session.call_tool("add_section", {
"file_path": "./paper.tex",
"title": "Introduction",
"content": "This paper presents..."
})
# Compile to PDF
result = await session.call_tool("compile_document", {
"file_path": "./paper.tex",
"output_format": "pdf"
})
asyncio.run(create_latex_doc())
Templates¶
Available Templates¶
- Article: Standard academic article with abstract, sections
- Letter: Business letter format
- Beamer: Presentation slides
- Report: Multi-chapter report with table of contents
- Book: Full book with front/main/back matter
Template Variables¶
Templates support variable substitution: - {title}
- Document title - {author}
- Author name - {abstract}
- Abstract content - {introduction}
- Introduction text - {content}
- Main content - {conclusion}
- Conclusion text - {recipient}
- Letter recipient - {sender}
- Letter sender
Example Template Usage¶
{
"template_type": "letter",
"file_path": "./business_letter.tex",
"variables": {
"sender": "John Doe\\\\123 Main St\\\\City, State",
"recipient": "Jane Smith\\\\456 Oak Ave\\\\Another City, State",
"content": "I am writing to follow up on our recent meeting..."
}
}
Document Classes and Packages¶
Supported Document Classes¶
article
- Standard articlereport
- Multi-chapter reportbook
- Full book formatletter
- Letter formatbeamer
- Presentation slidesmemoir
- Flexible book/article classscrartcl
,scrreprt
,scrbook
- KOMA-Script classes
Common Packages¶
Automatically included packages: - inputenc
- UTF-8 input encoding - fontenc
- Font encoding - geometry
- Page layout - graphicx
- Graphics inclusion - amsmath
, amsfonts
- Math support
Custom Package Loading¶
{
"file_path": "./document.tex",
"document_class": "article",
"packages": [
"babel[english]",
"hyperref",
"listings",
"xcolor"
]
}
Advanced Features¶
Document Analysis¶
Response:
{
"success": true,
"structure": {
"document_class": "article",
"packages": ["geometry", "amsmath", "graphicx"],
"sections": 5,
"figures": 3,
"tables": 2
},
"statistics": {
"line_count": 245,
"word_count": 1850,
"character_count": 12450
},
"references": {
"labels": ["sec:intro", "fig:results", "tab:data"],
"citations": ["author2023", "smith2022"]
}
}
Multi-format Compilation¶
# Compile to multiple formats
formats = ["pdf", "dvi", "ps"]
for fmt in formats:
await session.call_tool("compile_document", {
"file_path": "./document.tex",
"output_format": fmt,
"output_dir": f"./output/{fmt}"
})
Complex Document Creation¶
# Create a complete research paper
async def create_research_paper():
# Start with template
await session.call_tool("create_from_template", {
"template_type": "article",
"file_path": "./paper.tex",
"variables": {"title": "Research Title", "author": "Author"}
})
# Add sections
sections = [
{"title": "Introduction", "content": "Introduction text..."},
{"title": "Methodology", "content": "Methodology description..."},
{"title": "Results", "content": "Results and analysis..."},
{"title": "Conclusion", "content": "Concluding remarks..."}
]
for section in sections:
await session.call_tool("add_section", {
"file_path": "./paper.tex",
"title": section["title"],
"content": section["content"]
})
# Add table and figure
await session.call_tool("add_table", {
"file_path": "./paper.tex",
"data": experimental_data,
"headers": ["Parameter", "Value", "Error"],
"caption": "Experimental results"
})
await session.call_tool("add_figure", {
"file_path": "./paper.tex",
"image_path": "./chart.png",
"caption": "Performance comparison"
})
# Compile final document
await session.call_tool("compile_document", {
"file_path": "./paper.tex",
"output_format": "pdf"
})
Use Cases¶
Academic Writing¶
Create research papers, theses, and academic articles with proper formatting.
Business Documentation¶
Generate reports, proposals, and professional documents.
Presentations¶
Create beamer slides for academic and business presentations.
Books and Manuals¶
Write technical documentation, user manuals, and books.
Letters and Correspondence¶
Generate formal letters and business correspondence.
Compilation Notes¶
- The server automatically runs multiple compilation passes for references
- Auxiliary files (.aux, .log, etc.) are cleaned by default
- Compilation timeout is set to 2 minutes
- Error logs are captured and returned for debugging
Error Handling¶
The server provides detailed error messages including: - LaTeX compilation errors with line numbers - Missing file errors - Syntax errors in LaTeX code - Package-related issues - Template variable errors