llamaparse-mcp

$npx mdskill add run-llama/llamaparse-agent-plugins/llamaparse-mcp

Parse documents securely using LlamaParse MCP tools.

  • Extracts text from files uploaded via URL or direct upload.
  • Requires authenticated session and specific file IDs for operations.
  • Selects tools based on user goals like parsing or classification.
  • Delivers processed content ready for further agent analysis.

SKILL.md

.github/skills/llamaparse-mcpView on GitHub ↗
---
name: llamaparse-mcp
description: Skill on how to use the LlamaParse MCP tools
compatibility: Needs authenticated access to https://mcp.llamaindex.ai/mcp
license: MIT
metadata:
  author: LlamaIndex
  version: 0.1.0
---

# LlamaParse MCP — Usage Guide

## Authentication

All tools require a valid session. If a tool call returns an authentication error, ask the user to re-authenticate before retrying. Do not retry automatically without prompting the user.

## Uploading a File

Every operation (parse, classify, split) requires a `fileId` obtained by uploading first. There are two upload paths — choose based on where the file lives:

- **File accessible via URL** — use `uploadFileByUrl`. Pass the direct download URL and a descriptive file name. This is the preferred path when the user shares a link.
- **Local or binary file** — call `getUploadUrl` first to obtain a pre-signed upload URL and token, then POST the file to the returned endpoint. The token is valid for 10 minutes; complete the upload before it expires.

For `getUploadUrl`, always set `purpose` to match the intended downstream operation (`'parse'`, `'classify'`, `'split'`, etc.) so the server can apply the right storage policy.

## Choosing What to Do with a File

Once you have a `fileId`, pick the tool that matches the user's goal:

| Goal | Tool |
|---|---|
| Extract text or markdown content | `parseFile` |
| Determine which category a document belongs to | `classifyFile` |
| Break a multi-section document into labeled segments | `splitFile` |

These are independent — you can run any combination on the same `fileId`.

## Parsing

Use `parseFile` to extract readable content. Choose the `tier` based on document complexity:

- `cost_effective` — fast and cheap; good for standard PDFs with clean text and simple layouts.
- `agentic` — slower; use when the document has tables, multi-column layouts, or embedded images that need accurate extraction.
- `agentic_plus` — most thorough; reserve for documents where extraction quality is critical and cost/latency are acceptable.

When in doubt, start with `cost_effective`. Escalate to `agentic` only if the output is missing content or has structural errors.

Set `markdown: true` (the default) when the extracted content will be rendered or passed to an LLM. Set it to `false` when you need plain text without formatting.

## Classifying

Use `classifyFile` when the user wants to route or label a document. Define `categories` as precisely as possible — vague category descriptions reduce confidence. Include a `description` that explains what distinguishes each category from the others, not just what it is.

## Splitting

Use `splitFile` when a single document contains multiple logical sections that should be handled separately (e.g., a combined PDF of multiple contracts, or a report with distinct chapters). Define `categories` by the sections you expect, not by generic document types.

Choose `allowUncategorized` based on how strict the split needs to be:

- `'include'` (default) — unknown pages are grouped under an uncategorized segment; safe for exploratory use.
- `'omit'` — uncategorized pages are silently dropped; use when you only care about specific sections.
- `'forbid'` — the operation fails if any page cannot be categorized; use when completeness is required.

## Chaining Operations

Common multi-step patterns:

- **Classify then parse** — classify to confirm the document type, then parse only if it matches the expected category.
- **Split then parse** — split a composite document into segments, then call `parseFile` on each segment's pages separately (re-upload the relevant pages if needed).
- **Upload once, process multiple ways** — a single `fileId` can be passed to `parseFile`, `classifyFile`, and `splitFile` independently; you do not need to re-upload.

## Rate Limits

The server enforces a per-user rate limit. If you receive a rate limit error, read the `Retry-After` value from the response and wait that many seconds before retrying. Do not retry immediately in a loop.

## Error Handling

- If `uploadFileByUrl` fails, check whether the URL is publicly accessible and the file type is supported.
- If `parseFile` returns incomplete content, retry with a higher `tier`.
- If `classifyFile` or `splitFile` time out, the job may still be running on the server — inform the user rather than re-submitting the same job immediately.