
olcli
io.github.aloth由 GitHub 账号 aloth 发布v0.16.1更新于 Nov 7, 2026
Overleaf projects from an MCP client: files, compile and PDF, diff, comments and tracked changes
概览
让助手操作 Overleaf 上的 LaTeX 项目:拉取与推送文件、比对差异、编译成 PDF,并管理评论和修订记录。
- 可以做什么
- 列出、查看、创建和重命名 Overleaf 项目,包括按模式批量重命名
- 拉取、推送和同步项目文件,上传、下载、重命名、移动或删除文件,并把项目下载为 zip
- 将本地文件与线上项目比对差异,在 Overleaf 上编译并下载 PDF 或 bbl、log 等编译产物
- 列出、添加、回复、解决、重新打开和删除评审评论串
- 列出修订记录并接受或拒绝
- 适用场景
- 适合在本地编辑器或借助助手撰写 LaTeX、而论文托管在 Overleaf 且合作者仍在浏览器中编辑的场景。也适合需要同步、生成 PDF、推送前比对差异,或不必离开对话就能回复评审意见的论文与学位论文流程。
- 运行要求
- 以 stdio 在本地运行,通常通过 npx 启动,需要 Node.js 20.18.1 或更高版本。需要 Overleaf 账号和会话 cookie:可由 olcli auth 命令保存,或通过环境变量 OVERLEAF_SESSION 提供。自建实例需设置 OVERLEAF_BASE_URL,可选 OVERLEAF_COOKIE_NAME。需要能访问 Overleaf 的网络,支持代理变量。
安装
在 SourceWeft 中
- 打开 控制台中的 olcli,将其添加到工作区。
- 为需要使用其工具的对话启用该服务。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
其他 MCP 客户端
参照 仓库 中的启动说明。
README
olcli: Overleaf CLI
Work on Overleaf projects from your terminal while your coauthors keep using the Overleaf web editor. Pull, push, sync, diff and compile LaTeX projects; read and answer review comments; use Overleaf as a git remote; give AI agents an MCP server that asks you before it writes.
[CI] [npm version] [npm downloads] [License: MIT]
[DOI] [Glama MCP server] [AgentSkills]
- Coauthors change nothing. They keep editing, commenting and compiling in the browser; you work in Vim, VS Code, Emacs or an agent and sync with the same project.
- Works on the free Overleaf plan. Pull, push, sync, diff, latexdiff, compile, PDF and output downloads, file operations, zip, comment listing and the git remote helper were checked on a free overleaf.com account. Tracked changes are the exception: Overleaf itself only offers them in premium projects.
- Works on self-hosted Overleaf Community Edition with the same commands.
- No git token, no paid plan. olcli signs in with your normal Overleaf session. Overleaf's own Git integration is a premium feature; olcli's git remote helper is not tied to it.
- One package: command-line tool, git remote helper, MCP server and TypeScript library.
If olcli saves you time, please star the repository. To reference it in a paper, see Citation.
[olcli diff --latexdiff --pdf turns a local edit into a marked-up PDF]
Install
On Linux with Nix: nix run github:aloth/olcli -- --help. Without installing: npx @aloth/olcli list. For AI agents through AgentSkills: npx skills add aloth/olcli.
Quick start
olcli auth --browser opens the login page in Chrome, Edge, Chromium or Brave with a new temporary profile (never your own), waits until you have signed in, and keeps only the session cookie. It works with SSO, Google, ORCID and two-factor logins, and olcli never sees your password. It needs Node 22 or newer; set OLCLI_BROWSER when your browser is not found.
Sign in with a session cookie
No supported browser, or a server without a display? Paste the cookie instead:
Get your session cookie: sign in to Overleaf in a browser, open the developer tools (F12), then Application (Chrome, Edge) or Storage (Firefox), Cookies, and copy the value of overleaf_session2 (overleaf.sid on most self-hosted instances). A value on the command line also works but lands in your shell history.
Self-hosted instances without reCAPTCHA also accept olcli auth --email [email protected], which prompts for the password. Scripts can set OVERLEAF_SESSION, or OVERLEAF_EMAIL and OVERLEAF_PASSWORD, and skip olcli auth entirely.
Self-hosted Overleaf
Or per command: olcli --base-url https://latex.example.org list. The MCP server and the git remote helper read OVERLEAF_BASE_URL and OVERLEAF_COOKIE_NAME.
Features
- Pull, push, sync with nested folders, local deletions propagated on
sync, and LaTeX build artifacts ignored (ignore rules) - Diff local files against the live project before you push, with
--exit-codefor CI (docs/DIFF.md) - Marked-up revisions:
olcli diff --latexdiff --pdfbuilds the struck-through and underlined PDF advisors and journals ask for, compiled on Overleaf, no local TeX needed (needslatexdiffon PATH) - Compile and download the PDF, a single root document (
-r appendix.tex), or compile outputs such as.bblfor arXiv - Files: upload, download, delete, rename and move by path; download the project as a zip
- Review comments: list, add, reply, resolve, reopen and delete comment threads
- Tracked changes: list suggested insertions and deletions, accept or reject them. Track changes is an Overleaf premium feature: it is only available in projects whose owner has a premium plan, and invited collaborators on any plan can then use it. In other projects there are no tracked changes to list
- Projects: create, rename, and bulk-rename by pattern (dry run unless
--apply) - Git remote:
git clone overleaf::https://www.overleaf.com/project/<id>(docs/GIT-REMOTE.md) - MCP server for AI agents; every tool that writes asks you first (docs/MCP.md)
- Forgiving project names: case-insensitive, unique prefixes, "Did you mean" suggestions
- Scriptable:
--jsonon listings, plain output when piped,NO_COLOR, exit codes that mean something
Use with Claude Code, Codex and Cursor
olcli ships an MCP server, olcli-mcp. Add it to .mcp.json (Claude Code), .cursor/mcp.json (Cursor) or your client's MCP settings:
Codex uses TOML in ~/.codex/config.toml (or .codex/config.toml in a trusted project):
The server uses the session stored by olcli auth; set OVERLEAF_SESSION in env instead if you prefer. Every tool that changes a project (push a file, delete, rename, comment, accept or reject tracked changes, create a project) shows you what it will do and writes only after you confirm it in the client. The server tells the agent that project content, such as comments and document text, is data and not instructions. Details, the full tool list and clients without confirmation support: docs/MCP.md.
Commands
Inside a pulled directory (it contains .olcli.json), the project argument can be left out. olcli <command> --help shows every option with examples.
Global options: --base-url <url>, --cookie-name <name>, --timeout <ms>, --verbose (print every HTTP request), --no-color.
How sync works
pulldownloads every file and skips local files changed since the last pull;--forceoverwrites them.pushuploads files changed since the last pull and keeps the folder structure.push --dry-runlists them;olcli diffshows what actually differs.syncpulls, then pushes. Local edits win when they are newer, and a file you deleted locally is deleted on Overleaf (--no-deleteto opt out;sync --dry-run --verboseto preview).- Before a push,
olcli diffcompares against the project as it is on Overleaf right now, so you see a coauthor's newer edit before you overwrite it.
Examples
Proxy
olcli honors HTTPS_PROXY, HTTP_PROXY, ALL_PROXY and NO_PROXY (lower-case names take precedence) for every request. https:// instances are reached through a CONNECT tunnel, so the proxy never sees the session cookie. localhost and loopback addresses are always reached directly. --verbose names the proxy used for each request.
Configuration and credentials
Credentials are read in this order: OVERLEAF_SESSION, then .olauth in the current directory (written by olcli auth --save-local), then the global config. olcli auth status shows which one is used and where it lives. The session cookie is stored in plaintext; a password only when you pass --save-password. olcli logout clears the global config and .olauth.
Every environment variable, the timeout setting and the ignore rules (.olignore, .olignore.local) are described in docs/CONFIGURATION.md. olcli --help lists the variables too.
Library
All exports: docs/LIBRARY.md.
Troubleshooting
- "Session expired or invalid. Run: olcli auth": sessions expire; sign in again.
olcli auth statustells you which credential was used. - Timeouts on large projects:
olcli config set-timeout 60000, or--timeout 60000once. - Compilation fails: the Overleaf web editor shows the full log;
olcli output logdownloads it. - Anything else: run the command with
--verboseand include the output (without the cookie) in an issue.
Documentation
- docs/DIFF.md: diff, latexdiff and the CI gate
- docs/MCP.md: MCP server, tools and write confirmation
- docs/GIT-REMOTE.md: Overleaf as a git remote
- docs/CONFIGURATION.md: credentials, environment variables, timeout, ignore rules
- docs/LIBRARY.md: TypeScript library
- docs/ARCHITECTURE.md: how the client talks to Overleaf (there is no public Overleaf API, so it uses a browser session)
Contributing
Contributions are welcome. See CONTRIBUTING.md for local setup, which tests need a real Overleaf account, and what CI checks on a pull request.
Citation
If you use olcli in your research, please cite it. GitHub's "Cite this repository" button in the sidebar gives the reference in APA and BibTeX, from CITATION.cff. The DOI 10.5281/zenodo.23896243 always resolves to the latest version.
License
MIT © Alexander Loth
来源:README.md,提交 8639a3a
工具
0版本历史
3- v0.16.1最新Nov 7, 2026
- v0.15.3Nov 3, 2026
- v0.15.2Oct 26, 2026
评分
已满足适用检查项的 50%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
- 近 30 天内可连通25 分
请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。
- 已声明认证方式10 分
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
- 已列出工具15 分
请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。
- 描述必需15 分
- 图标10 分
- 文档15 分
- 许可证10 分