返回市场
latex-mcp服务器

latex-mcp服务器

作者:Yeok-c2 星标更新:2025-08-18

项目介绍

LaTeX MCP Server

一个可以增强你的VSCode + LaTex Workshop写作流程的MCP(模型上下文协议)服务器

目前包含MCP工具,并且可以轻松添加Python和TypeScript的新工具。Python进程是MCP服务器;选定的工具通过桥梁委托给一个小的Node/TypeScript模块。

LaTex MCP Server + Copilot/Claude/Cursor,你可以做什么?

  • 阅读你引用的论文,验证或补充你的论点
  • 访问你的Python脚本,根据实验数据生成新的图表/LaTeX表格,并自动将其放置到LaTeX中
  • 可以验证每一步并确保PDF编译成功
  • 功能上它可以自主地将你的大纲+实验结果转化为一篇论文(可能看起来有些粗糙)
<p align="center"> <video src="./docs/demo/minimal.mp4" controls width="600"> 您的浏览器不支持视频标签。 </video> </p>

Python 工具

  • list_tex_files
    列出LaTeX工作区下的所有.tex文件(相对路径)。对于LLMs或代理发现可用章节和部分非常有用。

  • read_file
    根据工作区内的相对路径读取文件的文本或二进制安全片段。支持指定返回的最大字节数。

  • extract_bibliography
    解析BibTeX文件并返回结构化的条目元数据,包括下载链接(DOI、arXiv)。帮助代理或脚本程序化地处理引用数据。

  • download_bibliography
    下载在resources/cited_papers/index.json中列出的文献条目的PDF。可以强制重新下载并限制新下载的数量。

  • compile_latex
    在主文档上运行LaTeX编译(通过latexmk执行pdflatex/xelatex),返回成功信息及日志片段。支持指定入口.tex文件和编译次数。

  • read_pdf
    使用pypdf从PDF文件路径中提取文本和元数据,带有页数和字符限制。存储用于下游使用的JSON工件。

  • read_pdf_from_citation
    通过resources/cited_papers/index.json解析引用键到其PDF并提取文本(如需自动下载)。返回提取的文本、元数据和引用键。


TypeScript 桥接工具

  • summarize_text
    对提供的LaTeX或文本内容生成简洁的自然语言摘要。接受摘要的最大句子数。

  • suggest_bib_key
    基于作者、年份和标题元数据建议稳定的BibTeX键。有助于生成一致的引用键。


安装(使用uv

从仓库根目录:

cd latex-mcp-server
uv tool install -e .

或者

uv tool install -e ./latex-mcp-server

这将使控制台脚本latex-mcp-server在您的PATH中可用。

如果您希望一次性运行而不作为工具安装:

uv run latex-mcp-server

MCP配置片段

添加到您的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这样的占位符会导致运行时错误:

工作空间不存在: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"]
}

故障排除

现象原因解决方法
解决工具依赖时未找到解决方案工具名称latex-mcp-server未发布到PyPI,uv尝试将其解析为依赖项(通常发生在您使用了requires字段或未本地安装的情况下)从仓库根目录运行uv tool install -e ./latex-mcp-server,然后更新您的mcp.json以直接调用已安装的脚本
工作空间不存在:C:\\Users\\...WORKSPACE_FOLDER_PATH...占位符路径未更改替换为真实的绝对路径
工具结果中的TypeScript运行时不可用未安装Node.js(仅TS桥接工具需要)安装Node.js 18+ 或者如果您不需要TS工具则忽略

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

TypeScript 桥接

TypeScript源代码位于ts_functions/src。它们编译后的JavaScript输出被提供到Python包下的latex_mcp_server/ts_dist,因此用户无需npmtsc即可运行服务器。要修改或添加TS函数:

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.py中的register_python_tools内注册它们。

引用感知的PDF阅读

当用户询问关于某篇论文(例如“解释一下\cite{smith2023model}与……的不同之处”)时,代理应:

  1. 从请求中解析引用键。
  2. 调用每个键的read_pdf_from_citation(获取/下载PDF并提取文本片段+元数据)。
  3. 将答案基于提取的文本(可选地调用summarize_text以获得简洁摘要)。
  4. 表明是否提取被截断(检查truncated标志)并避免超出可用页数/字符数的过度声明。

read_pdf_from_citation工具返回与read_pdf相同的模式加上citation_key,以便多引用响应可以正确归因片段。

自动更新index.json(选择的方法:VS Code任务)

此项目配置为在每次LaTeX构建前使用VS Code任务刷新resources/cited_papers/index.json(采用建议方法中的第3种)。

添加文件:.vscode/tasks.json,包含三个任务:

  • update-index:运行一个简短的Python一行命令,调用extract_bibliographysrc/references.bib进行操作。
  • latex-build:对main.tex调用latexmk -pdf
  • build+index:依次运行update-index然后latex-build

如何使用

  1. 在VS Code中,打开命令面板并运行“Tasks: 运行任务”。
  2. 选择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(可选)
{
  "latex-workshop.latex.recipe.default": "build+index"
}

为什么选择这种方法

  • 没有后台监视进程。
  • 确定性:索引刷新明确绑定到构建命令。
  • 最小开销(BibTeX解析相对于PDF编译速度快得多)。

如果您以后需要替代方法(例如Makefile或按需新鲜度检查),仍然可以叠加它;任务方法是非侵入性的。

添加新的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,请相应调整导入。

许可证

MIT