Overleaf
About
Access and analyze Overleaf projects and LaTeX files through Git integration.
Details
- Author
- mjyoo2
- Categories
- Productivity, Developer Tools, Other
Jump to
Setup
Install Overleaf in your MCP client (Claude Desktop, Cursor, Windsurf, and others).
Repository: https://github.com/mjyoo2/OverleafMCP
Follow the installation instructions in the repository README, then restart your MCP client.
An MCP (Model Context Protocol) server that provides access to Overleaf projects via Git integration. This allows Claude and other MCP clients to read LaTeX files, analyze document structure, extract content, and write files from and to Overleaf projects.
- πFile Management: List, read, and write files from and to Overleaf projects
- πDocument Structure: Parse LaTeX sections and subsections
- πContent Extraction: Extract specific sections by title
- πProject Summary: Get overview of project status and structure
- ποΈMulti-Project Support: Manage multiple Overleaf projects
No clone, nonpm install. Add this block to your Claude Desktop config and restart Claude Desktop.
{ "mcpServers": { "overleaf": { "command": "npx", "args": ["-y", "@mjyoo2/overleaf-mcp"], "env": { "OVERLEAF_PROJECT_ID": "YOUR_OVERLEAF_PROJECT_ID", "OVERLEAF_GIT_TOKEN": "YOUR_OVERLEAF_GIT_TOKEN" } } } }
Windowsβ Claude Desktop on Windows needscmd /cto findnpx:
{ "mcpServers": { "overleaf": { "command": "cmd", "args": ["/c", "npx", "-y", "@mjyoo2/overleaf-mcp"], "env": { "OVERLEAF_PROJECT_ID": "YOUR_OVERLEAF_PROJECT_ID", "OVERLEAF_GIT_TOKEN": "YOUR_OVERLEAF_GIT_TOKEN" } } } }
Restart Claude Desktop. Theoverleaftools should appear in the π§ menu.
The env-var Quick Start only handles a single project. For multiple projects, drop aprojects.jsonfile into the user config directory and skip theenvblock in your Claude Desktop config.
{ "projects": { "default": { "name": "Main Paper", "projectId": "...", "gitToken": "olp_..." }, "thesis": { "name": "PhD Thesis", "projectId": "...", "gitToken": "olp_..." } } }
Claude Desktop configβ same as Quick Start but noenvblock:
{ "mcpServers": { "overleaf": { "command": "cmd", "args": ["/c", "npx", "-y", "@mjyoo2/overleaf-mcp"] } } }
Reference a specific project in tool calls withprojectName:
Use read_file with filePath: "main.tex", projectName: "thesis"
IfprojectNameis omitted, thedefaultentry is used. To putprojects.jsonsomewhere other than the standard location, pointOVERLEAF_PROJECTS_CONFIG=/absolute/path/projects.jsonat it from theenvblock.
- Project IDβ open your Overleaf project; the ID is in the URL:https://www.overleaf.com/project/[PROJECT_ID]
- Git Tokenβ Overleaf β Account Settings β Git Integration β "Create Token"
The server picks thefirstmatching configuration source:
- Env vars (single project)βOVERLEAF_PROJECT_ID+OVERLEAF_GIT_TOKEN. Optional:OVERLEAF_PROJECT_NAMEfor the display name.
- Token from a fileβ setOVERLEAF_PROJECT_IDtogether withOVERLEAF_GIT_TOKEN_FILE=/path/to/token.txt(instead ofOVERLEAF_GIT_TOKEN). Useful when you don't want the token in the Claude Desktop JSON. The file is read once at startup and any trailing whitespace/newline is trimmed.
- Multi-project fileβOVERLEAF_PROJECTS_CONFIG=/absolute/path/projects.json.
- User config dirβprojects.jsonin:
- Windows:%APPDATA%\overleaf-mcp\projects.json
- macOS / Linux:$XDG_CONFIG_HOME/overleaf-mcp/projects.json(defaults to~/.config/overleaf-mcp/projects.json)
When env vars are set and a file is also present, env vars win and a notice is logged to stderr so the shadowing is visible.
{ "projects": { "default": { "name": "Main Paper", "projectId": "...", "gitToken": "olp_..." }, "paper2": { "name": "Second Paper", "projectId": "...", "gitToken": "olp_..." } } }
Then specify the project in tool calls:projectName: "paper2".
If you want to hack on the server, test changes before publishing, or use it without the npm package being available, you have three local-install options.
Option 1 β Run the cloned script directly
git clone https://github.com/mjyoo2/OverleafMCP.git cd OverleafMCP npm install
Then point Claude Desktop at the script and pass credentials via env vars (the same loader path the npm package uses):
{ "mcpServers": { "overleaf": { "command": "node", "args": ["/absolute/path/to/OverleafMCP/overleaf-mcp-server.js"], "env": { "OVERLEAF_PROJECT_ID": "...", "OVERLEAF_GIT_TOKEN": "olp_..." } } } }
On Windows,argsshould use"C:\\Users\\you\\OverleafMCP\\overleaf-mcp-server.js".
If you'd rather use a multi-project file:
cp projects.example.json projects.json # then edit it
projects.jsonnext to the script is the lowest-priority fallback, so this still works without env vars.
Option 2 β Test the packed npm artifact locally
Validates almost the same code path users hit through the public registry, useful before pushing a release:
npm pack # β mjyoo2-overleaf-mcp-<version>.tgz
Point Claude Desktop at the tarball. Note the explicit--package=and bin name βnpx -y <tarball-path>doesnotwork in npm 10+ (the path is mis-detected as an executable):
{ "mcpServers": { "overleaf": { "command": "cmd", "args": [ "/c", "npx", "-y", "--package=C:\\absolute\\path\\to\\mjyoo2-overleaf-mcp-<version>.tgz", "overleaf-mcp" ], "env": { "OVERLEAF_PROJECT_ID": "...", "OVERLEAF_GIT_TOKEN": "olp_..." } } } }
On macOS / Linux drop thecmd /cwrapper:"command": "npx", "args": ["-y", "--package=/abs/path/to/...tgz", "overleaf-mcp"].
Option 3 β Smoke-test the MCP protocol from the shell
OVERLEAF_PROJECT_ID=... OVERLEAF_GIT_TOKEN=... node overleaf-mcp-server.js
You should seeOverleaf MCP server running on stdioon stderr. The process stays open waiting for JSON-RPC on stdin; Ctrl+C to exit.
List files in a project (default: .tex files).
- extension: File extension filter (optional)
- projectName: Project identifier (optional, defaults to "default")
- filePath: Path to the file (required)
- projectName: Project identifier (optional)
- filePath: Path to the LaTeX file (required)
- projectName: Project identifier (optional)
- filePath: Path to the LaTeX file (required)
- sectionTitle: Title of the section (required)
- projectName: Project identifier (optional)
Get a comprehensive project status summary.
- projectName: Project identifier (optional)
Write the full content of a file to the project.
- filePath: Path to the file (required)
- content: Content to write to the file (required)
- commitMessage: Commit message (required)
- projectName: Project identifier (optional)
Write the content of a specific section to the project.
- filePath: Path to the file (required)
- sectionTitle: Title of the section (required)
- newContent: Replacement content for the section, including the section heading (required)
- commitMessage: Commit message (required)
- projectName: Project identifier (optional)
# List all projects Use the list_projects tool # Get project overview Use status_summary tool # Read main.tex file Use read_file with filePath: "main.tex" # Get Introduction section Use get_section_content with filePath: "main.tex" and sectionTitle: "Introduction" # List all sections in a file Use get_sections with filePath: "main.tex" # Write the full content of a file to the project Use write_file with filePath: "main.tex", content: "...", commitMessage: "..." # Write the content of a specific section to the project Use write_section with filePath: "main.tex", sectionTitle: "Introduction", newContent: "\\section{Introduction}\n...", commitMessage: "..."
- The Overleaf Git token grants full read/write access to your project β treat it like a password.
- PreferOVERLEAF_GIT_TOKEN_FILEover inlining the token in the Claude Desktop JSON if your config file is backed up or synced.
- projects.jsonis.gitignored in this repo. Never commit real project IDs or Git tokens.
- File paths supplied through MCP tool calls are restricted to the cloned project directory;..traversal and absolute paths are rejected.
An MCP server that equips your AI coding assistant with live, verified Android knowledge β so it builds from official sources, not from memory.
Generat 22 types mermaid architecture diagrams with natural language description
Allows AI assistants to interact with the GitHub API for repository management, code collaboration, and other development tasks.
Self-hosted MCP server over your markdown notes: hybrid search and note reading with sourced answers. The same vault is also a website, so the agent's memory is readable, git-diffable markdown. Single Go binary + SQLite, MIT.
Secure MCP access to local repositories from ChatgptWeb without shell, Git, or arbitrary writes.
Creates commit messages from staged files in a local git repository.
Anchor is local repo and org memory for AI coding agents. It indexes GitHub PR history, current code, tests, regressions, architecture, and cross-repo impact locally, then exposes concise cited context through MCP and CLI workflows. Local-first. Read-only GitHub access. No CLI telemetry. No SaaS. No remote LLM calls.
An MCP server for interacting with the AtomGit API for version control and code hosting.
Design system MCP server β query tokens, components, icons, and WCAG contrast data from Git-backed design systems.
Provides code context from local git repositories.
Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.





