Skip to main content
Glama

tikz-mcp

A lightweight MCP (Model Context Protocol) server that compiles TikZ code into high-resolution PNG images. Lets AI assistants render and preview LaTeX/TikZ diagrams during conversations.

Features

  • Single tool: compile_tikz -- pass TikZ code, get a PNG image

  • Auto-wrapping: Raw TikZ commands are automatically wrapped in a standalone document

  • Custom preamble: Pass your own \usepackage / \usetikzlibrary commands

  • High resolution: Output at 1000 DPI by default, with transparent background

  • Graceful errors: LaTeX compilation errors are captured and returned as readable messages

  • Style guide: Built-in aesthetic rules injected into AI instructions for consistent, publication-quality output

  • Self-verification: AI is instructed to inspect its own output and fix issues before presenting to the user

  • Zero idle cost: Uses stdio transport -- no background process when not in use

Related MCP server: UML MCP

Prerequisites

  • Python >= 3.10

  • LaTeX: pdflatex in PATH (e.g. via MacTeX or TeX Live)

  • Poppler: pdftoppm in PATH (install via brew install poppler), OR Ghostscript gs in PATH (ships with MacTeX)

Installation

pip install tikz-mcp

Or install from source:

git clone https://github.com/FlorianHuo/tikz-mcp.git
cd tikz-mcp
pip install .

Usage

As an MCP server (stdio)

Add to your MCP client config (e.g. Antigravity settings.json, Claude Desktop claude_desktop_config.json):

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

Or run with python:

{
  "mcpServers": {
    "tikz-mcp": {
      "command": "python3",
      "args": ["-m", "tikz_mcp.server"]
    }
  }
}

Tool: compile_tikz

Parameter

Type

Required

Description

tikz_code

string

Yes

TikZ code (raw commands or full document)

preamble

string

No

Custom LaTeX preamble (replaces default)

Example -- raw TikZ code:

\begin{tikzpicture}
  \draw[thick, ->] (0,0) -- (3,0) node[right] {$x$};
  \draw[thick, ->] (0,0) -- (0,3) node[above] {$y$};
  \draw[blue, thick] (0,0) circle (2);
\end{tikzpicture}

The server auto-wraps this in a standalone document with common TikZ libraries loaded.

Example -- full document:

\documentclass[border=5pt]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
  \fill[red] (0,0) rectangle (2,2);
\end{tikzpicture}
\end{document}

Output

Rendered PNGs are saved to $HOME/.tikz-mcp/output/ and the full path is returned.

Default Preamble

When raw TikZ code is provided (without \documentclass), the following preamble is used:

\usepackage{tikz}
\usepackage{amsmath,amssymb}
\usetikzlibrary{
    arrows.meta, calc, decorations.pathmorphing,
    decorations.markings, patterns, positioning,
    shapes.geometric, shapes.misc, fit, backgrounds,
    intersections, through, matrix, trees,
}

Override by passing a custom preamble parameter.

License

MIT

Changelog

v0.2.0

  • Embedded STYLE_GUIDE.md into server instructions with inline code patterns and anti-patterns

  • Added physical/mathematical accuracy rules (real hyperbolas, correct slopes)

  • Added TikZ pitfalls section (dimension overflow, hatched fill workarounds)

  • Added self-verification workflow: AI must inspect output and fix issues before presenting

  • Default standalone border changed from 5pt to 8pt

v0.1.0

  • Initial release

  • compile_tikz tool with auto-wrapping, custom preamble, 1000 DPI output

  • stdio transport for zero idle resource usage

A
license - permissive license
-
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
0dRelease cycle
2Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/FlorianHuo/tikz-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server