关于 Pressa - LaTeX to PDF
Pressa 的 MCP 服务可将 LaTeX 文档编译为 PDF,并提供公开模板及账户模板管理功能。适合需要通过 AI 助手生成文档 PDF 的用户;匿名模式无需 API 密钥即可使用基础工具。
主要功能
- 01将 LaTeX 编译为 PDF
- 02浏览并渲染公开模板
- 03保存和管理账户模板
- 04返回结构化编译错误与修复建议
适用场景
- 01生成发票、报告或简历 PDF
- 02根据公开模板填充数据并生成 PDF
- 03排查 LaTeX 编译错误后重试
MCP 相关
向 MCP 客户端提供 LaTeX 编译和模板工具;匿名模式开放编译及公开模板工具,配置 API 密钥后可使用更多账户功能。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://api.pressa.dev/mcpclaude mcp add --transport http pressa-dev-pressa https://api.pressa.dev/mcp{"mcpServers":{"pressa-dev-pressa":{"type":"http","url":"https://api.pressa.dev/mcp"}}}在 Cursor 中打开{"servers":{"pressa-dev-pressa":{"type":"http","url":"https://api.pressa.dev/mcp"}}}在 VS Code 中打开{"mcpServers":{"pressa-dev-pressa":{"type":"http","url":"https://api.pressa.dev/mcp"}}}{"mcpServers":{"pressa-dev-pressa":{"serverUrl":"https://api.pressa.dev/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
4| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| latex | string | 是 | 完整的 LaTeX 源码,包括 `\documentclass` 和 `\begin{document}...\end{document}`。 |
| compiler | enum | 否 | 默认为 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.dev | API 基础 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 模板。仅限付费方案。采用插入或更新操作:第二次使用相同名称调用时,会覆盖第一个模板。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
name | string | 是 | 模板名称(最多 100 个字符)。每位用户的名称必须唯一。 |
latex_content | string | 新建模板时必填 | 模板正文的完整 LaTeX 源代码。使用 placeholder_engine: "liquid" 转换已保存的源代码时,可省略此项。 |
description | string | 否 | 简短易读的摘要(最多 500 个字符)。显示在 list_templates 中。 |
instructions | string | 否 | Agent 操作指南(散文式 Markdown,最多 50000 个字符)。说明如何填写模板,包括默认值、工作流规则、边缘情况和条件逻辑。可选,但建议为包含动态部分的模板提供。请参阅下方说明。 |
placeholder_engine | string | 否 | "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_name | string | 是 | 数字 ID 或 URL 安全的模板名称。 |
delete_template
通过 ID 或名称删除模板。
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
id_or_name | 字符串 | 是 | 数字 ID 或 URL 安全的模板名称。 |
开发
npm install
npm run build
npm start
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。