一个可以增强你的VSCode + LaTex Workshop写作流程的MCP(模型上下文协议)服务器
目前包含MCP工具,并且可以轻松添加Python和TypeScript的新工具。Python进程是MCP服务器;选定的工具通过桥梁委托给一个小的Node/TypeScript模块。
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并提取文本(如需自动下载)。返回提取的文本、元数据和引用键。
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.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(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源代码位于ts_functions/src。它们编译后的JavaScript输出被提供到Python包下的latex_mcp_server/ts_dist,因此用户无需npm或tsc即可运行服务器。要修改或添加TS函数:
cd latex-mcp-server/ts_functions
npm install
npm run build
然后复制(或允许提供的辅助脚本同步)dist/的内容到latex_mcp_server/ts_dist/。
在latex_mcp_server/functions/latex_ops.py(或新模块)中添加函数,并在server.py中的register_python_tools内注册它们。
当用户询问关于某篇论文(例如“解释一下\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(采用建议方法中的第3种)。
添加文件:.vscode/tasks.json,包含三个任务:
update-index:运行一个简短的Python一行命令,调用extract_bibliography对src/references.bib进行操作。latex-build:对main.tex调用latexmk -pdf。build+index:依次运行update-index然后latex-build。build+index(推荐在提示时将其标记为默认构建任务)。如果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"
}
如果您以后需要替代方法(例如Makefile或按需新鲜度检查),仍然可以叠加它;任务方法是非侵入性的。
ts_functions/src/functions/中创建一个新的文件,导出一个函数。ts_functions/src/index.ts中添加到导出映射。server.py中使用bridge.register_ts_tool注册一个Python包装器。此服务器遵循MCP JSON-RPC消息模式。如果mcp Python包更新了API,请相应调整导入。
MIT