MCP LaTeX服务器
用于LaTeX文件创建、编辑、验证和编译的模型上下文协议(MCP)服务器。建于 FastMCP Pydantic用于类型安全的结构化输出。
特性
- 创建 参数或捆绑模板中的LaTeX文档(文章、beamer、报告)
- 编辑 具有替换、插入、追加和预置操作的文件
- 阅读 和 列表
.tex安全基本目录中的文件 - 验证 语法——大括号、环境、引用、必需声明
- 编译 PDF格式
pdflatex,xelatex,或lualatex - 资源 --通过浏览和检索捆绑的模板
latex://尤里斯
先决条件
- Python 3.11.9+
- LaTeX分布 (供汇编):
- macOS: Mactex (brew install --cask mactex) - Linux: sudo apt install texlive-full (Debian/Ubuntu)或 sudo dnf install texlive-scheme-full (Fedora)
安装
使用紫外线(推荐)
git clone https://github.com/RobertoDure/mcp-latex-server
cd mcp-latex-server
uv pip install -e .使用pip
git clone
cd mcp-latex-server
python -m venv .venv
# Windows
.venv\Scripts\activate
# macOS/Linux
source .venv/bin/activate
pip install -e .快速设置(Windows)
python quick_setup.py这将检查Python版本,安装依赖项,验证服务器导入是否正确,并可选择配置Claude Desktop。
配置
服务器使用单个环境变量:
| 变量 | 描述 | 默认值 |
|---|---|---|
LATEX_SERVER_BASE_PATH | 所有文件操作的根目录 | . (当前目录) |
传递给工具的所有文件路径都是相对于此基本目录解析的。它外部的访问被拒绝。
MCP客户端配置
克劳德桌面版
添加到您的 claude_desktop_config.json:
- 视窗:
%APPDATA%\Claude\claude_desktop_config.json - macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"latex-server": {
"command": "uv",
"args": [
"--directory",
"/path/to/mcp-latex-server",
"run",
"latex_server.py"
],
"env": {
"LATEX_SERVER_BASE_PATH": "/path/to/your/latex/files"
}
}
}
}VS代码(GitHub副本)
添加 .vscode/mcp.json 在您的工作空间中:
{
"servers": {
"latex-server": {
"command": "uv",
"args": [
"--directory",
"/path/to/mcp-latex-server",
"run",
"latex_server.py"
],
"env": {
"LATEX_SERVER_BASE_PATH": "${workspaceFolder}"
}
}
}
}工具
create_latex_file
根据参数创建新的LaTeX文档。
| 参数 | 类型 | 默认值 | 说明 | |||||
|---|---|---|---|---|---|---|---|---|
file_path | str | *必需的* | 新的道路 .tex 文件 | |||||
document_type | `article\ | report\ | book\ | letter\ | beamer\ | minimal` | article | 文档类 |
title | str | "" | 文档标题 | |||||
author | str | "" | 文档作者 | |||||
date | str | \today | 文件日期 | |||||
content | str | "" | 正文内容 | |||||
packages | list[str] | [] | 额外的LaTeX包 | |||||
geometry | str | "" | 几何设置(例如。 margin=1in) |
create_from_template
从捆绑的模板创建文档。
| 参数 | 类型 | 默认值 | 说明 | ||
|---|---|---|---|---|---|
file_path | str | *必需的* | 新的道路 .tex 文件 | ||
template | `article\ | beamer\ | report` | article | 模板名称 |
edit_latex_file
编辑现有的LaTeX文件。
| 参数 | 类型 | 默认值 | 说明 | ||||
|---|---|---|---|---|---|---|---|
file_path | str | *必需的* | 文件路径 | ||||
operation | `replace\ | insert_before\ | insert_after\ | append\ | prepend` | *必需的* | 编辑操作 |
new_text | str | *必需的* | 要插入或替换的文本 | ||||
search_text | `str\ | null` | null | 要查找的文本(替换/插入时需要) | |||
line_number | `int\ | null` | null | 从1开始的行号(替代 search_text) |
read_latex_file
读取并返回 .tex 文件。
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
file_path | str | *必需的* | 文件路径 |
list_latex_files
列出所有 .tex 目录中的文件。
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
directory_path | str | . | 要搜索的目录 |
recursive | bool | false | 搜索子目录 |
validate_latex
检查LaTeX语法:必需声明、平衡大括号、环境匹配、未定义引用。
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
file_path | str | *必需的* | 文件路径 |
get_latex_structure
提取文档结构:类、标题、作者、包和节层次结构。
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
file_path | str | *必需的* | 文件路径 |
compile_latex
编译a .tex 文件转换为PDF(运行引擎两次以获取参考/TOC)。
| 参数 | 类型 | 默认值 | 说明 | ||
|---|---|---|---|---|---|
file_path | str | *必需的* | 文件路径 | ||
engine | `pdflatex\ | xelatex\ | lualatex` | pdflatex | LaTeX发动机 |
资源
| URI | 描述 |
|---|---|
latex://templates | 列出可用的捆绑模板 |
latex://template/{name} | 获取特定模板的内容 |
测试
使用MCP检查员进行测试:
uv run mcp dev latex_server.py或者运行附带的测试套件:
python test_server.py故障排除
服务器无法启动 --验证Python 3.10+(python --version)而且 mcp 已安装(pip list | grep mcp).
编译失败 --确保LaTeX发行版在您的PATH上(pdflatex --version).如果缺少,请安装MiKTeX或TeX Live。
“拒绝访问”错误 --请求的文件路径在外部解析 LATEX_SERVER_BASE_PATH。使用相对路径或调整env变量。
克劳德无法连接 --仔细检查MCP配置中的文件路径,重新启动Claude Desktop,并用验证 uv run mcp dev latex_server.py.
许可证
麻省理工学院
