
Security News
Insecure Agents Podcast: How to Keep AI Agents From Bypassing Security Controls
Socket CTO Ahmad Nassri discusses how to keep AI agents from bypassing package blocks, limit credential access, and monitor their actions.
@pressa/mcp
Advanced tools
MCP server for Pressa - LaTeX to PDF compilation service with template instructions
MCP (Model Context Protocol) server for Pressa - a LaTeX-to-PDF compilation service. This server lets AI assistants compile LaTeX documents and check API usage through a standardized interface.
Add this to your MCP client configuration (e.g. Claude Desktop, Cursor):
{
"mcpServers": {
"pressa": {
"command": "npx",
"args": ["-y", "@pressa/mcp"],
"env": {
"PRESSA_API_KEY": "pressa_your_key_here"
}
}
}
}
| Variable | Required | Default | Description |
|---|---|---|---|
PRESSA_API_KEY | Yes | - | Your Pressa API key (starts with pressa_) |
PRESSA_API_URL | No | https://api.pressa.dev | API base URL |
compileCompile LaTeX source code into a PDF.
Input:
| Parameter | Type | Required | Description |
|---|---|---|---|
latex | string | Yes | Complete LaTeX source code. Must contain \documentclass, \begin{document}, \input{}, or \include{}. Plain text, markdown, or raw notes are rejected with not_latex_source (422). The AI agent should generate LaTeX itself, not bounce back to the user. |
compiler | string | No | "pdflatex" (default), "xelatex", or "lualatex" (Pro and Business plans only) |
Each plan has limits on pages per document, LaTeX source size, PDF output size, and compile timeout. If a compile exceeds your plan's page limit, the document does not count against your monthly quota and the MCP response includes the limit and an upgrade URL. Non-LaTeX input is rejected with a structured requirements list and an example_template so the LLM can self-correct without user intervention.
Output (success):
{
"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
}
}
Output (error): Compilation log and error line number.
usageGet current API usage statistics.
Input: None.
Output:
{
"user": {
"email": "user@example.com",
"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_templateSave or update a LaTeX template by name. Paid plans only. Upserts: a second call with the same name overwrites the first.
| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Template name (max 100 chars). Unique per user. |
latex_content | string | Yes | Full LaTeX source for the template body. |
description | string | No | Short human-readable summary (max 500 chars). Shown in list_templates. |
instructions | string | No | Agent playbook (prose markdown, max 50000 chars). Describes how to fill the template - defaults, workflow rules, edge cases, conditional logic. Optional but recommended for templates with dynamic parts. See note below. |
description vs instructions: description is the one-line UI summary ("Standard Toptal monthly invoice"). instructions is the longer playbook your AI agent reads alongside the LaTeX when filling the template ("Ask the user only for total amount; date is today; invoice number format YYYYMMDD-N where N is sequential count for the calendar year; for EU clients add VAT line"). They are different fields.
list_templatesList the user's saved templates. Does not include latex_content or instructions to keep the response small.
Input: None.
Each item in the returned array carries id, name, description, updated_at, latex_size_bytes, and has_instructions (boolean). Use the has_instructions flag to decide whether a follow-up get_template call will return a useful playbook.
get_templateFetch a single template by ID or name. Returns the full latex_content plus instructions (if any) in one round trip - your agent gets the layout and the playbook together.
| Parameter | Type | Required | Description |
|---|---|---|---|
id_or_name | string | Yes | Numeric ID or URL-safe template name. |
delete_templateDelete a template by ID or name.
| Parameter | Type | Required | Description |
|---|---|---|---|
id_or_name | string | Yes | Numeric ID or URL-safe template name. |
npm install
npm run build
npm start
MIT
FAQs
MCP server for Pressa: compile LaTeX to PDF without installing TeX Live. No API key needed to start.
The npm package @pressa/mcp receives a total of 86 weekly downloads. As such, @pressa/mcp popularity was classified as not popular.
We found that @pressa/mcp demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.

Security News
Socket CTO Ahmad Nassri discusses how to keep AI agents from bypassing package blocks, limit credential access, and monitor their actions.

Security News
GPT-6 Astra tried to plant malicious code in simulated open source projects using fake GitHub accounts and deceptive PRs during an assigned CTF challenge.

Security News
upm uses Node.js to deliver fast npm installs in about 250 KB, with a JavaScript API and security defaults.