pdf_merge
Merge PDFs
Combine two or more PDF files into one, in the order given. Saves next to the first file as name-merged.pdf unless output is set.
inputsrequiredoutputoverwrite
io.snowkitPublished by snowkit.iov0.1.4Updated Nov 5, 2026
Private tools that run on your computer: PDFs, QR codes, JSON, SQL, text, colours and cron.
Snowkit is a local MCP server that gives an assistant offline file utilities: PDF merge/split/rotate, Markdown to PDF, QR codes, JSON, SQL, text, colour and…
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Follow the launch instructions in the repository.
Private tools that run on your computer.
Snowkit merges and splits PDFs, makes QR codes, tidies JSON and SQL, counts words and more. It works from the command line, and it plugs into AI apps that support the Model Context Protocol (MCP), so your assistant can do real work on your files.
Your files never leave your computer. Snowkit has no account, sends nothing over the internet and keeps no copies. It reads the files you point it to and writes the results next to them.
Each result ends with a link to the matching tool on snowkit.io, in case you would rather see it in your browser.
You need Node.js 18 or newer. There is nothing else to install: the commands below fetch Snowkit the first time it runs.
Open Settings, then Developer, then Edit Config, and add Snowkit to claude_desktop_config.json:
Restart Claude Desktop. If it cannot find npx on Windows, use "command": "cmd" and "args": ["/c", "npx", "-y", "snowkit"].
Open Cursor Settings, then MCP, then Add new MCP server, or add this to ~/.cursor/mcp.json (or .cursor/mcp.json inside a project):
Add this to ~/.gemini/settings.json:
Snowkit is a standard MCP server over standard input and output. Point your app at the command npx -y snowkit.
Then just ask, for example:
Text commands read the file you name, or standard input when you pipe text in, so they fit into scripts:
Install it once with npm install -g snowkit and you can drop the npx.
overwrite (or pass --overwrite on the command line).markdown_to_pdf uses built-in fonts that cover Western European languages. Images in the Markdown are left out.pdf_rotate keeps everything else in the file as it was. Merging, splitting and extracting copy the pages themselves, so bookmarks and document details from the originals are not carried over.MIT. See LICENSE.
Source: README.md at commit 64c4ab3
Merge PDFs
Combine two or more PDF files into one, in the order given. Saves next to the first file as name-merged.pdf unless output is set.
inputsrequiredoutputoverwriteSplit a PDF
Split a PDF into several files: one per page by default, every N pages, or one file for each page range. Files are saved beside the original unless output_folder is set.
everyinputrequiredrangesoverwriteoutput_folderExtract PDF pages
Copy chosen pages of a PDF into a new PDF, in the order listed. Also works to reorder, duplicate or drop pages. Saves as name-extracted.pdf beside the original unless output is set.
inputrequiredpagesrequiredoutputoverwriteRotate PDF pages
Turn all or some pages of a PDF by 90, 180 or 270 degrees clockwise, or -90 for anticlockwise. Everything else in the file is kept. Saves as name-rotated.pdf unless output is set.
anglerequiredinputrequiredpagesoutputoverwritePDF details
Read a PDF's page count, page sizes, file size, PDF version, form fields, password protection and document details such as title and author. Changes nothing.
inputrequiredMarkdown to PDF
Turn Markdown into a clean, paginated PDF with headings, lists, tables, code blocks and links. Uses built-in fonts for Western European text; images are left out. Saves beside the Markdown file unless output is set.
pageinputtitleoutputmarkdownoverwritepage_numbersMake a QR code
Make a QR code for a link or any text, as SVG or PNG. Without an output path the SVG is returned as text. The content lives in the code itself, so it never expires.
sizetextrequiredlevelformatoutputoverwriteFormat JSON
Pretty-print or minify JSON, optionally sorting keys. Large numbers keep every digit and errors point to the line and column.
textinputindentminifyoutputoverwritesort_keysValidate JSON
Check that JSON is valid and, optionally, that it matches a JSON Schema. Reports the line and column of syntax errors and the path of every schema problem.
textinputschemaschema_pathFormat SQL
Tidy SQL into readable, indented lines, or minify it onto one line. Works with common dialects such as PostgreSQL, MySQL, SQLite and SQL Server.
textinputindentminifyoutputoverwritekeyword_caseText statistics
Count words, characters, sentences, paragraphs and lines, estimate reading and speaking time, and score readability for English text.
textinputTransform text
Change text case (upper, lower, title, sentence, camel, pascal, snake, kebab, constant), turn each line into a URL slug, or remove duplicate lines while keeping the original order.
texttriminputactionrequiredoutputoverwriteignore_caseremove_emptyConvert a colour
Show a colour as hex, RGB, HSL, HSV and OKLCH with its nearest named colour. Give a second colour to get the WCAG contrast ratio and pass or fail results.
colorrequiredagainstExplain a cron schedule
Describe a five-field cron expression in plain English and list its next run times.
utccountexpressionrequiredImage metadata
Show what a JPEG, PNG or WebP photo reveals about itself: camera, date, editing software and the GPS location where it was taken, if any.
inputrequiredRemove image metadata
Remove the hidden location, camera details, dates and comments from a JPEG, PNG or WebP photo without changing the picture. Saves next to the original as name-clean unless output is set.
inputrequiredoutputoverwritekeep_color_profileMake head tags
Write the title, description, canonical, Open Graph and Twitter tags for a web page, ready to paste into its <head>.
urlimagetitlenoindextwitterimage_altsite_namedescriptiontheme_colorCheck head tags
Check a web page's HTML for a missing or too-long title and description, share image, canonical and other head tags, with what to fix.
htmlinput90% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
{ "mcpServers": { "snowkit": { "command": "npx", "args": ["-y", "snowkit"] } }}claude mcp add snowkit -- npx -y snowkit{ "mcpServers": { "snowkit": { "command": "npx", "args": ["-y", "snowkit"] } }}{ "mcpServers": { "snowkit": { "command": "npx", "args": ["-y", "snowkit"] } }}npx snowkit pdf merge a.pdf b.pdf -o both.pdfnpx snowkit pdf split report.pdf --every 2npx snowkit pdf split report.pdf --range 1-3 --range 4-npx snowkit pdf extract report.pdf --pages "1, 4-6"npx snowkit pdf rotate scan.pdf --angle 90 --pages 2npx snowkit pdf info report.pdfnpx snowkit md2pdf notes.md --page letter --numbersnpx snowkit qr "https://example.com" -o qr.pngnpx snowkit json format data.json --sortnpx snowkit json validate data.json --schema schema.jsonnpx snowkit sql format query.sqlnpx snowkit text stats essay.txtnpx snowkit text case title headings.txtnpx snowkit text dedupe emails.txt --ignore-casenpx snowkit color "#336699" --against whitenpx snowkit cron "*/15 9-17 * * 1-5"npx snowkit --helpcurl -s https://api.example.com/items | npx snowkit json format