Install
$ agentstack add mcp-elias-ramzi-weblatexmcp ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ● Dynamic code execution Used
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
WebLatexMCP
Read, edit, compile, and commit LaTeX in any git-hosted project — straight from Claude.
[](https://github.com/elias-ramzi/WebLatexMCP/actions/workflows/ci.yml)
[](#license)
Works with [](docs/install/README.md)
Pending [](docs/install/gemini.md) [](docs/install/copilot.md) [](docs/install/mistral.md)
> [!WARNING] > Public beta — very early development. WebLatexMCP is now public, but it's in its early stages and > under active development. Expect bugs, rough edges, and incomplete features. Editing and git operations > touch real projects, so review diffs before you push. Please > report anything you run into — bug reports and > feedback are hugely welcome.
An MCP server that lets Claude read, edit, compile, and commit LaTeX in a git-hosted project — Overleaf, GitHub, or any git remote. It keeps a local clone, compiles locally (TeX Live + latexmk, or tectonic) so you see errors and PDFs without round-tripping, and sends changes back through an explicit commit → push you review first. Works with Claude Desktop and Claude Code over stdio, on macOS, Linux, and Windows.
Already have the .tex on your machine? Point it at that folder — or straight at the file — and it reads, edits and compiles the real files in place — no remote, no clone, no second copy of the document.
Highlights
- 🗂️ Any project, with or without a remote — Overleaf, GitHub, or any git remote, side by side, each with its own credentials — or a folder you already have, worked on in place, so what Claude compiles is the file your editor has open.
- 🧪 Local compiles —
latexmk(ortectonic) runs on your machine and returns structured errors/warnings + the PDF. Each error comes with the 5 source lines around it, so a bareUndefined control sequenceis readable on the spot. A package your TeX installation lacks is named outright, anddoctorreports what that installation actually has. - 👀 Live PDF viewer + review comments — a local viewer that hot-reloads on every compile (a browser window, or a VS Code tab); select text in the PDF to leave notes, and Claude applies them at the right source line via SyncTeX.
- ✏️ Surgical edits, reviewable pushes — atomic, exact-match string replacements;
commitandpushstay separate, so nothing leaves your machine implicitly. - 👥 Parallel sessions — run a session per section on one clone; each commits only its own edits, so
nobody sweeps up anyone else's half-written paragraph.
- 🔐 Tokens stay in memory — never written to
.git/config, and scrubbed from all output. - 📚 Citations checked, not trusted —
check_citationscatches what the draft cites but the bibliography never defines (and the reverse), and the/verify-citationsskill audits every entry against DBLP. Works on a.bib, a LaTeXthebibliography, or a prose reference list in a markdown draft. - 🧩 Bundled Claude Code skills — project cleanup, DBLP citation audits, bibliography normalization.
Install
Pick your client below. Either way, editing, git, and the PDF viewer work without TeX — only compile needs latexmk (default) or tectonic on your PATH. Not sure what you have? Ask Claude to run doctor and it reports your engines, TeX distribution, and where packages can be installed.
Claude Code (CLI or the VS Code extension)
Install the plugin — it registers the server and the [skills](#skills) in every session, from any directory:
# In Claude Code:
/plugin marketplace add elias-ramzi/WebLatexMCP
/plugin install web-latex-mcp@web-latex-tools
Prefer just the server? Register the npm package in one line (skills still come through as [prompts](docs/skills.md#two-ways-a-skill-runs)):
claude mcp add web-latex-mcp --scope user -- npx -y web-latex-mcp
💡 Launch Claude Code from your paper's own repo so the LaTeX clone lands right beside your code. The step-by-step [VS Code quickstart](docs/install/vscode-quickstart.md) is the most-tested path.
Claude Desktop — one-click extension
Download web-latex-mcp.mcpb from the latest release and drag it onto the Claude Desktop window (or Settings → Extensions → Install Extension). No cloning, building, or JSON editing — Desktop shows a short, all-optional form (tokens, clone folder). See the [Desktop Extension guide](docs/install/desktop-extension.md).
Add your token and your project — from the chat
However you installed, the server needs a token for your git host — for Overleaf, a Git authentication token from Account Settings → Git integration. The private way to hand it over, which never puts the token in the chat: ask Claude to open the credential portal.
> 👽 Open the credential portal for my Overleaf token.
credential_portal opens a local 127.0.0.1 page where you type the token; it goes straight into your OS keychain, never through the conversation. (Happy to paste it once instead? set_credential stores it in the keychain in a single step.)
Then add your project by just giving Claude the git URL — it registers it with register_project, and it persists across restarts and sessions:
> 👽 Add my Overleaf project https://git.overleaf.com/… and call it "thesis".
Working on a .tex that is already on this machine? Give it a folder instead — no token, no remote, and nothing is cloned ([details](docs/tools.md#local-in-place-projects)):
> 👽 Add the folder ~/papers/neurips as a local project called "paper".
Other clients & full configuration
Prefer env vars (WEB_LATEX_MCP_PROJECTS, per-host tokens, workspace, compiler), or using Gemini / GitHub Copilot? It's all in the docs: [Configuration](docs/configuration.md) · per-OS guides for [macOS](docs/install/macos.md) / [Linux](docs/install/linux.md) / [Windows](docs/install/windows.md) · [Gemini](docs/install/gemini.md) · [Copilot](docs/install/copilot.md).
What you can do
Once connected, ask Claude to work on your project — it drives these [tools](docs/tools.md):
- Set up — register a project from the chat (a git URL, or a local folder), sync it, browse and read files.
- Edit — create, overwrite, or make surgical string-replacement edits, with the out-of-band-edit guard on.
- Compile —
latexmkortectonic, locally, with structured errors and warnings, the source lines around each error, and a clickable link to the PDF.doctorexplains what your TeX installation is missing. - Cite — search DBLP and add verified BibTeX entries; list the references you already have from a
.bib, athebibliography, or a markdown draft; and cross-check what the document cites against what the bibliography defines — including a shared bibliography in another registered project. - Review & push —
statusanddiff(over aref, so a whole session is reviewable at once), thencommitandpush: rebase, never force, and a conflict comes back with both sides for you to resolve.
See the [full tool reference](docs/tools.md) for every parameter, the safety guards, and how conflicts, shell-escape, and parallel sessions work.
Skills
Task-specific skills that drive the tools — each stops at the diff, so nothing is committed or pushed unless you ask:
/format-latex-project— split the main file into per-section\inputs, move each figure/table into its own\inputfile, and reflow to one sentence per line./arxiv-clean-project— run arxiv-latex-cleaner to strip comments and draft macros (\todo, notes) for arXiv, as a separate submission copy or applied in place./verify-citations— audit a document's references against DBLP, flag discrepancies, and write a local audit report (read-only for the bibliography). Works on a.bib, a LaTeXthebibliography, or a markdown reference list — and on a local folder with no git remote./format-bibliography— deduplicate, normalize cite keys, harmonize venues, propagate renames into\cites./summarize-paper— write/update a small local summary of the paper (git-excluded) so future sessions start fast./session-feedback— run it at the end of a session to review what happened and write up what would improve the server itself: what broke, what took too many calls, what was missing, what the docs got wrong. Ranked by impact, scrubbed of your paper and your tokens, and emitted as ready-to-file issue bodies — the environment (version, OS, client, model, install method, toolchain) measured rather than guessed ([contributing](CONTRIBUTING.md#feedback-from-a-session)).
How you get them depends on the client:
- Claude Code — [install the plugin](#claude-code-cli-or-the-vs-code-extension)
(or launch Claude Code from a clone of this repo). Claude picks a skill up on its own when your request matches it.
- Any MCP client — nothing to install. Every skill is also registered as an MCP prompt, so it
ships with the server; pick it from the client's prompt menu (in Claude Desktop, the + in the composer) instead of typing /. Claude can also find and follow one on its own through the list_skills tool, without the skills being installed anywhere.
- Claude Desktop / claude.ai, for the same automatic behavior Claude Code gets — upload the skills to
your account: zip each folder under [.claude/skills/](.claude/skills/), then upload them under Customize → Skills → + → Create skill. Needs a paid plan with code execution enabled, and an uploaded copy is a snapshot, so re-upload when a skill changes.
See the [skills guide](docs/skills.md) for what each skill does, [step-by-step installation](docs/skills.md#installing), and [the two ways a skill runs](docs/skills.md#two-ways-a-skill-runs).
Documentation
- [Configuration](docs/configuration.md) — environment variables, per-host token resolution, in-context guides, cross-platform notes.
- [Tools](docs/tools.md) — full tool reference, the DBLP citation flow, and how safe pushes work.
- [Skills](docs/skills.md) — what each bundled skill does, how to install it per client, and the two ways one runs.
- [Concurrency](docs/CONCURRENCY.md) — how the server pushes without clobbering edits made elsewhere, and how parallel sessions share one clone.
- [Writing guide](docs/writing-guide.md) — the LaTeX style conventions surfaced to the client.
- [Contributing](CONTRIBUTING.md) — how to build, test, and open a pull request.
Contributing
This repo accepts pull requests — bug reports, feature ideas, docs fixes, and code changes are all welcome. See [CONTRIBUTING.md](CONTRIBUTING.md) for how to get set up, run the local gate, and open a PR.
Telling us how a session went is a contribution too, and the fastest one to make. At the end of a session spent working through the server, run the [/session-feedback](.claude/skills/session-feedback/SKILL.md) skill: it looks back over the tool calls that actually ran — the ones that failed, the detours, the guard that fired for the wrong reason, the thing you wanted and could not do — and writes a short, ranked write-up. What comes back is one ready-to-file issue body per finding, in the same field order as this repo's issue forms, carrying an environment block it measured — server version (and whether that is the latest), OS and architecture, Node, MCP client, model, install method, TeX toolchain — asking you for the few facts a session cannot read about itself rather than inventing them. It reports on the server, never on your paper: it edits nothing, commits nothing, pushes nothing, and it strips tokens, paths, and manuscript content before printing, because the report is written to be handed to a stranger. Paste a block into an issue, or say the word and gh files it. See [Feedback from a session](CONTRIBUTING.md#feedback-from-a-session).
A note on maturity: this project is largely vibe-coded, so treat it as best-effort rather than battle-tested. Robustness isn't guaranteed — expect rough edges, and please report them. It has been mostly tested on these setups: VS Code + Claude Code extension, the Claude Code CLI, and Claude Desktop for macOS.
License
MIT
Source & license
This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: elias-ramzi
- Source: elias-ramzi/WebLatexMCP
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.