latex-mcp-server 是一个 MCP(模型上下文协议)服务器,旨在增强 VSCode + LaTeX Workshop 的写作工作流。它目前包含一组 MCP 工具,并支持通过 Python 和 TypeScript 轻松添加新工具。其中 Python 进程作为 MCP 服务器,部分选定工具通过桥接委托给一个小型 Node/TypeScript 模块。
主要能力
- list_tex_files:列出 LaTeX 工作区下所有 .tex 文件(相对路径),供 LLM 或智能体发现可用的章节和小节。
- read_file:根据工作区内的相对路径读取文本或二进制安全切片,支持指定返回的最大字节数。
- extract_bibliography:解析 BibTeX 文件,返回结构化条目元数据,包括下载 URL(DOI、arXiv),便于以编程方式处理引用数据。
- download_bibliography:下载 resources/cited_papers/index.json 中列出的参考文献 PDF,可强制重新下载并限制新下载数量。
- compile_latex:通过 latexmk 运行 LaTeX 编译(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):在仓库根目录运行安装命令后,控制台脚本 latex-mcp-server 将出现在 PATH 中。若希望一次性运行而不作为工具安装,也可直接调用。
MCP 配置片段:添加到 mcp.json(VS Code / Claude Desktop 用户设置)。若省略 --workspace,服务器将推断当前工作目录。Windows 示例:若 paper_1 根目录位于 C:\Users\User\projects\paper_1,可使用正斜杠以避免转义反斜杠。务必替换占位符 ABSOLUTE_PATH_TO_YOUR_PAPER_1_ROOT。
替代方案:安装一次后直接调用,可简化配置。
故障排除:若修改 TypeScript 源码,重启服务器前需重新构建并重新打包(npm run build)。
TypeScript 桥接:TypeScript 源码位于 ts_functions/src,编译后的 JavaScript 输出被内置到 Python 包 latex_mcp_server/ts_dist 下,因此用户无需安装 npm 或 tsc 即可运行服务器。要修改或添加 TS 函数,需创建新文件、在导出映射中添加、重新构建并同步 dist 输出,然后在 server.py 中使用 bridge.register_ts_tool 注册 Python 包装器。
添加新 Python 工具:在 latex_mcp_server/functions/latex_ops.py(或新模块)中添加函数,并在 server.py 的 register_python_tools 中注册。
引用感知的 PDF 阅读:当用户询问某篇论文(例如“解释 \cite{smith2023model} 与……有何不同”)时,智能体应解析引用键、对每个键调用 read_pdf_from_citation(获取/下载 PDF 并提取文本片段和元数据)、基于提取文本作答(可选调用 summarize_text 生成简洁摘要),并注明提取是否被截断(检查 truncated 标志),避免超出可用页面/字符范围的过度声明。read_pdf_from_citation 返回与 read_pdf 相同的模式,并附带 citation_key,便于多引用响应正确归属片段。
自动更新 index.json(选择方法:VS Code 任务):项目配置为在每次 LaTeX 构建前使用 VS Code 任务刷新 resources/cited_papers/index.json。已添加 .vscode/tasks.json,包含三个任务:update-index(运行短 Python 单行命令调用 extract_bibliography 处理 src/references.bib)、latex-build(对 main.tex 调用 latexmk -pdf)、build+index(依次运行 update-index 和 latex-build)。在 VS Code 中打开命令面板运行“Tasks: Run Task”,选择 build+index(建议在提示时将其设为默认构建任务)。BibTeX 索引将先重新生成,然后进行 LaTeX 编译。若 LaTeX Workshop 无法导入包(ModuleNotFoundError),提供了辅助脚本 latex-mcp-server/update_index.py。工作区设置已更新为调用该脚本,因此本地可编辑安装并非严格必需。
设为默认构建:首次运行后 VS Code 提示时,接受将 build+index 设为默认。也可添加到工作区设置。
为什么采用此方法:无后台监视进程;确定性:索引刷新明确绑定到构建命令;开销极小(BibTeX 解析相对 PDF 编译很快)。若后续需要替代方案(如 Makefile 或按需新鲜度检查),仍可叠加,任务方法是非侵入式的。
适用场景
- 配合 Copilot、Claude 或 Cursor 等工具,读取引用论文以验证或补充论点。
- 访问 Python 脚本,根据实验数据生成新图表或 LaTeX 表格,并自主放入 LaTeX。
- 验证每一步并确保 PDF 编译成功。
- 功能上可自主将提纲和实验结果转化为论文(但可能看起来像套路化内容)。
限制
- 该服务器遵循 MCP JSON-RPC 消息模式;若 mcp Python 包更新 API,需相应调整导入。
- 自动转化论文的质量可能不尽如人意,原文说明“may looks like slop though”。
- 未提供其他平台支持、收费模式、价格等具体信息。