overleaf-claude-mcp
overleaf-claude-mcp
Подключите Claude к вашей учётной записи Overleaf. Claude может просматривать список ваших проектов, выбирать нужный, читать LaTeX-файлы и изображения, редактировать файлы, компилировать и забирать готовый PDF.
У Overleaf нет публичного API на бесплатном тарифе: Git-мост и синхронизация с Dropbox доступны только в Premium. Поэтому этот сервер использует те же внутренние HTTP- и сокетные эндпоинты, что и веб-приложение Overleaf, авторизуясь через браузерную сессию, которую вы создаёте один раз. Каждый эндпоинт был извлечён из JavaScript-бандла самого Overleaf и проверен на реальном аккаунте. См. Проверенные эндпоинты.
Учебник
Что потребуется
Node 20 или новее (
node -v)Установленный Chrome или Edge
Учётная запись Overleaf, подойдёт и бесплатный тариф
Claude Code (
claude --version) или Claude Desktop
Шаг 1: Запустите настройку
Из этой папки в Windows:
setup.cmdВ macOS или Linux:
./setup.shНастройка выполнит пять шагов и выведет каждый из них:
Установит зависимости
Соберёт проект в
dist/Проверит наличие рабочей сессии Overleaf. Если её нет, в браузере откроется страница входа в Overleaf
Прочитает один из ваших реальных проектов, чтобы убедиться, что подключение работает
Предложит зарегистрировать сервер в Claude Code
Шаг 2: Войдите, когда откроется браузер
Окно браузера — это настоящий Chrome. Войдите обычным способом, включая двухфакторную аутентификацию. Никто не вводит за вас пароль, и ваш пароль никогда не считывается и не сохраняется.
Как только вы попадёте на страницу со списком проектов, окно закроется само, и настройка продолжится. Файлы cookie вашей сессии сохраняются в ~/.overleaf-claude-mcp/session.json.
Этот файл равносилен полному доступу к вашей учётной записи Overleaf. Он добавлен в .gitignore и создаётся с правами 0600. Не передавайте его никому и не коммитьте.
Шаг 3: Разрешите настройке зарегистрировать сервер
На шаге 5 появится запрос:
Register this server with Claude Code now? [y/N]Ответьте y. Будет выполнено:
claude mcp add overleaf -- node C:/CoolYEAH/overleaf-claude-mcp/dist/index.jsЕсли вы пропустили этот шаг или используете другой клиент, зарегистрируйте сервер вручную. Для Claude Code выполните команду выше. Для Claude Desktop отредактируйте %APPDATA%\Claude\claude_desktop_config.json в Windows или ~/Library/Application Support/Claude/claude_desktop_config.json в macOS:
{
"mcpServers": {
"overleaf": {
"command": "node",
"args": ["C:/CoolYEAH/overleaf-claude-mcp/dist/index.js"]
}
}
}Шаг 4: Перезапустите Claude
MCP-серверы подхватываются только при запуске. Закройте и снова откройте Claude Code или Claude Desktop.
Убедитесь, что сервер загрузился:
claude mcp listВы должны увидеть overleaf в списке подключённых. В сессии Claude Code то же самое показывает /mcp.
Шаг 5: Используйте
Просто сформулируйте запрос обычным языком. Claude сам выберет нужные инструменты.
List my Overleaf projectsSelect the Efficient Reasoning projectRead sections/methodology.texIn sections/results.tex, change "Table 1" to "Table~\ref{tab:main}"Compile it and tell me what the LaTeX errors areShow me figures/fig1.pngSave the compiled PDF to C:/tmp/paper.pdfВыберите проект один раз — и он запомнится. Выбор сохраняется в ~/.overleaf-claude-mcp/state.json и переживает перезапуски, поэтому все последующие запросы будут применяться к этому проекту, пока вы его не смените. Чтобы в одном запросе поработать с другим проектом, не переключаясь, назовите его: «прочитай main.tex из моего проекта thesis».
Related MCP server: claudeleaf
Как это запускается
Никаких слеш-команд и ничего печатать не нужно. Claude читает описания инструментов и вызывает их, когда ваш запрос им соответствует. Достаточно упомянуть Overleaf или уже выбранный проект или файл.
Если Claude не использует инструменты, обычно причина в одном из двух: вы не перезапустили Claude после регистрации, или проект ещё не выбран. Спросите «какой проект Overleaf выбран?», чтобы проверить.
Инструменты
Инструмент | Назначение |
| Список проектов с отметкой выбранного |
| Выбор активного проекта по id или имени |
| Показать, какой проект выбран |
| Полное дерево файлов и папок |
| Чтение LaTeX или другого текстового файла |
| Просмотр рисунка прямо в чате |
| Сохранение любого файла, включая PDF, локально |
| Поиск по регулярному выражению в проекте |
| Создание или перезапись текстового файла |
| Точная замена строки внутри файла |
| Загрузка локального файла, например рисунка |
| Создание папки и недостающих родительских |
| Переименование файла или папки |
| Перемещение файла или папки |
| Удаление записи, требует |
| Компиляция на стороне сервера |
| Компиляция и вывод разобранных ошибок LaTeX |
| Компиляция и сохранение PDF |
| Подсчёт слов после компиляции |
overleaf_select_project принимает id проекта или любую часть имени. Если имя соответствует нескольким проектам, он выведет список кандидатов, а не будет угадывать. overleaf_delete откажется выполниться, если confirm не равен true, так что случайно удалить файл Claude не сможет.
Устранение неполадок
«No Overleaf session at ...» — вы ещё не вошли в систему или срок сессии истёк. Выполните npm run login или снова запустите setup.cmd.
Claude не видит инструменты — вы не перезапустили Claude после регистрации. Проверьте claude mcp list.
Инструмент внезапно перестал работать — возможно, Overleaf изменил какой-то эндпоинт. Запустите npm run recon, который проверит каждый эндпоинт в режиме чтения и точно укажет, какой вызов сломался.
Проверьте настройки из терминала, без Claude:
npm run read -- "Efficient Reasoning"Выводит дерево файлов и все заголовки разделов подходящего проекта. Добавьте путь, чтобы вывести один файл:
npm run read -- "Efficient Reasoning" sections/methodology.texЗапускайте настройку заново в любое время. Она переиспользует рабочую сессию и заново проверяет подключение, так что это ещё и проверка работоспособности.
Как это работает
Дерево файлов берётся из сокетного соединения Overleaf, потому что только оно содержит идентификаторы сущностей, а они нужны для записи. Рукопожатие — это GET /socket.io/1/?projectId=<id> в формате socket.io 0.9; затем сервер отправляет joinProjectResponse со всем проектом, включая rootFolder, идентификаторы документов и хеши файлов. Дерево кэшируется на OVERLEAF_TREE_TTL_MS (по умолчанию 15 секунд) и сбрасывается после каждой записи.
Текстовые файлы читаются по одному документу, поэтому чтение всегда отражает текущее состояние. overleaf_grep вместо этого читает архив проекта, так что поиск по всему проекту обходится в один запрос, а не в один на файл.
Запись идёт через эндпоинт загрузки. Загрузка поверх существующего имени — это обновление на месте: идентификатор сущности сохраняется, поэтому история Overleaf и другие участники документа продолжают работать. Недостающие родительские папки создаются автоматически.
Проверенные эндпоинты
Подтверждено на реальном аккаунте, а не предположительно:
Операция | Вызов | Примечания |
Список проектов |
| Мета-тег |
CSRF |
| Мета-тег |
Новый проект |
| возвращает |
Дерево файлов |
|
|
Только пути |
| дёшево, без идентификаторов |
Чтение документа |
| обычный текст |
Чтение бинарника |
| хеш берётся из дерева |
Архив |
| используется для grep |
Создать или перезаписать |
| multipart, поле |
Создать документ или папку |
| тело |
Переименовать |
| 204 |
Переместить |
| 204, тело |
Удалить |
| 204 |
Компиляция |
| возвращает |
Подсчёт слов |
|
:type — это doc, file или folder.
Скрипты
Команда | Что делает |
| Полная настройка с нуля |
| То же самое, если зависимости установлены |
| Только повторная аутентификация |
| Просмотр проекта из терминала |
| Проверка каждого эндпоинта в режиме чтения |
| Сквозной тест записи в одноразовом проекте |
| Компиляция в |
npm run smoke создаёт проект claude-mcp-smoketest, затем выполняет запись, перезапись, загрузку изображения, переименование, перемещение, удаление и компиляцию. Проект остаётся в вашем аккаунте, чтобы вы могли его изучить. Удалите его, когда закончите.
Конфигурация
Всё необязательно. См. .env.example.
Переменная | Значение по умолчанию |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Ограничения
Всё это не является поддерживаемым API, и Overleaf может изменить его в любой момент. Используйте только со своей учётной записью. Совместное редактирование в реальном времени не реализовано: запись заменяет целый документ, а не отправляет операции на уровне символов, поэтому избегайте записи в файл, пока кто-то другой в нём печатает.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Alicense-qualityBmaintenanceEnables editing Overleaf projects from Claude, with tools to list, read, edit, and sync files via Git.MIT
- Alicense-qualityCmaintenanceEnables Claude and AI agents to read and edit Overleaf documents in real time, with support for project listing, document manipulation, LaTeX compilation, and live collaboration.1038MIT
- Alicense-qualityBmaintenanceConnects Claude/ChatGPT to Overleaf projects via the Git integration, enabling read, edit, write, and file management through natural language commands.2AGPL 3.0
- Alicense-qualityBmaintenanceEnables AI agents to read, edit, and compile LaTeX documents in Overleaf projects with tracked changes via the Model Context Protocol.1MIT
Related MCP Connectors
Edit your Overleaf LaTeX projects from Claude and ChatGPT; every change is a real Git commit.
Read, edit, publish, and preview your pepita websites from Claude.
Connect Claude to Fathom meeting recordings, transcripts, and summaries
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/MarvelCollin/overleaf-claude-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server