adeoluwaadesina /
wingman-mcp
An MCP server that gives Claude conversations a persistent, interactive plan/to-do panel.
71/100 healthLoading repository data…
ghostiee-11 / repository
MCP server giving AI agents (Claude Code, Copilot, Antigravity) bi-directional sync with Overleaf - free tier included. 24 tools: LaTeX check, format, fix, compile, push.
A transparent discovery signal based on current public GitHub metadata.
This score does not audit code, security, maintainers, documentation quality, or suitability. Verify the repository and its current documentation before adoption.
An MCP server you plug into Claude Code, GitHub Copilot, Google Antigravity, or any client that speaks the MCP stdio protocol. Once connected, the agent can:
.tex: math brackets, align-column drift, figure completeness, table column match, package conflicts, heading-case consistency, dangling refs / unused labels / uncited bib entries.latexindent, lint with chktex, compile with latexmk. Everything gracefully degrades if the binary is not installed.It is the first MCP server that lets a free-tier Overleaf user do pull -> edit -> push from an AI agent in a single turn.
See docs/demo.md for a full 7-step transcript: list projects, plant 7 deliberate bugs, agent finds 10 findings across 5 checker tools, agent autonomously fixes every one, push back to Overleaf, independently verify on the server. Every query is a real claude -p invocation; every output is unedited.
Selected from shared topics, language and repository description—not editorial ratings.
adeoluwaadesina /
An MCP server that gives Claude conversations a persistent, interactive plan/to-do panel.
71/100 healthTelecomsXChangeAPi /
MCP server for the TelecomsXChange (TCXC) API — give Claude, OpenAI, Cursor, and any MCP client AI access to wholesale voice termination, SMS, DID numbers, eSIM, and HLR lookups. 55 telecom tools.
76/100 health60-second setup for Claude Code, free-tier Overleaf account:
# 1. Install this MCP server (stdio binary)
uv tool install overleaf-latex-mcp # or: pipx install overleaf-latex-mcp
# 2. Install overleaf-sync (used ONLY for the browser login, not for sync)
uv tool install overleaf-sync # or: pipx install overleaf-sync
# 3. Log into Overleaf once (opens a browser, stores ./.olauth in the project dir)
mkdir -p ~/tex/my-project && cd ~/tex/my-project
ols login
# 4. Register the MCP in Claude Code
claude mcp add overleaf \
--env OVERLEAF_PROJECT_ROOT="$HOME/tex/my-project" \
--env OVERLEAF_PROJECT_NAME="My Real Project" \
-- overleaf-latex-mcp
Now in any Claude Code chat:
"Use the overleaf MCP. Pull my project, run every check, fix what you can, then push back."
The agent calls olsync_pull, then the static checkers, then write_tex_file with fixes, then olsync_push. Your Overleaf project updates in place. Same URL. Collaborators see the change.
| Method | Command |
|---|---|
| Run without installing (recommended) | uvx overleaf-latex-mcp |
| Install globally with uv | uv tool install overleaf-latex-mcp |
| Install globally with pipx | pipx install overleaf-latex-mcp |
| From source | git clone <this-repo> && cd overleaf-mcp && uv sync && uv run overleaf-latex-mcp |
Requires Python 3.11+. No runtime deps beyond the mcp SDK, pydantic, requests, websockets, and overleaf-sync (used only for its browser login helper).
Each unlocks a set of MCP tools. Missing ones are reported via detect_capabilities and return install hints when called; the server never refuses to start.
| Tool | Unlocks | macOS | Debian / Ubuntu | Windows |
|---|---|---|---|---|
latexindent | format_file, format_snippet, check_formatting | brew install latexindent | apt install texlive-extra-utils | bundled with MikTeX / TeX Live |
chktex | lint_file | brew install chktex | apt install chktex | bundled |
latexmk | compile | brew install --cask mactex | apt install latexmk | bundled |
overleaf-sync | olsync_* (needed only for the one-time browser login) | uv tool install overleaf-sync | uv tool install overleaf-sync | pipx install overleaf-sync |
The static checks (check_math, check_figures, check_packages, etc.) are pure Python and work with no external deps.
Run once on the CLI:
claude mcp add overleaf \
--env OVERLEAF_PROJECT_ROOT=/absolute/path/to/project \
--env OVERLEAF_PROJECT_NAME="My Thesis" \
-- overleaf-latex-mcp
or add to ~/.claude.json by hand:
{
"mcpServers": {
"overleaf": {
"command": "overleaf-latex-mcp",
"env": {
"OVERLEAF_PROJECT_ROOT": "/absolute/path/to/project",
"OVERLEAF_PROJECT_NAME": "My Thesis"
}
}
}
}
Restart Claude Code; claude mcp list should show overleaf: ✓ Connected.
| Variable | Required | Purpose |
|---|---|---|
OVERLEAF_PROJECT_ROOT | yes | Absolute path to the local LaTeX working copy. |
OVERLEAF_PROJECT_NAME | no | Default project name for olsync_pull and olsync_push. Overridable per call. |
OVERLEAF_OLS_COOKIE | no | Custom path to the .olauth cookie file. Default: $OVERLEAF_PROJECT_ROOT/.olauth. |
OVERLEAF_GIT_URL | no | Overleaf Premium git URL (e.g. https://git.overleaf.com/<id>). Enables the pull_from_overleaf and push_to_overleaf tools. |
OVERLEAF_GIT_TOKEN | no | Overleaf Premium git token; paired with OVERLEAF_GIT_URL. |
Same JSON block in .vscode/mcp.json or the global Copilot MCP settings.
Any stdio-MCP client works. Adjust the config location per the client's docs; the command and env structure is standard.
The server auto-detects which modes are available based on your env vars and installed binaries. Multiple modes can be active simultaneously.
| Mode | When | Enables | How it works |
|---|---|---|---|
| Local | always (requires OVERLEAF_PROJECT_ROOT) | file I/O, all static checks, format / lint / compile (if binaries present) | pure local operations |
| Free-tier sync | .olauth cookie present (created by ols login) | olsync_list_projects, olsync_pull, olsync_push | downloads zips, uploads via Overleaf's own upload endpoint |
| Premium git | OVERLEAF_GIT_URL + OVERLEAF_GIT_TOKEN | pull_from_overleaf, push_to_overleaf, overleaf_status | standard git over HTTPS with GIT_ASKPASS token injection |
| ZIP bridge | always | import_overleaf_zip, export_overleaf_zip | manual round-trip via Overleaf's "Download Source" and "Upload Project" |
24 tools in total. Every tool returns a uniform { ok, data?, error?, suggestion? } result so the agent always gets actionable output.
| Tool | Purpose |
|---|---|
detect_capabilities | Report which LaTeX binaries the server found on startup. |
list_tex_files | Enumerate all .tex / .bib / .cls / .sty in the project. |
read_tex_file | Read a file; returns content plus line count. |
write_tex_file | Atomic write (tmp then rename). Path-boundary enforced. |
get_project_structure | Detect main file, sections, bibliography, \input chains, custom classes. |
| Tool | What it catches |
|---|---|
check_math | Unpaired \left / \right, unbalanced brackets inside math, & column drift in align / array / matrix. |
check_figures | Missing \caption, \label, \centering, float placement spec, oversized \includegraphics width. |
check_table | Column count mismatch, \hline placement. Understands booktabs rules. |
suggest_table_fix | Proposes a corrected column spec based on the widest row. |
check_packages | Duplicate \usepackage, known-bad combos (subfig+subcaption, bad hyperref order), missing-but-used commands (\SI without siunitx). |
check_consistency | Cross-file style: heading case uniformity, ASCII vs LaTeX quotes, hyphen vs en-dash in numeric ranges. |
find_unused_labels_and_refs | Dangling \ref / \eqref / \cref, unused \label, uncited bib entries. |
| Tool | Requires | Purpose |
|---|---|---|
format_file | latexindent | Apply project's .latexindent.yaml (or defaults) to a file. |
format_snippet | latexindent | Format a string without touching disk. |
check_formatting | latexindent | Dry-run; returns a unified diff. |
lint_file | chktex | Structured warnings with line, col, code, message. |
compile | latexmk | Build the PDF; returns path on success or parsed errors on failure. |
explain_log | none | Pure parser: LaTeX log text into structured errors with suggestions. |
| Tool | Purpose |
|---|---|
olsync_login_instructions | Print manual steps to run ols login in a fresh terminal. |
olsync_list_projects | GET /user/projects. Returns all projects (name, id, access level). |
olsync_pull | Download the project zip from GET /project/{id}/download/zip and extract into project_root. |
olsync_push | Overwrite files in the Overleaf project via POST /project/{id}/upload with name=<filename> body field. Top-level files only for now. |
| Tool | Purpose |
|---|---|
pull_from_overleaf | Clone (first call) or git pull --rebase. |
push_to_overleaf | git add -A, commit, push. Conflicts stop; not auto-resolved. |
overleaf_status | Branch, dirty flag, ahead/behind counts. |
| Tool | Purpose |
|---|---|
import_overleaf_zip | Unpack a zip from Menu > Download > Source into the project root. |
export_overleaf_zip | Zip the project for New Project > Upload Project. |
Static checks are one capability; the read, write, and sync tools let the agent do everything a LaTeX-savvy collaborator would: understand the project, draft content, rewrite for quality, apply templates, refactor structure, and enforce formatting.
The agent reads your actual document before acting. It uses:
| Tool | What the agent learns |
|---|---|
get_project_structure | Main file, every section with line numbers, bib files, `\input |
eshitakundu /
An MCP server that gives Claude Desktop structured access to your notes and past papers. Discovers topics, teaches in any style, quizzes you on grounded content, extracts PYQ patterns, and tracks mastery in local SQLite. Built with the official MCP Python SDK + FastMCP.
70/100 healthwyzd0m /
Local MCP server giving Claude customer support tools — Python, FastMCP, Anthropic ecosystem
59/100 health