MCP server for Pressa - LaTeX to PDF compilation for AI agents
- ✓Open-source license (MIT)
- ✓Actively maintained (<30d)
- ✓Clear description
- ✓Documented (README)
git clone https://github.com/pressa-dev/mcp{
"mcpServers": {
"mcp": {
"command": "node",
"args": ["/path/to/mcp/dist/index.js"]
}
}
}Resumen de MCP Servers
# @pressa/mcp
MCP (Model Context Protocol) server for [Pressa](https://pressa.dev) - LaTeX in, publication-quality PDF out. This server lets AI assistants compile documents through a standardized interface.
**No API key required to start.** Add the server, ask for a PDF, get one. A key raises the limits later.
## Setup
Add this to your MCP client configuration (e.g. Claude Desktop, Cursor):
```json
{
"mcpServers": {
"pressa": {
"command": "npx",
"args": ["-y", "@pressa/mcp"]
}
}
}
```
That is the whole configuration. The server starts in anonymous mode and
exposes the `compile` tool, which works with no credentials: 3 successful
compilations per day, and failed attempts do not count against that, so an
assistant can iterate on its LaTeX for free.
To unlock the rest, add a key:
```json
{
"mcpServers": {
"pressa": {
"command": "npx",
"args": ["-y", "@pressa/mcp"],
"env": {
"PRESSA_API_KEY": "pressa_your_key_here"
}
}
}
}
```
Get a free key at [pressa.dev](https://pressa.dev/users/sign_up). Takes about
30 seconds, no credit card. It raises the limit to 50 compilations per month
and registers the template, asset and render tools.
## Hosted server (no install)
The same tools are also served over Streamable HTTP at
`https://api.pressa.dev/mcp`, so a client that supports remote MCP servers
needs no Node.js and no local process:
```bash
claude mcp add --transport http pressa https://api.pressa.dev/mcp
```
Keyless, it exposes `compile`. Send an `Authorization: Bearer <key>` header to
register the template, asset and render tools as well.
## Environment Variables
| Variable | Required | Default | Description |
|----------|----------|---------|-------------|
| `PRESSA_API_KEY` | No | - | Pressa API key (starts with `pressa_`). Without it the server runs in anonymous mode and exposes only `compile`. |
| `PRESSA_API_URL` | No | `https://api.pressa.dev` | API base URL |
## Anonymous mode
With no `PRESSA_API_KEY` set, the server starts anyway rather than refusing to
run, and registers exactly one tool: `compile`. Tools that need an account are
not registered at all, because a tool that cannot succeed is worse than an
absent one.
Anonymous limits: pdflatex only, up to 3 pages, 30 KB of source, no image
assets, and PDF links that expire after 1 hour.
## Error handling
Compilation failures return a structured diagnosis rather than a raw TeX log:
the error class, the offending command, and a concrete suggested fix (often a
missing `\usepackage`). An assistant is expected to apply the fix and retry on
its own instead of showing the user a compiler log.
## Tools
### `compile`
Compile 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):**
```json
{
"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.
### `usage`
Get current API usage statistics.
**Input:** None.
**Output:**
```json
{
"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_template`
Save 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_templates`
List 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_template`
Fetch 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_template`
Delete a template by ID or name.
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id_or_name` | string | Yes | Numeric ID or URL-safe template name. |
## Development
```bash
npm install
npm run build
npm start
```
## License
MIT
Lo que la gente pregunta sobre mcp
¿Qué es pressa-dev/mcp?
+
pressa-dev/mcp es mcp servers para el ecosistema de Claude AI. MCP server for Pressa - LaTeX to PDF compilation for AI agents Tiene 0 estrellas en GitHub y su última actualización registrada es del 2026-09-22.
¿Cómo se instala mcp?
+
Puedes instalar mcp clonando el repositorio (https://github.com/pressa-dev/mcp) o siguiendo las instrucciones del README en GitHub. ClaudeWave también te ofrece bloques de instalación rápida en esta misma página.
¿Es seguro usar pressa-dev/mcp?
+
Nuestro agente de seguridad ha analizado pressa-dev/mcp y le ha asignado un Trust Score de 87/100 (tier: Trusted). Revisa el desglose completo de comprobaciones superadas y flags en esta página.
¿Quién mantiene pressa-dev/mcp?
+
pressa-dev/mcp es mantenido por pressa-dev. La última actividad registrada en GitHub es del 2026-09-22, con 0 issues abiertos.
¿Hay alternativas a mcp?
+
Sí. En ClaudeWave puedes explorar mcp servers similares en /categories/mcp, ordenados por popularidad o actividad reciente.
Despliega mcp en tu cloud
Lleva este repo a producción en minutos. Cada plataforma genera su propio entorno con variables de entorno editables.
¿Mantienes este repo? Añade un badge a tu README
Pega el badge en tu README de GitHub para mostrar que está auditado por ClaudeWave. Cada badge enlaza de vuelta a esta página y muestra el Trust Score actual.
[](https://claudewave.com/repo/pressa-dev-mcp)<a href="https://claudewave.com/repo/pressa-dev-mcp"><img src="https://claudewave.com/api/badge/pressa-dev-mcp" alt="Featured on ClaudeWave: pressa-dev/mcp" width="320" height="64" /></a>Más MCP Servers
Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.
User-friendly AI Interface (Supports Ollama, OpenAI API, ...)
An open-source AI agent that brings the power of Gemini directly into your terminal.
Real-time global intelligence dashboard. AI-powered news aggregation, geopolitical monitoring, and infrastructure tracking in a unified situational awareness interface
🕷️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl! Don't be shy, join here: https://discord.gg/EMgGbDceNQ and follow here for daily tips and tricks: https://x.com/Scrapling_dev
The fastest path to AI-powered full stack observability, even for lean teams.