Overleaf MCP Server
Overleaf MCP Server
MCP-сервер (Model Context Protocol), предоставляющий доступ к проектам Overleaf через интеграцию с Git. Это позволяет Claude и другим MCP-клиентам читать LaTeX-файлы, анализировать структуру документа, извлекать содержимое, а также записывать файлы в проекты Overleaf и из них.
Возможности
📄 Управление файлами: список, чтение и запись файлов в проектах Overleaf
📋 Структура документа: разбор разделов и подразделов LaTeX
🔍 Извлечение содержимого: извлечение конкретных разделов по заголовку
📊 Сводка проекта: получение обзора состояния и структуры проекта
🏗️ Поддержка нескольких проектов: управление несколькими проектами Overleaf
Related MCP server: Overleaf MCP Server
Быстрый старт (рекомендуется)
Никакого клонирования, никакого npm install. Добавьте этот блок в конфигурацию Claude Desktop и перезапустите Claude Desktop.
Расположение файла конфигурации
ОС | Путь |
Windows |
|
macOS |
|
Linux |
|
macOS / Linux
{
"mcpServers": {
"overleaf": {
"command": "npx",
"args": ["-y", "@mjyoo2/overleaf-mcp"],
"env": {
"OVERLEAF_PROJECT_ID": "YOUR_OVERLEAF_PROJECT_ID",
"OVERLEAF_GIT_TOKEN": "YOUR_OVERLEAF_GIT_TOKEN"
}
}
}
}Windows — Claude Desktop на Windows требует cmd /c для поиска npx:
{
"mcpServers": {
"overleaf": {
"command": "cmd",
"args": ["/c", "npx", "-y", "@mjyoo2/overleaf-mcp"],
"env": {
"OVERLEAF_PROJECT_ID": "YOUR_OVERLEAF_PROJECT_ID",
"OVERLEAF_GIT_TOKEN": "YOUR_OVERLEAF_GIT_TOKEN"
}
}
}
}Перезапустите Claude Desktop. Инструменты overleaf должны появиться в меню 🔧.
Настройка нескольких проектов
Быстрый старт через переменные окружения поддерживает только один проект. Для нескольких проектов поместите файл projects.json в директорию конфигурации пользователя и пропустите блок env в конфигурации Claude Desktop.
Расположение файла
ОС | Путь |
Windows |
|
macOS / Linux |
|
Содержимое файла
{
"projects": {
"default": {
"name": "Main Paper",
"projectId": "...",
"gitToken": "olp_..."
},
"thesis": {
"name": "PhD Thesis",
"projectId": "...",
"gitToken": "olp_..."
}
}
}Конфигурация Claude Desktop — то же самое, что и при быстром старте, но без блока env:
{
"mcpServers": {
"overleaf": {
"command": "cmd",
"args": ["/c", "npx", "-y", "@mjyoo2/overleaf-mcp"]
}
}
}(Уберите cmd /c на macOS / Linux.)
Ссылайтесь на конкретный проект в вызовах инструментов с помощью projectName:
Use read_file with filePath: "main.tex", projectName: "thesis"Если projectName опущен, используется запись default. Чтобы разместить projects.json не в стандартном месте, укажите путь к нему через OVERLEAF_PROJECTS_CONFIG=/absolute/path/projects.json в блоке env.
Получение учетных данных Overleaf
ID проекта — откройте ваш проект Overleaf; ID находится в URL:
https://www.overleaf.com/project/[PROJECT_ID]Git-токен — Overleaf → Account Settings → Git Integration → "Create Token"
Справочник по конфигурации
Сервер выбирает первый подходящий источник конфигурации:
Переменные окружения (один проект) —
OVERLEAF_PROJECT_ID+OVERLEAF_GIT_TOKEN. Опционально:OVERLEAF_PROJECT_NAMEдля отображаемого имени.Токен из файла — установите
OVERLEAF_PROJECT_IDвместе сOVERLEAF_GIT_TOKEN_FILE=/path/to/token.txt(вместоOVERLEAF_GIT_TOKEN). Полезно, если вы не хотите хранить токен в JSON-файле Claude Desktop. Файл считывается один раз при запуске, все завершающие пробелы/символы переноса строки удаляются.Файл для нескольких проектов —
OVERLEAF_PROJECTS_CONFIG=/absolute/path/projects.json.Директория конфигурации пользователя —
projects.jsonв:Windows:
%APPDATA%\overleaf-mcp\projects.jsonmacOS / Linux:
$XDG_CONFIG_HOME/overleaf-mcp/projects.json(по умолчанию~/.config/overleaf-mcp/projects.json)
Рабочая директория —
./projects.jsonДиректория пакета —
projects.jsonрядом со скриптом сервера (устаревший метод, для установок на основе клонирования).
Когда установлены переменные окружения и также присутствует файл, переменные окружения имеют приоритет, а в stderr записывается уведомление, чтобы было видно перекрытие.
Схема projects.json (несколько проектов)
{
"projects": {
"default": {
"name": "Main Paper",
"projectId": "...",
"gitToken": "olp_..."
},
"paper2": {
"name": "Second Paper",
"projectId": "...",
"gitToken": "olp_..."
}
}
}Затем укажите проект в вызовах инструментов: projectName: "paper2".
Локальная разработка
Если вы хотите поработать над сервером, протестировать изменения перед публикацией или использовать его без доступного npm-пакета, у вас есть три варианта локальной установки.
Вариант 1 — Запуск клонированного скрипта напрямую
git clone https://github.com/mjyoo2/OverleafMCP.git
cd OverleafMCP
npm installЗатем укажите Claude Desktop путь к скрипту и передайте учетные данные через переменные окружения (тот же путь загрузчика, который использует npm-пакет):
{
"mcpServers": {
"overleaf": {
"command": "node",
"args": ["/absolute/path/to/OverleafMCP/overleaf-mcp-server.js"],
"env": {
"OVERLEAF_PROJECT_ID": "...",
"OVERLEAF_GIT_TOKEN": "olp_..."
}
}
}
}На Windows в args следует использовать "C:\\Users\\you\\OverleafMCP\\overleaf-mcp-server.js".
Если вы предпочитаете использовать файл для нескольких проектов:
cp projects.example.json projects.json # then edit itprojects.json рядом со скриптом является резервным вариантом с самым низким приоритетом, поэтому это работает и без переменных окружения.
Вариант 2 — Тестирование упакованного npm-артефакта локально
Проверяет практически тот же путь кода, с которым сталкиваются пользователи через публичный реестр, полезно перед выпуском релиза:
npm pack
# → mjyoo2-overleaf-mcp-<version>.tgzУкажите Claude Desktop путь к tar-архиву. Обратите внимание на явный --package= и имя бинарного файла — npx -y <tarball-path> не работает в npm 10+ (путь ошибочно определяется как исполняемый файл):
{
"mcpServers": {
"overleaf": {
"command": "cmd",
"args": [
"/c", "npx", "-y",
"--package=C:\\absolute\\path\\to\\mjyoo2-overleaf-mcp-<version>.tgz",
"overleaf-mcp"
],
"env": {
"OVERLEAF_PROJECT_ID": "...",
"OVERLEAF_GIT_TOKEN": "olp_..."
}
}
}
}На macOS / Linux уберите обертку cmd /c: "command": "npx", "args": ["-y", "--package=/abs/path/to/...tgz", "overleaf-mcp"].
Вариант 3 — Дымовое тестирование протокола MCP из оболочки
Claude Desktop не требуется:
OVERLEAF_PROJECT_ID=... OVERLEAF_GIT_TOKEN=... node overleaf-mcp-server.jsВы должны увидеть Overleaf MCP server running on stdio в stderr. Процесс остается открытым, ожидая JSON-RPC на stdin; Ctrl+C для выхода.
Доступные инструменты
list_projects
Список всех настроенных проектов.
list_files
Список файлов в проекте (по умолчанию: .tex файлы).
extension: фильтр расширений файлов (опционально)projectName: идентификатор проекта (опционально, по умолчанию "default")
read_file
Чтение конкретного файла из проекта.
filePath: путь к файлу (обязательно)projectName: идентификатор проекта (опционально)
get_sections
Получение всех разделов из LaTeX-файла.
filePath: путь к LaTeX-файлу (обязательно)projectName: идентификатор проекта (опционально)
get_section_content
Получение содержимого конкретного раздела.
filePath: путь к LaTeX-файлу (обязательно)sectionTitle: заголовок раздела (обязательно)projectName: идентификатор проекта (опционально)
status_summary
Получение полной сводки состояния проекта.
projectName: идентификатор проекта (опционально)
write_file
Запись полного содержимого файла в проект.
filePath: путь к файлу (обязательно)content: содержимое для записи в файл (обязательно)commitMessage: сообщение коммита (обязательно)projectName: идентификатор проекта (опционально)
write_section
Запись содержимого конкретного раздела в проект.
filePath: путь к LaTeX-файлу (обязательно)sectionTitle: заголовок раздела (обязательно)newContent: новое содержимое для раздела, включая заголовок раздела (обязательно)commitMessage: сообщение коммита (обязательно)projectName: идентификатор проекта (опционально)
Примеры использования
# List all projects
Use the list_projects tool
# Get project overview
Use status_summary tool
# Read main.tex file
Use read_file with filePath: "main.tex"
# Get Introduction section
Use get_section_content with filePath: "main.tex" and sectionTitle: "Introduction"
# List all sections in a file
Use get_sections with filePath: "main.tex"
# Write the full content of a file to the project
Use write_file with filePath: "main.tex", content: "...", commitMessage: "..."
# Write the content of a specific section to the project
Use write_section with filePath: "main.tex", sectionTitle: "Introduction", newContent: "\\section{Introduction}\n...", commitMessage: "..."Примечания по безопасности
Git-токен Overleaf предоставляет полный доступ на чтение/запись к вашему проекту — относитесь к нему как к паролю.
Предпочитайте
OVERLEAF_GIT_TOKEN_FILEвместо вставки токена в JSON-файл Claude Desktop, если ваш файл конфигурации резервируется или синхронизируется.projects.jsonдобавлен в.gitignoreв этом репозитории. Никогда не коммитьте реальные ID проектов или Git-токены.Пути к файлам, передаваемые через вызовы инструментов MCP, ограничены директорией клонированного проекта; перемещение через
..и абсолютные пути отклоняются.
Лицензия
MIT License
Available Tools
6 toolsget_section_contentC
Get content of a specific section
| Name | Required | Description | Default |
|---|---|---|---|
| filePath | Yes | Path to the LaTeX file | |
| gitToken | No | Git token (optional, uses env var) | |
| projectId | No | Project ID (optional, uses env var) | |
| projectName | No | Project name (default, project2, etc.) | |
| sectionTitle | Yes | Title of the section |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states the action ('Get content') without detailing how it works (e.g., whether it fetches from a repository, handles errors, or returns structured data). This leaves critical behavioral traits like permissions, rate limits, or output format unspecified.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with no wasted words. It's front-loaded with the core purpose, making it easy to parse quickly, though this conciseness comes at the cost of detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (5 parameters, no annotations, no output schema), the description is incomplete. It doesn't explain what 'content' means (e.g., text, metadata), how it relates to LaTeX files or Git, or what the output looks like. This leaves significant gaps for an agent to understand the tool's full context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, with all parameters documented in the input schema. The description adds no additional meaning beyond what the schema provides (e.g., it doesn't explain the relationship between parameters like 'filePath' and 'sectionTitle'). Baseline 3 is appropriate as the schema handles parameter documentation adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the tool's purpose as 'Get content of a specific section', which is clear but vague. It specifies the verb 'Get' and resource 'content of a specific section', but doesn't distinguish it from sibling tools like 'read_file' or 'get_sections', leaving ambiguity about what makes this tool unique.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. The description doesn't mention sibling tools like 'read_file' (which might read entire files) or 'get_sections' (which might list sections), nor does it specify prerequisites or contexts for usage, leaving the agent without direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_sectionsC
Get all sections from a LaTeX file
| Name | Required | Description | Default |
|---|---|---|---|
| filePath | Yes | Path to the LaTeX file | |
| gitToken | No | Git token (optional, uses env var) | |
| projectId | No | Project ID (optional, uses env var) | |
| projectName | No | Project name (default, project2, etc.) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states 'Get all sections' but doesn't explain what 'sections' means (e.g., LaTeX section commands like \section), how they are returned (e.g., list of strings, structured data), or any limitations (e.g., file size, parsing errors). This leaves significant gaps in understanding the tool's behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with no wasted words, making it easy to parse and understand quickly. It's appropriately sized for a simple tool and front-loads the core action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (4 parameters, no output schema, no annotations), the description is incomplete. It doesn't address what the tool returns (e.g., format of sections), error handling, or dependencies between parameters. For a tool that parses LaTeX files, more context is needed to use it effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, so the input schema already documents all parameters thoroughly. The description adds no additional meaning beyond the schema, such as explaining interactions between parameters (e.g., how gitToken and projectId relate to filePath). Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'sections from a LaTeX file', making the purpose specific and understandable. However, it doesn't explicitly differentiate from sibling tools like 'get_section_content' or 'read_file', which might have overlapping functionality, so it doesn't reach the highest score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as 'get_section_content' or 'read_file'. It lacks context about use cases, prerequisites, or exclusions, leaving the agent to infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_filesC
List all files in an Overleaf project
| Name | Required | Description | Default |
|---|---|---|---|
| extension | No | File extension filter (e.g., .tex) | .tex |
| gitToken | No | Git token (optional, uses env var) | |
| projectId | No | Project ID (optional, uses env var) | |
| projectName | No | Project name (default, project2, etc.) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states the basic action without disclosing behavioral traits. It doesn't mention whether this is a read-only operation, what permissions are needed, how results are formatted, or any rate limits, which is insufficient for a tool with 4 parameters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that states the core purpose without any wasted words. It's appropriately sized and front-loaded, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 4 parameters, no annotations, and no output schema, the description is incomplete. It doesn't explain return values, error conditions, or behavioral context needed for effective use, leaving significant gaps despite the concise statement of purpose.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds no additional meaning about parameters beyond implying a listing operation, meeting the baseline score when schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List' and resource 'files in an Overleaf project', making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'list_projects' or 'get_sections', which would require explicit comparison to achieve a score of 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'list_projects' or 'get_sections'. There's no mention of prerequisites, context, or exclusions, leaving the agent without usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_projectsB
List all available projects
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. 'List all available projects' implies a read-only operation, but it doesn't specify behavioral traits such as pagination, sorting, filtering, rate limits, authentication needs, or what 'available' means (e.g., active vs. archived). This leaves significant gaps for an agent to understand how to interact with the tool effectively.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero waste: 'List all available projects'. It is front-loaded and directly conveys the core purpose without unnecessary elaboration, making it highly concise and well-structured for its simplicity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description is incomplete for contextual understanding. It doesn't explain what 'projects' entail, the format of the returned list, or any constraints like visibility or access controls. For a tool with no structured support, more context is needed to guide the agent fully, especially regarding behavioral aspects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0 parameters with 100% coverage, meaning no parameters are documented in the schema. The description doesn't add parameter details, which is appropriate since there are none to describe. This meets the baseline for tools with zero parameters, as there's no need to compensate for missing schema information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'List all available projects' clearly states the verb ('List') and resource ('projects') with scope ('all available'). It distinguishes from siblings like 'list_files' (different resource) and 'get_sections' (different operation), though it doesn't explicitly differentiate from them. The purpose is unambiguous but lacks explicit sibling comparison.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, context for usage, or comparisons to siblings like 'get_sections' or 'list_files'. The agent must infer usage based solely on the tool name and description without explicit direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_fileC
Read a file from an Overleaf project
| Name | Required | Description | Default |
|---|---|---|---|
| filePath | Yes | Path to the file | |
| gitToken | No | Git token (optional, uses env var) | |
| projectId | No | Project ID (optional, uses env var) | |
| projectName | No | Project name (default, project2, etc.) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool reads a file but doesn't mention permissions required, rate limits, error handling, or what the output looks like (e.g., file content format). This is a significant gap for a tool that interacts with external resources.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence that efficiently conveys the core purpose without any fluff. It is appropriately sized and front-loaded, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of reading files from a project management system, no annotations, and no output schema, the description is incomplete. It doesn't address behavioral aspects like authentication needs, error cases, or output format, which are crucial for effective tool use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters well. The description adds no additional meaning beyond the schema, such as explaining how 'filePath' relates to Overleaf's structure or when to use 'gitToken' versus environment variables. Baseline 3 is appropriate as the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Read') and resource ('a file from an Overleaf project'), making the tool's purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'get_section_content' or 'list_files', which might have overlapping functionality in reading file content, so it misses the highest score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as 'get_section_content' or 'list_files'. The description lacks context about scenarios where this tool is preferred, prerequisites, or exclusions, leaving usage ambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
status_summaryC
Get a summary of the project status using default credentials
| Name | Required | Description | Default |
|---|---|---|---|
| projectName | No | Project name (default, project2, etc.) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions 'using default credentials', which adds some context about authentication, but fails to describe critical traits like whether this is a read-only operation, what the output format is, or any rate limits or side effects. For a tool with zero annotation coverage, this leaves significant gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with no wasted words. It is appropriately sized for a simple tool and front-loaded with the core purpose, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description is incomplete for a tool that presumably returns a status summary. It lacks details on what the summary includes, format, or any behavioral context beyond credentials. For a tool with 1 parameter and no structured output documentation, more information is needed to guide effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, with the parameter 'projectName' documented as 'Project name (default, project2, etc.)'. The description adds no additional meaning beyond this, such as explaining what 'default' refers to or how the parameter influences the summary. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get a summary') and resource ('project status'), making the purpose understandable. It doesn't differentiate from siblings like 'list_projects' or 'get_sections', which would require more specificity about what distinguishes a status summary from other project-related operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'list_projects'. It mentions 'using default credentials', which hints at authentication context but doesn't clarify prerequisites or exclusions for usage relative to other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
6 tool updates
v1.0.0- First observed
get_section_content - First observed
get_sections - First observed
list_files - First observed
list_projects - First observed
read_file - First observed
status_summary
TDQS
Each tool has a clearly distinct purpose targeting different resources or actions: list_projects (projects), list_files (files within a project), read_file (content of a file), get_sections (sections within a file), get_section_content (content of a specific section), and status_summary (project overview). There is no overlap or ambiguity in their functions.
All tool names follow a consistent verb_noun pattern with snake_case: list_projects, list_files, read_file, get_sections, get_section_content, and status_summary. The verbs (list, read, get) are appropriate and predictable, making the set easy to navigate.
With 6 tools, this server is well-scoped for managing Overleaf projects, covering core operations like listing projects/files, reading content, and getting summaries. The count is appropriate—neither too sparse nor bloated—for the domain of LaTeX project management.
The tool set provides good coverage for reading and listing operations in Overleaf projects, but there are minor gaps in write/update capabilities (e.g., no tools for creating or editing files/sections). Agents can work around this for read-only tasks, but full lifecycle management is incomplete.
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 Connectors
Edit your Overleaf LaTeX projects from Claude and ChatGPT; every change is a real Git commit.
Code intelligence for LLMs. Analyze, search, and retrieve code from any public git repository.
Persistent AI LaTeX workspace: edit and compile multi-file projects, export publication-ready PDFs.
Connect AI assistants to your GitHub-hosted Obsidian vault to seamlessly access, search, and analy…
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables access to Overleaf LaTeX projects through Git integration, allowing users to read files, analyze document structure, extract sections, and manage multiple projects through natural language commands.189MIT
- AlicenseAqualityDmaintenanceIntegrates with Overleaf's Git feature to manage LaTeX projects directly from MCP-enabled environments, enabling cloning, syncing, and pushing changes between local machine and Overleaf.518MIT
- AlicenseNot gradedqualityBmaintenanceEnables editing Overleaf projects from Claude, with tools to list, read, edit, and sync files via Git.MIT
- AlicenseNot gradedqualityDmaintenanceAn MCP server that provides access to Overleaf projects via Git integration, enabling Claude and other MCP clients to read LaTeX files, analyze document structure, and extract content.131MIT
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/mjyoo2/OverleafMCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server