latex-mcp-服务器
简介
核心亮点
- 支持直接编译 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
.tex 文件(相对路径)。方便 LLM 或 agent 发现可用的章节和段落。
- read_file
- extract_bibliography
resources/cited_papers/index.json 中列出的参考文献 PDF。支持强制重新下载并限制新下载的数量。
- compile_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
- suggest_bib_key
---
Install (with uv)
在仓库根目录下:
cd latex-mcp-server
uv tool install -e .uv tool install -e ./latex-mcp-serverlatex-mcp-server 在你的 PATH 中可用。
> 如果你更倾向于在不将其安装为工具的情况下一次性运行:
>
> uv run latex-mcp-server
>添加到你的 mcp.json(VS Code / Claude Desktop 用户设置):
"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,请使用:
"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 这样的占位符,会导致运行时错误:Workspace does not exist: C:\Users\User\WORKSPACE_FOLDER_PATH\PAPER_1运行以下命令后:
cd latex-mcp-server
uv tool install -e ."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 目录下,因此用户无需安装 npm 或 tsc 即可运行服务器。如需修改或添加 TS 函数:
cd latex-mcp-server/ts_functions
npm install
npm run builddist/ 的内容复制(或允许提供的辅助脚本同步)到 latex_mcp_server/ts_dist/ 中。
添加新的 Python 工具
在 latex_mcp_server/functions/latex_ops.py(或新模块)中添加函数,并在 server.py 的 register_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。### 如何使用
build+index(建议在提示时将其标记为默认生成任务)。
3. BibTeX 索引将首先重新生成,随后开始 LaTeX 编译。
如果 LaTeX Workshop 无法导入该包(ModuleNotFoundError),我们提供了一个辅助脚本 latex-mcp-server/update_index.py。工作区设置已更新为调用:
python latex-mcp-server/update_index.py将其设为默认构建
在首次运行后,当 VS Code 弹出提示时,接受将build+index 设置为默认项。你也可以将其添加到工作区设置中:// .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