TexMCP(仓库名 tex-mcp)是一个基于 FastMCP 的小型微服务,用于把 LaTeX 渲染成 PDF。服务器以 MCP 工具的形式对外暴露能力,可以渲染原始 LaTeX 或模板,并产出工件(一个 .tex 文件,以及在可编译时生成 .pdf),输出位于 src/artifacts/ 目录下。该项目面向本地运行设计,同时可被 Claude Desktop 通过 Model Context Protocol 加载,默认入口文件为 run_server.py。
主要能力
- 使用 pdflatex 将原始 LaTeX 渲染为 .tex,并按需生成 .pdf
- 渲染 Jinja2 模板并编译为 PDF
- 可作为 Claude Desktop 及其他支持 MCP 的客户端的 MCP 服务器运行
该 MCP 服务器暴露的工具(共 5 个)
- render_latex_document:写入 LaTeX,并按需编译为 PDF
- render_template_document:渲染 Jinja2 模板并按需编译
- list_templates:列出可用模板
- list_artifacts:列出 src/artifacts/ 中产生的文件
- get_template:返回模板文件的原始内容,便于客户端在渲染前查看
环境要求
- Python 3.10+(项目使用较新的 pydantic/fastapi 技术栈)
- LaTeX 工具链(pdflatex)用于 PDF 编译,此项为可选;若缺失,服务器仅返回 .tex 文件
本地开发入门
- 创建项目虚拟环境并安装依赖
- 可从 GitHub 克隆仓库后,按下方步骤创建虚拟环境并安装
- 直接运行服务器(stdio 模式,Claude Desktop 使用):在 stdio 模式下,服务器通过 stdin/stdout 使用 MCP 通信(这正是 Claude Desktop 启动进程时所期望的方式)。如果偏好 HTTP,可编辑 run_server.py 并将 transport 切换为 http(参见注释代码),再用 uv run 或 uvicorn 运行
渲染输出位于 src/artifacts/。每次任务应能看到一个 .tex 文件,以及在 pdflatex 可用时生成对应的 .pdf。
模板
- 示例模板位于 src/mcp_server/templates/,共包含 15 个模板,例如 sample_invoice.tex.j2、sample_letter.tex.j2、sample_resume.tex.j2。可用 list_templates 以编程方式获取完整列表。模板刻意保持简单、便于自定义;向该目录添加自己的 .tex.j2 文件即可扩展目录
- 内置模板(位于 src/mcp_server/templates/):default.tex.j2(基础示例模板)、sample_invoice.tex.j2、sample_invoice2.tex.j2、sample_letter.tex.j2、sample_report.tex.j2、sample_resume.tex.j2、sample_presentation.tex.j2、sample_certificate.tex.j2、sample_coverletter.tex.j2、sample_poster.tex.j2、sample_thesis.tex.j2、sample_receipt.tex.j2、sample_recipe.tex.j2、sample_poem.tex.j2、sample_cv.tex.j2
与 Claude Desktop 集成(快速)
- 推荐使用 fastmcp CLI 安装器,它会设置从项目目录运行并使用项目虚拟环境。在项目根目录(已创建虚拟环境并安装依赖)执行该安装器,可确保 uv 在项目目录内运行并使用项目环境。安装器运行后,请完全退出并重启 Claude Desktop
- 手动配置 Claude Desktop:若自行编辑 Claude 配置(Windows:%APPDATA%\Claude\claude_desktop_config.json),添加一个指向项目 Python 可执行文件的服务器条目。示例(路径按需替换)
- 不要把 Claude 指向虚拟环境的 activate 脚本——它是 shell 辅助脚本而非可执行文件。应把 Claude 指向虚拟环境中的 python.exe(若安装了 uv,也可指向虚拟环境中的 uv.exe)
- 任何配置更改后,请完全重启 Claude Desktop
Docker
- 项目包含 Dockerfile,可在容器中运行 MCP 服务器
- 构建(不含 LaTeX)
- 构建(含 LaTeX,镜像更大)
- 运行(HTTP 模式暴露在 8000 端口):容器默认设置 MCP_TRANSPORT=http,在容器内服务器绑定 0.0.0.0:8000
- 若想在容器中以 stdio 模式运行服务器,可覆盖该环境变量
工件持久化
- 若要在宿主机持久化渲染产物,可绑定挂载 src/artifacts 目录
编程调用
- 可在智能体代码中使用 Model Context Protocol / FastMCP 客户端库(如 OpenAI Responses API)以编程方式调用工具。例如,在 Python 中可使用 mcp 或 fastmcp 客户端(参见库文档)连接到 http://localhost:8000/mcp,并以参数调用 render_latex_document
安全提示
- 若将 HTTP 端点暴露到 localhost 之外,请做好安全防护(TLS、防火墙或认证)——渲染任意 LaTeX 可能带来风险(模板中的 shell 命令、大量资源消耗)
贡献与许可
- 贡献方式见 CONTRIBUTING.md,其中包含开发流程、提交风格以及如何提交 issue 和 pull request
- 本项目基于 MIT License 发布,详见 LICENSE
说明:关于具体安装命令、收费与价格、使用步骤的完整细节,官方文本中未完整提供,暂未提供。