Model Context Protocol server for LaTeX: let an AI assistant check documents, parse compiler logs, and compile — great for theses and papers.
Three tools with clear, actionable descriptions (avg 180 chars, within baseline 194). All tools have input schemas with type definitions and parameter descriptions. Naming follows verb_noun pattern (check_document, parse_log, compile). However, schemas lack output documentation, error handling is minimal, and parameter constraints could be stricter. No tool annotations (readOnlyHint/destructiveHint). The compile tool accepts optional parameters but lacks guidance on mutual exclusivity and fallback behavior.
Static analysis of LaTeX source: finds undefined references, duplicate/unused labels, and unbalanced environments. Lists labels, references and citations. Works without a TeX install.
Compiles a .tex file with latexmk/pdflatex if a TeX engine is installed, and returns parsed errors. Returns available:false with guidance if no engine is found.
Parses a LaTeX .log file into structured errors, warnings, undefined references/citations, and over/underfull box counts.
Output schemas not documented. Tools return JSON via text() wrapper but LLMs cannot infer structure of DocumentInfo, ParsedLog, or CompileResult. Agents cannot plan downstream operations without knowing response fields.
No tool annotations. compile() modifies filesystem (WRITE risk) and check_document/parse_log are READ_ONLY, but no destructiveHint/readOnlyHint metadata present. LLMs cannot distinguish safe vs risky tools without explicit hints.
Weak error handling. compile() returns available:false with guidance if TeX not installed (good), but check_document and parse_log throw generic 'Provide either source or path' errors. No recovery guidance or categorization (retryable vs user-fixable).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | 2026-07-28+ | v2 |
Parameter constraints underspecified. engine enum is clear, but source/path mutual exclusivity not formally documented. LLMs may pass both or neither. No min/max on timeout (120s hardcoded, not configurable).
No pagination or result limits documented. check_document returns all labels/references/citations without limit. If a document has 10k labels, response bloats context window. No guidance on expected result size.