npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

conv2pdf-mcp

v1.1.0

Published

Official MCP server of the conv2pdf API: an AI assistant converts Office documents, images, e-books and web pages to PDF, and merges, splits, compresses, protects or converts the PDFs of your computer. Hosted in the EU (France).

Readme

conv2pdf-mcp

Official Model Context Protocol server of the conv2pdf API. Your AI assistant converts Word, Excel, PowerPoint, Pages, images, e-books, PostScript and HTML files to PDF, as well as web pages from their address, converts PDFs to Word or to images, and merges, splits, compresses, protects, rotates or numbers the PDFs that are on your computer. Processing runs on OVHcloud servers in France: no transfer outside the EU, no US service in the chain.

Installation · Tools · How it behaves · Development

Installation

  1. Create an account on conv2pdf.com. The Dev plan includes 300 free conversions, valid for 12 months; see pricing for the paid plans.
  2. Create an API key, which starts with cpdf_live_, in the Developer tab of your dashboard. conv2pdf shows it only once, at creation.
  3. Add the server to your MCP client, with the key in the CONV2PDF_API_KEY environment variable. It needs Node.js 22 or later.

In Claude Code:

claude mcp add --env CONV2PDF_API_KEY=cpdf_live_... --transport stdio conv2pdf -- npx -y conv2pdf-mcp

On Windows, put cmd /c before npx.

In Claude Desktop, Cursor and the other clients configured with a JSON file:

{
  "mcpServers": {
    "conv2pdf": {
      "command": "npx",
      "args": ["-y", "conv2pdf-mcp"],
      "env": { "CONV2PDF_API_KEY": "cpdf_live_..." }
    }
  }
}

Or, in Claude Code, install the plugin: the same server, with a skill that tells the assistant which tool to call, in which order, and what a call costs.

/plugin marketplace add jamalofski/conv2pdf-mcp
/plugin install conv2pdf@conv2pdf

Claude Code asks for the API key when the plugin is enabled, and keeps it in the credential store of the system, not in a settings file. To set it later, run /plugin configure conv2pdf@conv2pdf, or open /plugin, Installed tab, conv2pdf, Configure options. A server you added by hand with the npx -y conv2pdf-mcp command takes precedence over the one of the plugin.

For another agent that loads SKILL.md skills, add the server as above and take the skill alone: plugin/skills/conv2pdf/SKILL.md in this repository, also listed on Agensi.

Then ask for what you need: "convert report.docx to PDF", "merge these three PDFs", "compress scan.pdf and protect it with a password".

Tools

| Tool | What it does | |---|---| | convert_to_pdf | Word, Excel, PowerPoint, OpenDocument, Apple Pages, RTF, TXT, CSV, PNG, JPG, WebP, GIF, TIFF, HEIC, EPUB, PostScript (PS, EPS) or HTML file to PDF, chosen from the extension | | convert_url_to_pdf | Public web page to PDF, from its address, printed as a browser would | | convert_heic_to_jpg | iPhone HEIC or HEIF photo to JPG | | convert_pdf_to_word | PDF with real text to an editable DOCX document | | convert_pdf_to_images | One PNG or JPG per page, in a ZIP file | | merge_pdfs | Combine several PDFs into one, in the order given | | extract_pdf_pages | Copy the pages you list, such as 1-5,7,10-12, into a new PDF, in the order written | | split_pdf | One PDF per page, in a ZIP file | | rotate_pdf | Turn every page by 90, 180 or 270 degrees | | add_page_numbers | Number the pages, as "3 / 12" or "3", bottom center, left or right | | add_watermark | Stamp a text of up to 50 characters on every page | | compress_pdf | Reduce the size, keeping images at 72, 150 or 300 DPI | | protect_pdf | Set a password, and optionally forbid printing or copying | | unlock_pdf | Remove a password you know, or the printing and copying restrictions | | get_quota | Plan, usage and limits of the API key |

How it behaves

  • Files stay on your computer, except for the conversion. A tool takes the path of a file, sends the file to conv2pdf and writes the result on your disk. conv2pdf checks the content of the file, not only its name.
  • Nothing is overwritten. The result goes next to the input file: report.docx gives report.pdf, and a PDF tool adds a suffix, such as report-compressed.pdf. When that name is taken, the server writes report (2).pdf. The assistant can choose the place with output_path; if a file is already there, the tool refuses before converting anything. A web page has no input file to write next to, so convert_url_to_pdf always takes an output_path.
  • Deleted from the server. Once the result is on your disk, the server deletes the job from conv2pdf. Should that fail, conv2pdf deletes the files after one hour.
  • Quota. Each conversion counts as one in the quota of your plan, including one that conv2pdf refuses after reading the file, such as an unreadable or scanned PDF, or one with too many pages. A file refused on arrival (wrong type, too large, password missing), a refused setting (a page range that does not exist, a password that is too short) and a failure on the side of conv2pdf count for nothing, and get_quota is free. Files can weigh up to 10 MB on the Dev plan and 200 MB on paid plans.
  • Rate limit. The API accepts 20 conversions per minute per API key. When it asks to slow down, or when its queue is full, the server waits for the delay the API gives and tries again, twice at most and only for delays of 30 seconds or less; otherwise the assistant gets the delay to wait.
  • Protected PDFs. The tools that read a PDF, except merge_pdfs, open one that asks for a password when the assistant passes it as password. The result has no password. For a merge, unlock the protected PDFs first.
  • Pages and Numbers. A Pages document keeps its .pages extension: only the name tells it from a Numbers spreadsheet, which conv2pdf does not convert, like Keynote presentations.
  • Errors. A refusal comes back to the assistant as a sentence it can act on: the wrong password, the page range that does not exist, the plan limit, the key to set. A cancelled call stops the transfer and leaves no file behind.
  • Without a key. The server starts and lists its tools; a call explains how to set CONV2PDF_API_KEY.

Every request carries User-Agent: conv2pdf-mcp/<version>. Mention it when you contact support: it tells your calls apart in the API's logs.

Development

The server has no dependency: Node.js runs the sources as they are. It talks to its client over stdio and serves both eras of the protocol from the same process: revision 2026-07-28, where each request carries its protocol version, and the earlier revisions (2025-11-25 down to 2024-11-05), which start with an initialize handshake.

npm test

runs the tests against a fake conv2pdf API on a local port: no key and no network are needed.

npm run check-tools

compares the extensions convert_to_pdf routes on with what the live API accepts (GET /v1/tools).

Plugin

plugin/ holds the Claude Code plugin: its manifest, the .mcp.json that starts the published package with npx, and the skill, plugin/skills/conv2pdf/SKILL.md. .claude-plugin/marketplace.json is the catalog that lets Claude Code install the plugin from this repository. Neither is part of the npm package. npm test checks that the plugin is at the version of the package and that the skill names the tools the server has.

claude plugin validate . --strict
claude --plugin-dir ./plugin

check the manifests, then start a session with the plugin loaded from the folder, without installing it. A user gets a change of the plugin or of the skill when the version changes: it ships with a release.

Releasing

  1. Set the version in package.json, server.json and plugin/.claude-plugin/plugin.json, and date its section in CHANGELOG.md.
  2. Run npm test and npm run check-tools.
  3. Commit, then push a tag named after the version: the Publish workflow publishes the package to npm through Trusted Publishing, with a provenance statement.
  4. Publish the entry of the MCP Registry: mcp-publisher login http --domain conv2pdf.com, then mcp-publisher publish. The name com.conv2pdf/conv2pdf is proved by the public key served at https://conv2pdf.com/.well-known/mcp-registry-auth.
  5. When the skill changed, upload it again to its Agensi listing, as a new version: a ZIP of a conv2pdf/ folder that holds the SKILL.md. Nothing updates the listing from this repository.

Resources

Support

Open an issue or write to [email protected].

License

MIT, see LICENSE.