{"name":"io.github.yangzichao/mcp-server-overleaf","slug":"yangzichao-mcp-server-overleaf","title":"Overleaf","description":"Read and edit Overleaf papers from any AI client. Edits can arrive as tracked-change suggestions.","url":"https://mcp.market/server/yangzichao-mcp-server-overleaf","rating":null,"grade":"B","score":83,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":29,"stars":0,"forks":0,"downloads_week":159,"last_push_at":"2026-09-19T15:25:49.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"mixed","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/yangzichao/mcp-server-overleaf","website":"https://github.com/yangzichao/mcp-server-overleaf#readme","version":"0.3.4","remotes":[],"packages":[{"registryType":"npm","registryBaseUrl":"https://registry.npmjs.org","identifier":"mcp-server-overleaf","version":"0.3.4","runtimeHint":"npx","transport":{"type":"stdio"},"packageArguments":[{"description":"Serve on stdio, which is the transport a local client starts.","value":"--stdio","type":"positional","valueHint":"transport"}],"environmentVariables":[{"description":"Overleaf Git authentication token, from https://www.overleaf.com/user/settings under Git integration.","isRequired":true,"isSecret":true,"name":"OVERLEAF_GIT_TOKEN"},{"description":"The project to open: its 24-character id, or the Overleaf address bar URL that contains it.","isRequired":true,"name":"OVERLEAF_PROJECT_ID"},{"description":"Optional. An Overleaf browser session cookie, which turns on the tracked-changes tools: suggest an edit, read the review panel, leave a comment.","isSecret":true,"name":"OVERLEAF_SESSION_COOKIE"}]},{"registryType":"mcpb","identifier":"https://github.com/yangzichao/mcp-server-overleaf/releases/download/v0.3.4/mcp-server-overleaf-0.3.4.mcpb","fileSha256":"a3b63219e47f47cd46b6afa00d3c2935f22d592c8c0d0019972c7949cca899c5","transport":{"type":"stdio"}}],"tools":[{"name":"add_comment","description":"Attach a review-panel comment thread to an exact snippet of text. The thread is anchored immediately;","write_action":false,"price_micros":0,"input_schema":null},{"name":"compile_project","description":"Compile the project locally with latexmk and report errors and warnings. Build artifacts are written outside the clone, so they are never pushed to Overleaf.","write_action":false,"price_micros":0,"input_schema":null},{"name":"discard_local_changes","description":"Throw away every local edit that has not been pushed, returning the clone to the last version seen on Overleaf.","write_action":false,"price_micros":0,"input_schema":null},{"name":"edit_section","description":"Replace the whole body of one section of a .tex file, located by its title. Include the sectioning command itself in newContent.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_files","description":"Pull from Overleaf and list tracked files grouped by kind, including files hidden by sparse checkout. Optionally filter by extension and include unpublished new files.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_projects","description":"List the Overleaf projects this server is configured to reach, and which one is the default.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_sections","description":"List the sectioning commands in a .tex file with their line ranges, so a section can be addressed by title instead of by line number.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_tracked_changes","description":"Read the tracked changes and review-panel comment threads on a document, as Overleaf's review panel shows them.","write_action":false,"price_micros":0,"input_schema":null},{"name":"project_status","description":"Report whether the local clone is in step with Overleaf: commits pulled, edits pending, and the recent history.","write_action":false,"price_micros":0,"input_schema":null},{"name":"project_summary","description":"Pull from Overleaf and return a JSON overview: file counts, likely main document and its section count, first ten files, pending diff statistics, and new unpublished files.","write_action":false,"price_micros":0,"input_schema":null},{"name":"push_changes","description":"Commit the pending local edits and push them to Overleaf. Before pushing, the server re-checks Overleaf and rebases onto anything collaborators pushed in the meantime; if that cannot be done cleanly the push is refused and the conflict is reported.","write_action":false,"price_micros":0,"input_schema":null},{"name":"read_file","description":"Pull from Overleaf and read text, optionally by line range. Without mode, returns plain text. mode=full returns JSON content and revision; mode=smart with previousRevision returns unchanged, a line replacement delta, or full content when the baseline is unavailable. Deltas use 1-based startLine: split the baseline on newline, splice deleteLineCount lines with change.lines, then join on newline. Ne","write_action":false,"price_micros":0,"input_schema":null},{"name":"read_section","description":"Read the body of a single section of a .tex file, located by its title.","write_action":false,"price_micros":0,"input_schema":null},{"name":"replace_text","description":"Replace an exact snippet of text in a project file. The snippet must appear exactly once unless replaceAll is set.","write_action":false,"price_micros":0,"input_schema":null},{"name":"search_project","description":"Search all tracked text files for a string or regular expression, returning matching lines.","write_action":false,"price_micros":0,"input_schema":null},{"name":"show_diff","description":"Show the diff of everything edited locally but not yet pushed to Overleaf. Call this before push_changes.","write_action":false,"price_micros":0,"input_schema":null},{"name":"suggest_edit","description":"Replace an exact snippet of text so that it arrives in Overleaf as a tracked change, which a co-author can accept or reject,","write_action":false,"price_micros":0,"input_schema":null},{"name":"sync_project","description":"Pull the latest commits from Overleaf into the local clone without changing anything.","write_action":false,"price_micros":0,"input_schema":null},{"name":"write_file","description":"Overwrite a project file with new content, creating it if it does not exist. Prefer replace_text or edit_section for changes to an existing file.","write_action":true,"price_micros":0,"input_schema":null}],"scan":{"score":83,"grade":"B","scanned_at":"2026-09-19T20:15:24.156Z","report":{"scannerVersion":"0.1.5","scannedAt":"2026-09-19T20:15:24.127Z","components":{"code":{"score":25,"max":25,"notes":["69 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":6,"max":15,"notes":["static API keys via environment variables"]},"maintenance":{"score":15,"max":15,"notes":["last push 0 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[],"inputs":{"packages":[{"registryType":"npm","identifier":"mcp-server-overleaf","version":"0.3.4","found":true,"license":"MIT","hasInstallScripts":false,"dependencyCount":3,"publishedAt":"2026-09-11T14:42:56.845Z","repositoryUrl":"git+https://github.com/yangzichao/mcp-server-overleaf.git","weeklyDownloads":159}],"repo":{"found":true,"owner":"yangzichao","repo":"mcp-server-overleaf","archived":false,"pushedAt":"2026-09-19T15:25:49Z","stars":0,"forks":0,"openIssues":3,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/43016957?v=4","ownerCreatedAt":"2018-09-05T21:34:09Z","license":"MIT"},"icon":{"url":"https://avatars.githubusercontent.com/u/43016957?v=4&s=128","source":"registry"},"presence":{"stars":0,"forks":0,"downloadsWeek":159,"license":"MIT","lastPushAt":"2026-09-19T15:25:49.000Z","score":29}}}},"grade_history":[],"reviews":[]}