Unofficial MCP server for browsing, tracked writing, organizing, compiling, reviewing, and monitoring version history in Overleaf projects through an authenticated web session.
Strong foundation with 24 well-named tools, comprehensive descriptions (avg 180 chars), and explicit Zod schemas. Tool names follow verb_noun pattern (list_projects, create_file, write_section). All parameters have type definitions and descriptions. Output schemas documented via Zod. However, some parameter descriptions lack actionable constraints (e.g., 'imageName' in update_project_settings has no format guidance), and error handling guidance is minimal. No confirmation patterns for destructive operations (manage_project delete/trash). Structured output support via outputSchema field is present and well-implemented.
Add a new comment to a specific location in a file.
Verify the saved Overleaf web session without exposing cookies. sessionExpiresAt is when the session lapses unless a request refreshes it first; Overleaf sessions last five days from their last use, and the CLI command `overleaf-web-mcp keepalive` can be scheduled to refresh them.
Copy an existing project, including its files and settings, into a new project with the given name. Use it to start from a lab or journal template project.
Compile the project to PDF and return the compilation result with PDF download URL and any errors or warnings.
Create a new text file in the project with optional initial content.
Create a new Overleaf project and return its projectId, url, and rootDocPath. A "blank" project still contains Overleaf's stub main.tex as its root document; after importing your own manuscript, point the project at it with update_project_settings or delete the stub with manage_entity. "example" seeds Overleaf's example paper.
Destructive operations (manage_project delete/trash) lack confirmation pattern. Description states 'Confirm with the user before trashing or deleting' but no dry-run or explicit confirmation mechanism in schema.
Error handling descriptions are minimal. No guidance on retryability, user-fixable vs fatal errors, or recovery steps. E.g., import_project_zip mentions RATE_LIMITED but no structured error classification.
Several parameters lack actionable constraints. 'imageName' in update_project_settings has no format guidance. 'sectionId' in get_section_content lacks description of valid format.
File operation tools (upload_file, download_file) lack guidance on file size limits, supported formats, or binary vs text handling.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 65 | 2025-06-18+ | v2 |
Download a file from the project to the local filesystem.
Get the project's file tree structure, including file IDs, types, and metadata.
Get the content of a specific section within a document.
Get the sections of a document, useful for organizing large documents.
Create a new project from a local .zip archive of LaTeX sources. name defaults to the archive file name. Overleaf caps archives at about 50 MB and rate-limits this route: RATE_LIMITED means wait details.retryAfterMs before trying again, and nothing was created. Set the root document afterwards with update_project_settings if the archive has more than one .tex file at the top level.
List all comments in a project, optionally filtered by file or status.
List the projects the account can access, newest first by default. Archived and trashed projects are hidden unless includeArchived or includeTrashed is set. Returns projects with id, name, accessLevel, lastUpdated, archived, and trashed, plus totalMatched (before limit) and totalProjects (everything the account can access).
Rename, move, or delete files and folders in the project.
Rename, trash, restore, archive, unarchive, or permanently delete a project. trash, archive, and delete require confirmName to equal the current project name exactly, else CONFIRMATION_MISMATCH and nothing changes. trash is the normal way to remove a project and is reversible with restore or in the web UI. delete is permanent and only succeeds on a project that is already trashed. Confirm with the user before trashing or deleting.
Monitor the version history of a project, tracking changes and updates over time.
Read the content of a text file from the project. Returns the file content and a revision token for use in subsequent writes.
Add a reply to an existing comment in the project.
Mark a comment as resolved or reopen it.
Stop an ongoing project compilation.
Update project settings including the root document, compiler, and image processing mode.
Upload a binary file to the project.
Write content to an existing text file in the project. Requires a revision token from a prior read or write to detect conflicts. Use tracked mode to record changes as Overleaf tracked changes.
Write content to a specific section within a document.
Discovery tools (get_project_tree, get_sections) have minimal descriptions. No guidance on when to call them or what structure they reveal.