mcpField
P
Pressa - LaTeX to PDF

Pressa - LaTeX to PDF

远程服务
pressa.dev生产力0今天更新

关于 Pressa - LaTeX to PDF

Pressa 的 MCP 服务可将 LaTeX 文档编译为 PDF,并提供公开模板及账户模板管理功能。适合需要通过 AI 助手生成文档 PDF 的用户;匿名模式无需 API 密钥即可使用基础工具。

主要功能

  1. 01将 LaTeX 编译为 PDF
  2. 02浏览并渲染公开模板
  3. 03保存和管理账户模板
  4. 04返回结构化编译错误与修复建议

适用场景

  1. 01生成发票、报告或简历 PDF
  2. 02根据公开模板填充数据并生成 PDF
  3. 03排查 LaTeX 编译错误后重试

MCP 相关

向 MCP 客户端提供 LaTeX 编译和模板工具;匿名模式开放编译及公开模板工具,配置 API 密钥后可使用更多账户功能。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://api.pressa.dev/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

安装包
npm@pressa/mcp0.11.4

工具

4
参数类型必填说明
latexstring是完整的 LaTeX 源码,包括 `\documentclass` 和 `\begin{document}...\end{document}`。
compilerenum否默认为 pdflatex。匿名调用者只能使用 pdflatex。pdflatex | xelatex | lualatex

详细介绍

@pressa/mcp

Pressa 的 MCP(Model Context Protocol)服务——输入 LaTeX,输出出版级 PDF。此服务让 AI 助手通过标准化接口编译文档。

启动时无需 API 密钥。 添加服务,提出生成 PDF 的请求,即可获得 PDF。之后添加密钥即可提高限额。

设置

将以下配置添加到 MCP 客户端配置中(例如 Claude Desktop、Cursor):

{
  "mcpServers": {
    "pressa": {
      "command": "npx",
      "args": ["-y", "@pressa/mcp"]
    }
  }
}

这就是全部配置。服务会以匿名模式启动,并提供 compile 工具和公开模板库,无需凭据即可使用:每天可成功生成 3 份 PDF,失败的尝试不计入限额,因此助手可以免费反复调整 LaTeX。

要解锁其余功能,请添加密钥:

{
  "mcpServers": {
    "pressa": {
      "command": "npx",
      "args": ["-y", "@pressa/mcp"],
      "env": {
        "PRESSA_API_KEY": "pressa_your_key_here"
      }
    }
  }
}

在 pressa.dev 获取免费密钥。只需约 30 秒,无需信用卡。此密钥会将限额提高到每月 50 次编译,并启用模板、资源和渲染工具。

托管服务(无需安装)

相同的工具也通过 Streamable HTTP 在 https://api.pressa.dev/mcp 上提供,因此支持远程 MCP 服务的客户端无需 Node.js 或本地进程:

claude mcp add --transport http pressa https://api.pressa.dev/mcp

无需密钥时,可使用 compile 和公开模板库 (list_public_templates、get_public_template、render_public_template)。添加 Authorization: Bearer <key> 标头后,也会启用模板、资源和渲染工具。

环境变量

变量必需默认值描述
PRESSA_API_KEY否-Pressa API 密钥(以 pressa_ 开头)。未设置时,服务以匿名模式运行,仅提供 compile 和公开模板工具。
PRESSA_API_URL否https://api.pressa.devAPI 基础 URL

匿名模式

未设置 PRESSA_API_KEY 时,服务仍会启动,不会拒绝运行,并且只会注册无需账户即可使用的工具:compile、 list_public_templates、get_public_template 和 render_public_template。 需要账户的工具不会注册,因为无法成功执行的工具还不如不存在。

匿名模式限额:仅支持 pdflatex,最多 3 页,源文件不超过 30 KB,不支持图片资源,PDF 链接 1 小时后过期。

错误处理

编译失败时会返回结构化诊断信息,而非原始 TeX 日志:包括错误类别、出错命令和具体的修复建议(通常是缺少 \usepackage)。助手应自行应用修复并重试,而不是向用户展示编译器日志。

工具

compile

将 LaTeX 源代码编译为 PDF。

输入:

参数类型必需描述
latex字符串是完整的 LaTeX 源代码。必须包含 \documentclass、\begin{document}、\input{} 或 \include{}。纯文本、Markdown 或原始笔记会被拒绝,并返回 not_latex_source(422)。AI Agent 应自行生成 LaTeX,而不是让用户代劳。
compiler字符串否"pdflatex"(默认)、"xelatex" 或 "lualatex"(仅限 Pro 和 Business 套餐)

每种套餐都对每份文档的页数、LaTeX 源文件大小、PDF 输出大小和编译超时设有限制。如果编译超出套餐的页数限制,该文档不会计入月度配额,MCP 响应中会包含限额和升级 URL。非 LaTeX 输入会被拒绝,并返回结构化的 requirements 列表和 example_template,以便大模型在无需用户介入的情况下自行修正。

输出(成功):

{
  "job_id": "ffc2bd62-3b67-45d6-be14-b529c4b9489f",
  "pdf_url": "https://api.pressa.dev/api/v1/pdfs/ffc2bd62...?sig=xxx&exp=xxx",
  "expires_at": "2026-04-09T20:44:55Z",
  "pages": 1,
  "compilation_time_ms": 359,
  "usage": {
    "plan": "free",
    "compilations_this_month": 9,
    "monthly_limit": 50
  }
}

输出(错误): 编译日志和错误行号。

list_public_templates、get_public_template、render_public_template

Pressa 的公开文档模板(pressa.dev/templates):发票、采购订单、装箱单、送货单、收据、报告、证书、简历和求职信。无需密钥。

  • list_public_templates:列出每个模板,并提供摘要、预览图片 URL 和配色。同一文档类型的设计(document,例如 5 种简历设计)使用相同的数据。
  • get_public_template(template:slug):获取字段(JSON 架构)、示例数据和填写说明。
  • render_public_template(template:slug,data:结构与示例一致的对象,可选的 color):填充模板并返回 pdf_url。缺失或类型错误的字段会以待修正列表的形式返回,不收费。

每个模板还提供供助手使用的纯文本说明,位于 https://pressa.dev/templates/<slug>/agent.md。

usage

获取当前 API 使用量统计信息。

输入: 无。

输出:

{
  "user": {
    "email": "[email protected]",
    "username": "user",
    "plan": "free"
  },
  "usage": {
    "compilations_this_month": 9,
    "monthly_limit": 50,
    "remaining": 41,
    "resets_at": "2026-04-30T23:59:59Z"
  },
  "api_key": {
    "prefix": "pressa_a",
    "name": "my-key",
    "total_requests": 15,
    "last_used_at": "2026-04-08T20:44:55Z"
  }
}
save_template

按名称保存或更新 LaTeX 模板。仅限付费方案。采用插入或更新操作:第二次使用相同名称调用时,会覆盖第一个模板。

参数类型必填说明
namestring是模板名称(最多 100 个字符)。每位用户的名称必须唯一。
latex_contentstring新建模板时必填模板正文的完整 LaTeX 源代码。使用 placeholder_engine: "liquid" 转换已保存的源代码时,可省略此项。
descriptionstring否简短易读的摘要(最多 500 个字符)。显示在 list_templates 中。
instructionsstring否Agent 操作指南(散文式 Markdown,最多 50000 个字符)。说明如何填写模板,包括默认值、工作流规则、边缘情况和条件逻辑。可选,但建议为包含动态部分的模板提供。请参阅下方说明。
placeholder_enginestring否"liquid":源代码包含由 render 填充的 Liquid 占位符({{ amount }});对于现有的原始 LaTeX 模板,此选项会将其原位转换(ID、名称和说明不变)。"none":原始 LaTeX,其花括号只是看起来像占位符。省略则保留模板当前类型。

description 与 instructions: description 是界面中显示的一行摘要(“Toptal 标准月度发票”)。instructions 是 AI Agent 填充模板时会与 LaTeX 一起读取的详细操作指南(“只询问用户总金额;日期为今天;发票编号格式为 YYYYMMDD-N,其中 N 是日历年内的顺序计数;欧盟客户需添加增值税行”)。二者是不同的字段。

原始 LaTeX 与占位符模板: 原始 LaTeX 模板会按保存时的内容原样编译。占位符模板则通过 render 使用 JSON 数据填充,因此版式不会改变。未指定 placeholder_engine 时,包含 Liquid 占位符的源代码会因 liquid_placeholders_in_v1_template 错误而被拒绝,因为原始 LaTeX 会在 PDF 中逐字输出花括号。如果保存占位符模板时返回 liquid_syntax_error,请将 Liquid 误读的 LaTeX 字面内容(通常是花括号后紧跟的注释,如 \foo{%)用 {% raw %}...{% endraw %} 括起来。

list_templates

列出用户已保存的模板。为缩小响应内容,不包含 latex_content 或 instructions。

输入: 无。

返回数组中的每个项目都包含 id、name、description、updated_at、latex_size_bytes 和 has_instructions(布尔值)。使用 has_instructions 标记判断后续调用 get_template 是否会返回有用的操作指南。

get_template

通过 ID 或名称获取单个模板。一次往返即可返回完整的 latex_content 和 instructions(如有),让 Agent 同时获取版式和操作指南。

参数类型必填说明
id_or_namestring是数字 ID 或 URL 安全的模板名称。
delete_template

通过 ID 或名称删除模板。

参数类型必填描述
id_or_name字符串是数字 ID 或 URL 安全的模板名称。

开发

npm install
npm run build
npm start

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。