Skip to main content
Glama

Overleaf MCP 服务器

一个通过 Git 集成提供对 Overleaf 项目访问的 MCP(模型上下文协议)服务器。它允许 Claude 和其他 MCP 客户端读取 LaTeX 文件、分析文档结构、提取内容,以及向 Overleaf 项目读写文件。

功能特性

  • 📄 文件管理:从 Overleaf 项目中列出、读取和写入文件

  • 📋 文档结构:解析 LaTeX 的章节和子章节

  • 🔍 内容提取:按标题提取特定章节

  • 📊 项目摘要:获取项目状态和结构的概览

  • 🏗️ 多项目支持:管理多个 Overleaf 项目

Related MCP server: overleaf-mcp

快速入门(推荐)

无需克隆,无需 npm install。将此代码块添加到您的 Claude Desktop 配置文件中并重启 Claude Desktop。

配置文件位置

操作系统

路径

Windows

%APPDATA%\Claude\claude_desktop_config.json

macOS

~/Library/Application Support/Claude/claude_desktop_config.json

Linux

~/.config/claude/claude_desktop_config.json

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 — Windows 上的 Claude Desktop 需要 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 文件放入用户配置目录,并跳过 Claude Desktop 配置中的 env 代码块。

文件位置

操作系统

路径

Windows

%APPDATA%\overleaf-mcp\projects.json

macOS / Linux

~/.config/overleaf-mcp/projects.json (或设置了 $XDG_CONFIG_HOME 则为 $XDG_CONFIG_HOME/overleaf-mcp/projects.json)

文件内容

{
  "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"]
    }
  }
}

(在 macOS / Linux 上去掉 cmd /c。)

在工具调用中通过 projectName 引用特定项目:

Use read_file with filePath: "main.tex", projectName: "thesis"

如果省略 projectName,则使用 default 条目。要将 projects.json 放在标准位置之外的地方,请在 env 代码块中将其指向 OVERLEAF_PROJECTS_CONFIG=/absolute/path/projects.json。

获取 Overleaf 凭据

  1. 项目 ID — 打开您的 Overleaf 项目;ID 位于 URL 中:https://www.overleaf.com/project/[PROJECT_ID]

  2. Git 令牌 — Overleaf → 账户设置 (Account Settings) → Git 集成 (Git Integration) → “创建令牌” (Create Token)

配置参考

服务器会选择第一个匹配的配置源:

  1. 环境变量(单个项目) — OVERLEAF_PROJECT_ID + OVERLEAF_GIT_TOKEN。可选:OVERLEAF_PROJECT_NAME 用于显示名称。

  2. 来自文件的令牌 — 设置 OVERLEAF_PROJECT_ID 以及 OVERLEAF_GIT_TOKEN_FILE=/path/to/token.txt(代替 OVERLEAF_GIT_TOKEN)。当您不想在 Claude Desktop JSON 中包含令牌时非常有用。文件在启动时读取一次,并会修剪末尾的空格/换行符。

  3. 多项目文件 — OVERLEAF_PROJECTS_CONFIG=/absolute/path/projects.json。

  4. 用户配置目录 — projects.json 位于:

    • Windows: %APPDATA%\overleaf-mcp\projects.json

    • macOS / Linux: $XDG_CONFIG_HOME/overleaf-mcp/projects.json (默认为 ~/.config/overleaf-mcp/projects.json)

  5. 工作目录 — ./projects.json

  6. 包目录 — 服务器脚本旁边的 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 it

脚本旁边的 projects.json 是优先级最低的后备方案,因此即使没有环境变量,这也有效。

选项 2 — 在本地测试打包的 npm 制品

验证用户通过公共注册表访问的几乎相同的代码路径,在推送发布前很有用:

npm pack
# → mjyoo2-overleaf-mcp-<version>.tgz

将 Claude Desktop 指向 tarball。注意显式的 --package= 和 bin 名称 — 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 — 从 shell 对 MCP 协议进行冒烟测试

无需 Claude Desktop:

OVERLEAF_PROJECT_ID=... OVERLEAF_GIT_TOKEN=... node overleaf-mcp-server.js

您应该会在 stderr 上看到 Overleaf MCP server running on stdio。进程保持打开状态,等待 stdin 上的 JSON-RPC;按 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: "..."

安全说明

  • Overleaf Git 令牌授予对您项目的完全读写权限 — 请像对待密码一样对待它。

  • 如果您的配置文件已备份或同步,请优先使用 OVERLEAF_GIT_TOKEN_FILE 而不是在 Claude Desktop JSON 中内联令牌。

  • projects.json 在此仓库中已被 .gitignore 忽略。切勿提交真实的项目 ID 或 Git 令牌。

  • 通过 MCP 工具调用提供的文件路径仅限于克隆的项目目录;.. 遍历和绝对路径将被拒绝。

许可证

MIT 许可证

Available Tools

6 tools
get_section_contentC

Get content of a specific section

ParametersJSON Schema
NameRequiredDescriptionDefault
filePathYesPath to the LaTeX file
gitTokenNoGit token (optional, uses env var)
projectIdNoProject ID (optional, uses env var)
projectNameNoProject name (default, project2, etc.)
sectionTitleYesTitle of the section

TDQS

C2.7/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
filePathYesPath to the LaTeX file
gitTokenNoGit token (optional, uses env var)
projectIdNoProject ID (optional, uses env var)
projectNameNoProject name (default, project2, etc.)

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
extensionNoFile extension filter (e.g., .tex).tex
gitTokenNoGit token (optional, uses env var)
projectIdNoProject ID (optional, uses env var)
projectNameNoProject name (default, project2, etc.)

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
filePathYesPath to the file
gitTokenNoGit token (optional, uses env var)
projectIdNoProject ID (optional, uses env var)
projectNameNoProject name (default, project2, etc.)

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNameNoProject name (default, project2, etc.)

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

  1. 6 tool updatesv1.0.0
    • First observedget_section_content
    • First observedget_sections
    • First observedlist_files
    • First observedlist_projects
    • First observedread_file
    • First observedstatus_summary

TDQS

B3.4/5.0

Scored across 6 tools

Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness4/5

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

ActivityInactive
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers