overleaf-multi-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| OVERLEAF_TOKEN | No | Git token for content I/O. Required unless token.txt exists in OVERLEAF_CONFIG_DIR. | |
| OVERLEAF_SESSION | No | Session cookie for discovery. Optional. | |
| OVERLEAF_BASE_URL | No | Dashboard host (self-hosted CE). | https://www.overleaf.com |
| OVERLEAF_GIT_BASE | No | Git host (self-hosted CE). | https://git.overleaf.com |
| OVERLEAF_CONFIG_DIR | No | State directory. | ~/.config/overleaf-mcp |
| OVERLEAF_WORKSPACE_ROOT | No | Where setup_local puts folders. | process.cwd() |
| OVERLEAF_DEFAULT_PROJECT | No | Name/ID used when projectName is omitted. | |
| OVERLEAF_GIT_AUTHOR_NAME | No | Commit identity. | Overleaf MCP |
| OVERLEAF_GIT_AUTHOR_EMAIL | No | Commit identity. | overleaf-mcp@localhost |
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 | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| sync_projectsA | Refresh the project list from your Overleaf account (uses the session cookie). Run after creating a new project. |
| find_projectA | Fuzzy-search known projects by title or ID. Returns ranked matches with IDs and whether a local workspace exists. |
| session_statusA | Report auth state: git token present, session cookie present, last sync time, project count, workspace count. |
| list_projectsA | List all projects from the last sync (title, ID, last-modified, access level). |
| setup_localA | Clone a project into a visible local folder (full working tree: .tex, .cls, .bst, images, etc.) and register it so reads/writes route there. |
| pull_localA | git pull (--ff-only) the registered workspace to freshen it from Overleaf. |
| diff_localA | Show uncommitted changes in the registered workspace (unified diff + untracked files) for review before pushing. |
| push_localA | Stage (all, or the given paths), commit, and push the registered workspace back to Overleaf. Explicit — the only tool that pushes workspace edits. |
| list_version_historyA | Return git commit history for a project ({sha, author, date, message, changedFiles}). Uses the workspace if present, else a temp clone. |
| rollback_to_versionA | Restore a workspace to a prior commit as UNCOMMITTED changes (review with diff_local, then push_local). mode "restore" = git checkout ; "revert" = undo commits since . |
| list_filesA | List files in a project (workspace or temp clone), optionally filtered by extension. |
| read_fileC | Read a file from a project. |
| get_sectionsA | List LaTeX \section{…} headings in a file (title, level, line). |
| get_section_contentB | Extract the body of one LaTeX section by title. |
| status_summaryB | Overview of a project: file count, total size, source (workspace/temp), and dirty state if a workspace. |
| write_fileA | Write a whole file. With a workspace: writes only (review + push_local). Without: commits + pushes immediately (commitMessage required). |
| write_sectionB | Replace one LaTeX section body, preserving the heading. Same push semantics as write_file. |
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
Each tool has a clearly distinct role: project sync/search/status, workspace setup and git operations, file and LaTeX section access, and version management. Even similar-sounding tools like sync_projects and list_projects are differentiated by description (refresh vs. view cached data).
Most tools follow a clear verb_noun snake_case pattern (sync_projects, list_files, write_section). Two status tools (session_status, status_summary) are noun_noun and setup_local is slightly awkward, but the overall style is consistent and readable.
At 17 tools, this is on the higher end but within reason given the server's dual focus on Overleaf project management and local git-synced workspaces. Each tool covers a distinct need, though a few could potentially be merged (e.g., status_summary and session_status) without significant loss.
The tool surface covers the essential lifecycle: project discovery, workspace setup, local editing, diff/push, version history/rollback, and LaTeX-aware reading/writing. Missing operations like project creation/deletion are likely outside the intended scope (session-based account sync), so the core workflows are well-supported.