latex-mcp-服务器

latex-mcp-server
分类General
作者Community
星标602
定价Free

简介

latex-mcp-server 是一个将 LLM 转化为学术写作助手的 MCP 服务。它解决了 AI 在处理 LaTeX 时仅能“写代码”而不能“跑结果”的痛点,让 AI 具备了编译文档、管理参考文献以及运行可视化脚本的实际操作能力。对于经常撰写论文、报告的开发者和研究者来说,它将 AI 从简单的文本生成器变成了能闭环处理从绘图到编译全流程的协作伙伴,无需在编辑器和终端之间频繁切换,极大提升了学术生产力。

核心亮点

  • 支持直接编译 LaTeX 文档并实时反馈结果
  • 自动化下载、整理并读取引用文献内容
  • 可运行可视化脚本并自动插入图表
  • 将 LLM 变为具备学术工作流能力的 Agent

完整文档

LaTeX MCP Server

一个能够增强你的 VSCode + LaTex Workshop 写作工作流的 MCP (Model Context Protocol) server

目前包含多种 MCP tools,且可以轻松地使用 Python 或 TypeScript 添加新工具。Python 进程作为 MCP server;部分工具通过桥接委派给一个小型 Node/TypeScript 模块执行。

LaTex MCP Server + Copilot/Claude/Cursor 能做什么?

  • 读取你引用的论文,验证或补充你的论点
  • 访问你的 python 脚本,根据实验数据生成新的图片/latex 表格,并自动将其插入到 latex 中
  • 可以验证每一个步骤并确保你的 pdf 能够成功编译
  • 在功能上,它可以自动将你的大纲 + 实验结果转化为一篇论文(尽管看起来可能像 AI 生成的冗余内容)

<p align="center">
<video src="./docs/demo/minimal.mp4" controls width="600">
Your browser does not support the video tag.
</video>
</p>

---

Python Tools

  • list_tex_files
列出 LaTeX 工作区下所有的 .tex 文件(相对路径)。方便 LLM 或 agent 发现可用的章节和段落。
  • read_file
读取工作区内给定相对路径的文件文本或二进制安全切片。支持指定返回的最大字节数。
  • extract_bibliography
解析 BibTeX 文件并返回结构化的条目元数据,包括下载 URL (DOI, arXiv)。帮助 agent 或脚本以编程方式处理引用数据。- download_bibliography 下载 resources/cited_papers/index.json 中列出的参考文献 PDF。支持强制重新下载并限制新下载的数量。
  • compile_latex
对主文档运行 LaTeX 编译(通过 latexmk 调用 pdflatex/xelatex),并返回成功状态及日志片段。支持指定 .tex 入口文件和编译次数。
  • read_pdf
使用 pypdf 从 PDF 文件路径提取文本和元数据,设有页数和字符限制。提取结果将存储为 JSON artifact 以供后续使用。
  • read_pdf_from_citation
通过 resources/cited_papers/index.json 将引用键(citation key)解析为对应的 PDF 并提取文本(必要时自动下载)。返回提取的文本、元数据和引用键。

---

TypeScript Bridge Tools

  • summarize_text
对提供的 LaTeX 或文本内容生成简洁的自然语言摘要。可指定摘要的最大句子数量。
  • suggest_bib_key
根据作者、年份和标题元数据建议一个稳定的 BibTeX key。适用于生成一致的引用键。

---

Install (with uv)

在仓库根目录下:

bash
cd latex-mcp-server
uv tool install -e .
code
uv tool install -e ./latex-mcp-server
这将使控制台脚本 latex-mcp-server 在你的 PATH 中可用。

> 如果你更倾向于在不将其安装为工具的情况下一次性运行:
>

bash
> uv run latex-mcp-server
>
## MCP 配置片段

添加到你的 mcp.json(VS Code / Claude Desktop 用户设置):

jsonc
"latex-mcp-server": {
"command": "uv",
"args": ["tool", "run", "latex-mcp-server", "--workspace", "ABSOLUTE_PATH_TO_YOUR_PROJECT_ROOT"]
}
如果省略 --workspace,服务器将推断当前工作目录。

Windows 示例

在 Windows (PowerShell / Bash) 上,如果您的 paper_1 根目录位于 C:\Users\User\projects\paper_1,请使用:

jsonc
"latex-mcp-server": {
"command": "uv",
"args": [
"tool", "run", "latex-mcp-server",
"--workspace", "C:/Users/User/projects/paper_1"
]
}
正斜杠是可以的;它们避免了对反斜杠进行转义的需求。请务必替换占位符 ABSOLUTE_PATH_TO_YOUR_PAPER_1_ROOT —— 如果保留像 WORKSPACE_FOLDER_PATH 这样的占位符,会导致运行时错误:
code
Workspace does not exist: C:\Users\User\WORKSPACE_FOLDER_PATH\PAPER_1
### 替代方案:安装一次,然后直接调用

运行以下命令后:

bash
cd latex-mcp-server
uv tool install -e .
你可以将配置简化为:
jsonc
"latex-mcp-server": {
"command": "latex-mcp-server",
"args": ["--workspace", "C:/Users/User/projects/paper_1"]
}
### 故障排除

| 现象 | 原因 | 解决方法 |
|---------|-------|-----|
| No solution found when resolving tool dependencies | 工具名称 latex-mcp-server 未发布到 PyPI,且 uv 尝试将其作为依赖项解析(通常发生在使用了 requires 等配置字段或未进行本地安装时) | 在仓库根目录运行 uv tool install -e ./latex-mcp-server,然后更新 mcp.json 以直接调用安装后的脚本 |
| Workspace does not exist: C:\\Users\\...WORKSPACE_FOLDER_PATH... | 占位符路径未更改 | 替换为真实的绝对路径 |
| 工具结果中出现 TypeScript runtime unavailable | 未安装 Node.js(仅 TS 桥接工具需要) | 安装 Node.js 18+,如果不需要 TS 工具则可忽略 |

如果您修改了 TypeScript 源码,请在重启服务器前重新构建并重新 vendor (npm run build)。

TypeScript Bridge

TypeScript 源码位于 ts_functions/src。编译后的 JavaScript 输出被 vendor 到 Python 包的 latex_mcp_server/ts_dist 目录下,因此用户无需安装 npmtsc 即可运行服务器。如需修改或添加 TS 函数:

bash
cd latex-mcp-server/ts_functions
npm install
npm run build
然后将 dist/ 的内容复制(或允许提供的辅助脚本同步)到 latex_mcp_server/ts_dist/ 中。

添加新的 Python 工具

latex_mcp_server/functions/latex_ops.py(或新模块)中添加函数,并在 server.pyregister_python_tools 中注册它们。

引用感知的 PDF 读取

当用户询问关于某篇论文时(例如 “解释 \cite{smith2023model} 与……有何不同”),Agent 应当:

1. 从请求中解析引用键(citation key)。
2. 为每个键调用 read_pdf_from_citation(获取/下载 PDF 并提取文本片段 + 元数据)。
3. 基于提取的文本给出回答(可选:调用 summarize_text 以获得简洁摘要)。
4. 指明提取内容是否被截断(检查 truncated 标志),避免在可用页数/字符范围之外过度推断。

read_pdf_from_citation 工具返回的 schema 与 read_pdf 相同,但增加了 citation_key,以便在多引用响应中正确标注片段来源。

自动更新 index.json(采用方法:VS Code Tasks)

本项目配置为在每次 LaTeX 构建前,通过 VS Code tasks 刷新 resources/cited_papers/index.json(采用建议方案中的方法 #3)。

新增文件:.vscode/tasks.json,包含三个任务:

  • update-index:运行一段简短的 Python 一行命令,对 src/references.bib 调用 extract_bibliography
  • latex-build:对 main.tex 执行 latexmk -pdf
  • build+index:依次运行 update-index 然后运行 latex-build。### 如何使用
1. 在 VS Code 中,打开命令面板并运行 “Tasks: Run Task”。 2. 选择 build+index(建议在提示时将其标记为默认生成任务)。 3. BibTeX 索引将首先重新生成,随后开始 LaTeX 编译。

如果 LaTeX Workshop 无法导入该包(ModuleNotFoundError),我们提供了一个辅助脚本 latex-mcp-server/update_index.py。工作区设置已更新为调用:

code
python latex-mcp-server/update_index.py
从而不再严格要求进行本地可编辑安装。

将其设为默认构建

在首次运行后,当 VS Code 弹出提示时,接受将 build+index 设置为默认项。你也可以将其添加到工作区设置中:
jsonc
// .vscode/settings.json (optional)
{
  "latex-workshop.latex.recipe.default": "build+index"
}
### 为什么采用此方法
  • 无后台监听进程。
  • 确定性:索引刷新与 build 命令显式绑定。
  • 开销极小(相对于 PDF 编译,BibTeX 解析速度很快)。

如果你后续需要替代方案(例如 Makefile 或按需新鲜度检查),仍然可以叠加实现;tasks 方法是非侵入性的。

添加新的 TS 工具

1. 在 ts_functions/src/functions/ 中创建新文件并导出函数。
2. 将其添加到 ts_functions/src/index.ts 的导出映射中。
3. 重新构建并同步 dist 输出。
4. 在 server.py 中使用 bridge.register_ts_tool 注册 Python 包装器。

协议注意事项

此服务器遵循 MCP JSON-RPC 消息模式。如果 mcp Python 包更新了 API,请相应地调整 import。

License

MIT