mcp-overleaf
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| OVERLEAF_LANG | No | Language of tool responses: en or ko. | en |
| OVERLEAF_GIT_URL | No | Git bridge URL. For Server Pro use https://<your-site>/git. | https://git.overleaf.com |
| OVERLEAF_BASE_URL | No | Self-hosted / Community Edition URL. | https://www.overleaf.com |
| OVERLEAF_GIT_TOKEN | No | Git integration token. Overleaf → Account Settings → Git Integration → Generate token. | |
| OVERLEAF_ENABLE_WEB | No | Set to 1 to opt in to web mode, at your own risk. Web mode is off by default. | off |
| OVERLEAF_PROJECT_ID | No | Default project when a tool call omits project. | |
| OVERLEAF_MCP_CACHE_DIR | No | Where project copies and PDFs are kept. | ~/.mcp-overleaf |
| OVERLEAF_SESSION_COOKIE | No | The overleaf_session2 value, or a full name=value cookie string for other instances. Used only in web mode. | |
| OVERLEAF_GIT_AUTHOR_NAME | No | Commit author name. | Overleaf MCP |
| OVERLEAF_GIT_AUTHOR_EMAIL | No | Commit author email. | Overleaf MCP |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_projectsB | List the Overleaf projects in your account with their IDs. Web mode only (opt-in, see README). |
| list_filesC | List all files in an Overleaf project. |
| read_fileA | Read a text file from an Overleaf project, optionally limited to a line range. |
| get_outlineA | Show the section structure (\part, \chapter, \section, ...) of the document, following \input/\include from the main file, with file and line numbers. |
| read_sectionA | Read the LaTeX source of one section by its title (case-insensitive; partial titles work if unambiguous). |
| write_fileA | Create or overwrite a file in the Overleaf project and save it to Overleaf. Prefer edit_file for changing part of an existing file. Uses Git; falls back to the opt-in web mode if enabled. |
| edit_fileA | Replace an exact string in a project file and save it to Overleaf. old_string must match exactly once unless replace_all is set. Uses Git; falls back to the opt-in web mode if enabled. |
| write_markdownA | Write in Markdown, publish as LaTeX. Converts Markdown to LaTeX and writes it into the project: a new/overwritten .tex file, an existing section replaced by title, or appended to a file. Supports headings ({#sec:label}, {-} for unnumbered), $math$ and $$display$$ ({#eq:label}), citations [@key; @key2, p. 3], cross refs @fig:x/@sec:x/@eq:x/@tbl:x, figures |
| delete_fileA | Delete a file or folder from the Overleaf project. Deleted files can be restored from Overleaf's History. Uses Git; falls back to the opt-in web mode if enabled. |
| move_fileA | Rename and/or move a file or folder within the project, e.g. intro.tex → sections/introduction.tex. Missing target folders are created. Remember to update \input/\include references. Uses Git; falls back to the opt-in web mode if enabled. |
| add_commentB | Start a new review comment thread on a passage of a .tex file, as if highlighting it in the Overleaf editor. Web mode only (opt-in, see README). |
| reply_commentA | Add a reply to an existing comment thread (thread IDs come from get_comments). Web mode only (opt-in, see README). |
| resolve_commentA | Mark a comment thread as resolved, or reopen a resolved one. Web mode only (opt-in, see README). |
| compileA | Compile the project on Overleaf and report errors and warnings with file and line numbers. Web mode only (opt-in, see README). |
| download_pdfA | Compile the project and save the PDF to a local path. Web mode only (opt-in, see README). |
| get_commentsA | List review comment threads in the project with the commented text, file, line and replies. Web mode only (opt-in, see README). |
| setup_paper_languageA | Prepare the project for writing in Korean or English. For "ko": adds \usepackage{kotex} to the main file's preamble (if no Korean package is loaded yet) and switches the compiler to XeLaTeX (needs the opt-in web mode; otherwise it says how to do it in Overleaf). For "en": reports that no setup is needed. Run this before writing Korean text, or when compile reports "Unicode character" errors for Korean. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 17 tools
Tools mostly target distinct resources and actions, and descriptions clearly separate editing (write_file/create-overwrite, edit_file/string-replace, write_markdown/markdown-conversion). There is mild overlap in the reading cluster (read_file, read_section, get_outline) where a section could be read via read_file, but the descriptions distinguish their intent (whole file, one section by title, structural outline).
Names consistently use snake_case with a verb_noun pattern (list_projects, read_file, write_file, add_comment, resolve_comment, download_pdf). Minor deviations exist: retrieval verbs mix list/get/read (list_files, get_outline, read_section) and one tool is a bare verb (compile), but the overall convention is predictable and readable.
17 tools is slightly over the ideal 3-15 band, but each tool covers a distinct operation (listing, reading, editing, file ops, comments, compilation, PDF, language setup) with little redundancy. The surface is well-scoped for the breadth of Overleaf authoring and review workflows rather than inflated.
File CRUD/lifecycle (list, read, write, edit, delete, move), the full comment lifecycle (get, add, reply, resolve), and compile/PDF export are covered, giving strong end-to-end support. The notable gap is project-level management: you can list projects but cannot create or delete them, though most agents would handle project creation in the UI.
{#fig:x width=60%}, pipe tables with 'Table: caption {#tbl:x}', footnotes, lists, code, and raw LaTeX (\commands and \begin..\end blocks pass through). Set dry_run to preview the LaTeX first. Writing uses Git; falls back to the opt-in web mode if enabled.