Pressa - LaTeX to PDF について
Pressa は、LaTeX 文書を PDF に変換し、文書テンプレートを扱う MCP サーバーです。AI アシスタントで PDF を作成する用途向けで、基本的なコンパイルと公開テンプレートの機能は API キーなしで利用できます。
主な機能
- 01LaTeX から PDF を生成
- 02公開テンプレートの閲覧とレンダリング
- 03アカウントテンプレートの保存と管理
- 04修正案付きの構造化エラーを返却
活用シーン
- 01請求書、レポート、履歴書の PDF 作成
- 02公開テンプレートへのデータ入力
- 03LaTeX エラーの診断と再試行
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 | はい | `\documentclass` と `\begin{document}...\end{document}` を含む完全な LaTeX ソース。 |
| 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 ツールと公開テンプレートギャラリーを提供します。これらは認証情報なしで利用でき、1 日あたり PDF を 3 件まで正常に生成できます。失敗した試行はこの上限に含まれないため、アシスタントは LaTeX を無料で何度でも調整できます。
他の機能を利用するには、キーを追加します。
{
"mcpServers": {
"pressa": {
"command": "npx",
"args": ["-y", "@pressa/mcp"],
"env": {
"PRESSA_API_KEY": "pressa_your_key_here"
}
}
}
}
pressa.dev で無料のキーを取得できます。所要時間は約 30 秒で、クレジットカードは不要です。キーを追加すると、月あたりのコンパイル上限が 50 回に引き上げられ、テンプレート、アセット、レンダリング用のツールが登録されます。
ホスト型サーバー(インストール不要)
同じツールは https://api.pressa.dev/mcp でも Streamable HTTP 経由で提供されています。そのため、リモート 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 | string | はい | LaTeX ソースコード全体。\documentclass、\begin{document}、\input{}、または \include{} を含める必要があります。プレーンテキスト、Markdown、または生のメモは not_latex_source(422)で拒否されます。AI エージェントはユーザーに作成を求めるのではなく、自ら LaTeX を生成する必要があります。 |
compiler | string | いいえ | "pdflatex"(デフォルト)、"xelatex"、または "lualatex"(Pro および Business プランのみ) |
各プランには、文書あたりのページ数、LaTeX ソースのサイズ、PDF 出力サイズ、コンパイルのタイムアウトに関する制限があります。コンパイルがプランのページ上限を超えても、その文書は月間利用枠に加算されず、MCP の応答には制限とアップグレード用 URL が含まれます。LaTeX 以外の入力は、LLM がユーザーの介入なしに自動修正できるよう、構造化された 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:スラッグ):フィールド(JSON スキーマ)、サンプルデータ、入力手順を取得します。render_public_template(template:スラッグ、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 テンプレートを保存または更新します。有料プランのみ利用できます。アップサート方式です。同じ名前で 2 回目に呼び出すと、最初の内容が上書きされます。
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
name | string | はい | テンプレート名(最大 100 文字)。ユーザーごとに一意です。 |
latex_content | string | 新しいテンプレートの場合 | テンプレート本文の LaTeX ソース全体。placeholder_engine: "liquid" を指定して保存済みソースを変換する場合は省略できます。 |
description | string | いいえ | 人が読める短い概要(最大 500 文字)。list_templates に表示されます。 |
instructions | string | いいえ | エージェント向けの手順書(プレーンテキストの Markdown、最大 50000 文字)。テンプレートの入力方法(既定値、ワークフローのルール、例外ケース、条件分岐など)を説明します。省略可能ですが、動的な部分があるテンプレートでは推奨されます。下記の注記を参照してください。 |
placeholder_engine | string | いいえ | "liquid":ソースに Liquid プレースホルダー({{ amount }})が含まれ、render によって入力されます。既存の生の LaTeX テンプレートに指定すると、その場で変換されます(ID、名前、手順は変わりません)。"none":波括弧がプレースホルダーのように見えるだけの生の LaTeX です。省略すると、テンプレートの現在の種類が維持されます。 |
description と instructions の違い: description は UI に表示される 1 行の概要です(「Toptal 標準月次請求書」など)。instructions は、テンプレートにデータを入力する際に AI エージェントが LaTeX と併せて読む、より詳しい手順書です(「ユーザーには合計金額のみを尋ねる。日付は本日の日付。請求書番号の形式は YYYYMMDD-N とし、N は暦年内の連番。EU の顧客には VAT の行を追加する」など)。これらは別々のフィールドです。
生の 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 または名前を指定して単一のテンプレートを取得します。1 回のリクエストで latex_content 全体と(存在する場合は)instructions が返されるため、エージェントはレイアウトと手順書をまとめて取得できます。
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
id_or_name | string | はい | 数値 ID または URL で使用できるテンプレート名。 |
delete_template
ID または名前でテンプレートを削除します。
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
id_or_name | string | はい | 数値の ID、または URL で使用可能なテンプレート名です。 |
開発
npm install
npm run build
npm start
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。