Read, edit, compile, and review Overleaf projects through your own signed-in web session.
Runs on your machine from its package; the steps are below.

Not assessed yet.
Odel charges nothing per call. The publisher may charge for its own service.
Runs locally over stdio
This server isn't hosted โ your MCP client launches it from a package registry. Use one of the commands below, or drop the config into your client (e.g. Claude Desktop).
Run
npx -y overleaf-web-mcp
MCP client config
{
"mcpServers": {
"overleaf-web-mcp": {
"command": "npx",
"args": [
"-y",
"overleaf-web-mcp"
]
}
}
}Let Claude, Cursor, or any MCP client read, edit, compile, and review your Overleaf projects, signed in as you.
Overleaf Web MCP is an unofficial Model Context Protocol server. It signs in to Overleaf once through a browser window you control, then lets an AI assistant work on your projects the way you would in the web editor: browse files, make revision-checked edits, optionally as tracked changes, compile, and handle review comments. It uses the same browser-facing endpoints the Overleaf editor uses, so no Git integration or premium plan is needed for the core workflow.
Once connected, talk to your assistant in plain language. It picks the tools.
proposal.tex the root."main.tex for a general audience, as a tracked change."./figures differ from what's in the project? Upload only those."~/papers/thesis, and show me what would be deleted first."Caution
This client uses Overleaf's private, browser-facing APIs, which Overleaf may change without notice. Automating www.overleaf.com may carry Terms-of-Service and account risk. Start with a disposable project and keep request volume low.
You need Node.js 20 or newer, a Chrome-family browser (Chrome, Chromium, Brave, or Edge), and an Overleaf account.
1. Sign in once. A dedicated browser window opens. Complete the normal Overleaf login, including SSO or two-factor. Only cookies for the Overleaf origin are saved, to a file only your user can read. The session lasts five days from its last use, so sign in again after five idle days, or schedule npx overleaf-web-mcp keepalive daily to keep it alive (see configuration).
npx overleaf-web-mcp login
2. Connect your MCP client. For Claude Code:
claude mcp add overleaf --scope user -- npx -y overleaf-web-mcp serve
For Claude Desktop, Cursor, VS Code, and other clients, add this to their MCP configuration:
{
"mcpServers": {
"overleaf": {
"command": "npx",
"args": ["-y", "overleaf-web-mcp", "serve"]
}
}
}
3. Restart the client and ask it to check your Overleaf connection.
Client-by-client steps, self-hosted Overleaf, and troubleshooting, including the "failed to connect" you get when node is older than 20, are in the installation guide.
\section headings in a file, read one section, replace one section.All 29 tools, grouped as in the tool reference, which has every parameter and result. Read-only tools change nothing on Overleaf and write nothing on your computer. Destructive tools can replace or remove existing content. All but stop_compile need a value repeated back first: the path, name, or count of what they delete, the revision of the document they replace, the planToken of a folder sync, or overwrite for a file that exists. Until 0.6.0, an upload that replaces a file and a folder sync without a planToken still run without one and report a deprecation; from 0.6.0 they are refused. The last column shows which tools read or write files on the computer the server runs on.
| Group | Tool | What it does | Annotation | Local effect |
|---|---|---|---|---|
| Account | auth_status | Verify the saved session and report when it expires | read-only | |
| Account | list_projects | List and search projects, newest first | read-only | |
| Project lifecycle | create_project | Create a blank or example project | ||
| Project lifecycle | clone_project | Copy a project, files and settings included | ||
| Project lifecycle | import_project_zip | Create a project from a local .zip archive | reads | |
| Project lifecycle | manage_project | Rename, trash, restore, archive, unarchive, or delete a project | destructive | |
| Project lifecycle | update_project_settings | Set the root document, TeX engine, TeX Live image, or spell-check language | ||
| Files | get_project_tree | Read the file tree with the project's compile settings | read-only | |
| Files | read_file | Read a text document and its revision | read-only | |
| Files | write_file | Replace a document with a revision-checked, minimal edit | destructive | reads |
| Files | create_file | Create a text document, optionally with content | ||
| Files | manage_entity | Create a folder, or rename, move, or delete an entity | destructive | |
| Files | upload_file | Upload a local file, replacing what is at that path when confirmed | destructive | reads |
| Files | batch_upload | Upload a list of local files to the paths given, creating missing folders | destructive | reads |
| Files | download_file | Save a document or binary file locally | destructive | writes |
| Files | download_project_zip | Save the whole project locally as one zip archive | destructive | writes |
| Folder sync | plan_sync | Compare a local folder with the project and show what a sync would do | read-only | reads |
| Folder sync | sync_directory | Upload what changed, and in mirror mode delete what is gone locally | destructive | reads |
| Folder sync | delete_entities | Delete several files or folders in one confirmed call | destructive | |
| Sections | get_sections | Parse the section headings of one file | read-only | |
| Sections | get_section_content | Read one section's body | read-only | |
| Sections | write_section | Replace one section's body, revision-checked | destructive | |
| Compilation | compile_project | Compile the project | ||
| Compilation | stop_compile | Stop the active compile | destructive | |
| Review | list_comments | List review threads with their locations | read-only | |
| Review | reply_to_comment | Reply in an existing thread | ||
| Review | add_comment | Add a comment anchored to exact text | ||
| Review | set_comment_status | Resolve or reopen a thread | destructive | |
| History | monitor_project_history | Poll recent project history with a cursor | read-only |
planToken from plan_sync, a folder sync stops before changing anything if the project or the folder changed since the plan. Without one there is nothing to compare against, which 0.6.0 will refuse. It deletes only in mirror mode, only with the delete count confirmed, and never after a failed upload.The three most-starred Overleaf MCP servers and the two closest in design to this one, each checked against its own source code on 2026-09-22. They change often, so follow the links for their current state. โ supported, ๐ก partly (see the numbered notes), โ not supported.
| This project | OverleafMCP | olcli | overleaf-mcp-server | overleaf-mcp-rt | netique/overleaf-mcp | |
|---|---|---|---|---|---|---|
| Connects through | Web session | Git bridge | Web session | Git bridge | Web session | Web session |
| Tools | 29 | 8 | 19 | 4 | 22 | 17 |
| Works without Overleaf's paid Git integration | โ | โ | โ | โ | โ | โ |
| Self-hosted Overleaf | โ | โ | โ | ๐กยน | โ | ๐กยฒ |
| List and search your projects | โ | ๐กยณ | ๐กโด | โ | ๐กโต | โ |
| Returns a document's text to the assistant | โ | โ | ๐กโถ | โ | โ | โ |
| Sends edits as collaborative OT operations, not whole files | โ | โ | โ | โ | โ | โ |
| Refuses an edit if the document changed since it was read | โ | ๐กโท | โ | โ | โ | ๐กโธ |
| Writes as tracked changes when asked | โ | โ | โ | โ | โ | โ |
| Accepts or rejects tracked changes | โ | โ | โ | โ | โ | โ |
Reads and replaces one \section | โ | โ | โ | โ | โ | โ |
| Creates, renames, moves, and deletes files and folders | โ | ๐กโน | ๐กยนโฐ | ๐กโน | โ | โ |
| Uploads and downloads binary files | โ | โ | โ | โ | โ | ๐กยนยน |
| Compares a local folder with the project | โ | โ | โ | โ | โ | โ |
| Compiles on Overleaf | โ | โ | โ | โ | โ | โ |
| Reads the compile log and errors | โ | โ | โ | โ | โ | โ |
| Review comments: list, reply, add, resolve | โ | โ | โ | โ | โ | ๐กยนยฒ |
| Creates, clones, imports, archives, and deletes projects | โ | โ | ๐กยนยณ | โ | โ | โ |
| Saves the root document, compiler, and TeX Live image | โ | โ | โ | โ | โ | โ |
| Reads project history | โ | โ | โ | โ | ๐กยนโด | โ |
| Installs from | npm | npm | npm, Homebrew | source | npm | npm |
| License | MIT | MIT | MIT | MIT | AGPL-3.0 | AGPL-3.0 |
overleaf_session2 cookie, which Community Edition does not set by default.strict_version: true; by default a concurrent edit is reported after the write.| Page | What it covers |
|---|---|
| Install | Claude Code, Claude Desktop, Cursor, VS Code, self-hosted Overleaf, troubleshooting |
| Using it | Example prompts and what happens underneath |
| Tool reference | All 29 tools with parameters and results |
| Safety model | Revisions, tracked changes, confirmations, error codes |
| Configuration | Environment variables, the access policy, proxies, where the session is stored, and keeping it alive |
| Internals | Protocol notes, reliability guarantees, related projects |
| Roadmap and Changelog | Where this is going and what changed |
The server sends usage instructions to the MCP client when it connects, and every tool description is self-contained, so an assistant does not need this README to use it correctly. Coding agents contributing to the repository should read AGENTS.md.
MIT.