Back to Directory/Cloud Providers

io.github.hydrojwh/promptready-mcp

Convert PDF/CSV to Markdown with AI-powered OCR via the PromptReady cloud API.

Cloud ProvidersPythonv0.4.0

PromptReady MCP

Official Model Context Protocol client for PromptReady — convert PDF/CSV to Markdown from AI agents (Grok, Claude Code, Cursor, and other MCP hosts).

Same PromptReady account and credits as the web app.

Data flow: your local PDF/CSV files are uploaded to the PromptReady cloud (promptready.space) for OCR processing. Converted Markdown is downloaded back to your machine. Files are auto-deleted from the server 3 hours after your batch finishes. No long-term storage.

Features

  • Browser Google login (tokens stay on your machine)
  • get_credits, convert_pdf, get_status, wait_and_download, list_conversions
  • Durable results: convert_pdf returns a log_id; wait_and_download / get_status accept it and resolve via the database, so a server restart, a redeploy, or a second back-to-back convert can no longer orphan a finished job (results are kept 3 hours)
  • Slash commands for humans: /promptready:convert and five more (below)
  • Saved convert defaults (engine, tables, images) — not on every call
  • Factory default: PaddleOCR-VL, tables on, images off

Install

As a Claude Code plugin (recommended)

Once listed in the Claude Code plugin directory:

/plugin install promptready

As a standalone MCP server

pip install promptready-mcp

Or run it without installing:

uvx promptready-mcp
From source
git clone https://github.com/hydrojwh/promptready-mcp.git
cd promptready-mcp
python3 -m venv .venv && source .venv/bin/activate
pip install -e .

Login (once per machine)

promptready-mcp-login

If you installed with uvx, the login command lives in the same package:

uvx --from promptready-mcp promptready-mcp-login

Either opens Google OAuth and saves credentials to ~/.config/promptready/credentials.json (file mode 0600). That path is in your home directory, so it survives uvx cache resets. You can also log in from inside an MCP host by calling the login tool.

After you sign in, the browser returns to http://127.0.0.1:18765/callback — a local page started by the login command. No Supabase configuration is needed.

Email login fallback

If browser-based Google login is not an option, the same command accepts email and password:

promptready-mcp-login --email you@x.com

Leave out --password and you will be prompted for it instead — this keeps the password out of your shell history.

Already have an access token? Set PROMPTREADY_ACCESS_TOKEN in the environment (MCP host or shell). Environment variables take precedence over the saved credentials file.

MCP host config

Fastest: let your AI agent install it

If you are already in an MCP-capable agent, skip the JSON editing and just ask:

Install the PromptReady MCP server for me. The PyPI package is promptready-mcp (stdio command promptready-mcp). Add it to your MCP config, then I will run the login tool.

In Claude Code the agent can use the built-in CLI:

claude mcp add promptready -- promptready-mcp

Reconnect after changing config

Hosts do not pick up MCP config changes mid-session. After changing the config, restart the host or reconnect the server — in Claude Code, open the /mcp panel and reconnect.

The /mcp panel shows server status and lists the connected servers' tools, but it does not run them: picking a tool in that list will not invoke it. Tools are invoked through normal conversation — ask the agent to convert a file and it calls convert_pdf for you. If a call fails, reconnect from the panel first.

Claude Code

claude mcp add promptready -- promptready-mcp

The default scope is local (this project only). Use --scope user to register it for all your projects, or --scope project to share the registration through a committed .mcp.json.

Cursor

Add to ~/.cursor/mcp.json (or .cursor/mcp.json for a single project):

{
  "mcpServers": {
    "promptready": {
      "command": "promptready-mcp"
    }
  }
}

Grok

[mcp_servers.promptready]
command = "promptready-mcp"
enabled = true
tool_timeout_sec = 3600

Claude Desktop / generic JSON

{
  "mcpServers": {
    "promptready": {
      "command": "promptready-mcp"
    }
  }
}

No access token in config files required after login.

Host cannot find promptready-mcp

GUI hosts start servers with a narrow PATH, so a console script installed by pip install --user is often invisible to them — the host reports a spawn failure or "server disconnected" rather than a missing command.

Two reliable fixes:

{ "mcpServers": { "promptready": {
  "command": "uvx", "args": ["promptready-mcp"] } } }

or point at the absolute path of the script: /ABS/PATH/.venv/bin/promptready-mcp.

Tools

ToolPurpose
login / logoutBrowser auth / clear local credentials
get_creditsCredit balance
get_convert_settings / set_convert_settingsSaved convert defaults
convert_pdfUpload path → queue (optional wait)
get_statusStatus — by log_id (DB, restart-proof) or session
wait_and_downloadWait + save .md, by log_id or session
list_conversionsRecent conversions with log_id, status, downloadable

Downloaded names follow the web app: {name}_PaddleOCR-VL.md (engine label).

Credits are deducted by the server when a job is queued, exactly as on the web app. convert_pdf(wait=True) can run for a long time, so give the host a high tool timeout.

Durable results with log_id (0.4.0)

convert_pdf returns log_id — the id of the conversion record in your account. Unlike the session status, it survives backend restarts and later converts:

convert_pdf(path="report.pdf")            → {"log_id": "…uuid…", …}
wait_and_download(log_id="…uuid…")        → saves report_PaddleOCR-VL-1.6.md
list_conversions(limit=10)                → past conversions + their log_ids

Results are downloadable for 3 hours after completion (HTTP 410 after that — converting again, with fresh credits, is then the only way). If a download fails for another reason, retry wait_and_download with the same log_id; never re-run convert_pdf for the same file.

Slash commands

MCP prompts are the human entry point: instead of describing what you want, you pick a command. Hosts that surface prompts as slash commands (Claude Code does) show them as /promptready:<name>:

Slash commandPurpose
/promptready:loginLog in (opens the browser Google sign-in)
/promptready:logoutLog out on this machine
/promptready:creditsShow your credit balance
/promptready:convertConvert a PDF/CSV to Markdown
/promptready:siteShow the PromptReady web app URL
/promptready:settingsShow — and optionally change — convert defaults

Each command expands to a short instruction; the agent then calls the matching tool (login, get_credits, convert_pdf, …) for you.

/promptready:convert optionally takes two positional arguments, input path then output directory. Pick the command from the slash menu (hosts may list it as promptready:convert (MCP)) and append the arguments:

/promptready:convert (MCP) report.pdf markdown-out

Arguments are split on whitespace and cannot be quoted, so paths with spaces do not fit on the command line — run the command bare and give the paths in chat instead. Line breaks and control characters in arguments are rejected outright (0.3.8): an argument is interpolated into the instruction the command expands to, and it must never be able to start a line of its own. With no arguments the command asks you for them. The conversion itself always goes through the convert_pdf tool: never re-run it for the same file while a download is pending — that queues a fresh conversion and spends fresh credits; the expanded command tells the agent to call wait_and_download instead.

Hosts that do not map prompts to slash commands simply ignore this section; the tools keep working as before.

Security

  • Tokens are never hardcoded in this repository.
  • Do not commit ~/.config/promptready/* or .env.
  • Only use the official package linked from https://promptready.space
  • Vulnerability reports: see SECURITY.md

Network access and credentials

What this client talks to, so you can review it before installing:

  • Network: HTTPS requests to the PromptReady API at https://promptready.space (override with PROMPTREADY_BASE_URL, or the base URL saved at login — if you set one, all API traffic, credentials included, goes to that host instead). When a conversion finishes, the Markdown result may be fetched from a short-lived signed download URL that the API returns (served from PromptReady's Cloudflare R2 storage); that request carries no credentials. There is no telemetry and no other third-party host. During browser login a short-lived listener binds to 127.0.0.1 only, to receive the sign-in callback; your browser, not this client, talks to the sign-in provider.
  • Files read: the PDF/CSV paths you pass to convert_pdf, plus this client's own config under ~/.config/promptready/ (credentials and convert defaults).
  • Files written: the Markdown results you ask to save; the credentials file ~/.config/promptready/credentials.json (mode 600; override the path with PROMPTREADY_CREDENTIALS_PATH); and your convert defaults in ~/.config/promptready/settings.json when you change settings (mode 600; override with PROMPTREADY_SETTINGS_PATH). Nothing else is left on disk.
  • Credentials: your own PromptReady account session, created by promptready-mcp-login (browser or email) or supplied through PROMPTREADY_ACCESS_TOKEN / PROMPTREADY_REFRESH_TOKEN. The client sends it only to the PromptReady API, never to the signed download URL.

Service terms

Using the cloud API is subject to the Terms of Service and Privacy Policy. This MIT-licensed client does not grant free unlimited conversion. The license covers this client's source code only; use of the PromptReady cloud service (https://promptready.space) remains subject to its Terms of Service and Privacy Policy.

Smoke test (no account)

./scripts/smoke_stdio.sh

License

MIT — see LICENSE.

Installation

Source-derived launch command. Check the maintainer’s required arguments and credentials before running:

bash
uvx promptready-mcp

Set up in your AI client

Merge this template into ~/Library/Application Support/Claude/claude_desktop_config.json. Keep existing servers. Add any arguments, credentials, and permissions required by the maintainer; this template has not been install-tested.

json
{
  "mcpServers": {
    "io-github-hydrojwh-promptready-mcp": {
      "command": "uvx",
      "args": [
        "promptready-mcp"
      ]
    }
  }
}

Restart Claude Desktop completely for changes to take effect. Confirm the server appears connected in the client’s tool list, then try a read-only example from its documentation.

Claude Desktop setup reference

Package

promptready-mcppypi

Compatible MCP Clients

io.github.hydrojwh/promptready-mcp works with any MCP-compatible client. Copy the config snippet from the Configuration section above and add it to the file shown for your client, then restart the application.

  • Claude Desktop~/Library/Application Support/Claude/claude_desktop_config.jsonRestart Claude Desktop completely for changes to take effect.
  • Cursor~/.cursor/mcp.jsonRestart Cursor for changes to take effect.
  • VS Code.vscode/mcp.jsonReload VS Code window for changes to take effect.
  • Windsurf~/.codeium/windsurf/mcp_config.jsonRestart Windsurf for changes to take effect.
  • Claude Code.mcp.jsonSave at the project root, then start Claude Code in that project and review the MCP server approval prompt. Keep real credentials out of shared files.

Learn More