Overleaf MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| REDIS_DB | No | Redis database number | |
| REDIS_URL | No | Redis connection URL | |
| REDIS_HOST | No | Redis host | |
| REDIS_PORT | No | Redis port | |
| PROJECTS_FILE | No | Path to the Overleaf project map | ./projects.json |
| REDIS_PASSWORD | No | Redis password | |
| OVERLEAF_TEMP_DIR | No | Cache directory for cloned repositories | ./temp |
| OVERLEAF_GIT_TOKEN | No | Optional environment fallback for Overleaf Git token if not defined in projects.json or tool arguments | |
| REQUEST_QUEUE_NAME | No | Override the BullMQ queue name | overleaf-mcp-requests |
| REQUEST_TIMEOUT_MS | No | Maximum time the server waits for a job to finish | 120000 |
| OVERLEAF_PROJECT_ID | No | Optional environment fallback for Overleaf project ID if not defined in projects.json or tool arguments | |
| PROJECT_LOCK_TTL_MS | No | Advanced tuning for per-project Redis locks - time to live | |
| REQUEST_CONCURRENCY | No | Worker concurrency for queued jobs | 4 |
| PROJECT_LOCK_RETRY_MS | No | Advanced tuning for per-project Redis locks - retry interval | |
| PROJECT_LOCK_MAX_WAIT_MS | No | Advanced tuning for per-project Redis locks - maximum wait time |
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 |
|---|---|
| statusA | Shows which Overleaf account is signed in, the server, pinned projects and the search engine in use. Call this first if other tools report sign-in problems. |
| sign_inA | Signs in to Overleaf so the other tools work. Without a cookie it opens the Overleaf login page in a browser window on this computer (Google, ORCID, institutional SSO and passwords all work) and waits for the person to log in. If the person gives you their overleaf_session2 cookie, pass it instead. Only needed once; the session is shared by every Overleaf tool on this computer. |
| list_projectsB | Lists the projects in the Overleaf account (newest first, pinned first), with ids, last update, owner, access level and tags. |
| pin_projectsA | Pins (or unpins) projects. Pinned projects are the default scope for grep/search, and a single pinned project lets other tools omit "project". Pins are shared with the VS Code panel. |
| create_projectA | Creates a new Overleaf project, either blank (with an empty main.tex) or from Overleaf's example template. |
| list_filesA | Shows the file tree of a project, marking the main document. Docs are editable text; "binary/uploaded" files are images, PDFs and other uploads. |
| read_fileA | Reads a file live from Overleaf (always the latest content, including collaborators' unsaved typing). Optionally a line range. Images (png/jpg/gif/webp) are returned as images. |
| grepA | Exact text or regex search (ripgrep) across one or many projects, with file:line results and optional context. Uses local snapshots that refresh automatically when Overleaf reports changes. For topic-style questions use "search" instead. |
| searchA | Relevance-ranked full-text search (BM25 with fuzzy and prefix matching) that finds passages about a topic, e.g. "related work on diffusion models", across one or many projects. Returns file:line ranges with snippets; read_file or get_section can then fetch the text. |
| get_outlineA | Outline of a LaTeX project (parts, chapters, sections, …) following \input/\include from the main document, with file:line for each heading. |
| get_sectionA | Returns the LaTeX of one section (up to the next heading of the same or higher level), found by title anywhere in the document. |
| edit_fileA | Applies exact search-and-replace edits to a file, live: collaborators see the change instantly and concurrent typing is merged, not overwritten. All edits apply together or not at all. With suggest=true the edits become tracked changes the author can accept or reject in Overleaf's review panel. |
| write_fileA | Writes the full content of a text file, creating it (and missing folders) if needed. Existing docs are updated in place via a minimal live diff, so collaborators keep their cursors. Prefer edit_file for small changes. |
| delete_fileA | Deletes a file or folder (with its contents) from a project. Overleaf keeps it in project history. |
| move_fileB | Moves and/or renames a file or folder inside a project, creating target folders as needed. |
| create_folderB | Creates a folder (and any missing parents) in a project. |
| upload_fileA | Uploads a file from this computer (e.g. a generated figure or .bib) into a project, replacing any file with the same path. |
| download_fileC | Saves a project file (any type) to a path on this computer. |
| compileA | Compiles the project on Overleaf's servers and reports LaTeX errors and warnings with file:line, so they can be fixed with edit_file. Optionally saves the PDF locally. |
| historyA | Recent changes recorded in Overleaf's project history: versions, authors, times and touched files. Use history_diff to see what changed between versions. |
| history_diffA | Unified diff of one file between two history versions (from the history tool's vFrom→vTo numbers). |
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 21 tools
Most tools have clearly distinct purposes, including separate file, project, search, compile, and history operations. A few pairs such as grep/search and read_file/get_section require reading descriptions to distinguish, but their boundaries are explicitly clarified.
The set predominantly uses consistent snake_case verb_noun names like list_projects, create_project, read_file, and edit_file. A few bare nouns or verbs such as status, search, compile, and history deviate slightly but remain readable and expected.
At 21 tools, the server is somewhat heavy, but the breadth matches Overleaf's project/file/search/compile/history surface. Each tool covers a distinct operation, so the count is reasonable though on the larger side.
Core workflows are well covered: authentication, projects, files, editing, search, compilation, uploads/downloads, and history. Minor gaps exist at the project lifecycle level, such as no delete/rename project or restore history version, but agents can work around them.