Skip to content

unstructured-io/unstructured-transform

v1.0.0Apache-2.0

Turn any file — PDF, spreadsheet, scan, email, 60+ formats — into clean, agent-ready structured data (Markdown or JSON) without leaving your editor.

Unstructured Transform

Connect the Unstructured Transform MCP server to Cursor so the agent can turn any file — PDF, spreadsheet, scan, email, image, 60+ formats — into clean, agent-ready structured data (Markdown or JSON) without leaving your editor.

Use when: the user shares or references a PDF, spreadsheet, scan, or email in a Cursor session and wants it turned into structured text the agent can read and reason over — for summarization, extraction, or RAG ingestion.

This is a full Cursor plugin, not just an MCP entry. It bundles:

  • MCP server (mcp.json) — the remote Transform server, connected over streamable HTTP with Cursor-native OAuth. No API key and no mcp-remote shim.
  • Rule (rules/transform.mdc) — an always-on rule that teaches the agent when to reach for Transform, so it picks the tool without being told.
  • Command (commands/transform.md) — /transform runs the whole upload → transform → poll → results flow in one move.

Requirements

Connect

Once this plugin is published to the Cursor Marketplace, installing it is the recommended path — Cursor writes the bundled mcp.json, registers the rule and /transform command, and connects the transform server for you. A browser window opens for OAuth sign-in on first connection; there is no API key to paste.

Until then — or if you only want the server — wire up the MCP server manually: add this to ~/.cursor/mcp.json (global) or .cursor/mcp.json (per project). Manual setup connects the transform server only; the always-on rule and the /transform command ship with the installed plugin, so install it to get those. The endpoint, transport, and tool list are in the root README; this only shows the Cursor config:

OAuth, no API key (default):

{
  "mcpServers": {
    "transform": {
      "type": "streamable-http",
      "url": "https://mcp.transform.unstructured.io"
    }
  }
}

API key, headless: connect with your key in the header instead of OAuth:

{
  "mcpServers": {
    "transform": {
      "type": "streamable-http",
      "url": "https://mcp.transform.unstructured.io",
      "headers": {
        "Authorization": "Bearer ${env:UNSTRUCTURED_API_KEY}"
      }
    }
  }
}

Both configs are ready to paste from example/.

Parse example

With the plugin installed, run the bundled command:

/transform report.pdf

Or, with just the transform server connected, ask in natural language:

Parse report.pdf to Markdown and summarize the key findings.

Cursor uploads the file, starts a transform job, polls until it finishes, and reads back the structured result. The guide Cursor's agent follows when installing from the marketplace is llms-install.md.

Limits

  • Files up to 50 MB each. Large or scanned documents can take a few minutes.
  • See the root README and the Transform docs for supported formats, parsing options, and billing.

Next steps