DEV Community

qr cow
qr cow

Posted on Originally published at qr-cow.com

Let Your AI Assistant Make QR Codes, the qr-cow MCP Server

qr-cow now speaks MCP. If that sentence means nothing to you yet, here is the practical version: you can open Claude, Cursor, or Zed, type "make a QR code for my new menu", and it happens — in your account, styled, saved, and trackable. This post covers what MCP is, the one-minute setup, and the eight things your assistant can now do with QR codes.

What is MCP?

The Model Context Protocol is an open standard, published by Anthropic, that lets AI assistants call external tools. An MCP server describes a set of actions ("create a QR code", "fetch scan analytics"), and any MCP-capable client (Claude Desktop, Claude Code, Cursor, Zed, and a fast-growing list of others) can discover and use them mid-conversation.

Our server is called qr-cow-mcp. It is a small, open source Python package (MIT licensed, source on GitHub) that forwards your assistant's requests to the same public API our API & MCP docs describe. No magic in the middle.

Set it up in one minute

  1. Sign in at qr-cow.com and open Dashboard → API & MCP.
  2. Click Create token and copy the qrc_live_… value (it is shown once).
  3. Add this to your MCP client's config (this example is Claude Desktop's mcpServers block):
{
  "mcpServers": {
    "qr-cow": {
      "command": "uvx",
      "args": ["qr-cow-mcp"],
      "env": { "QRCOW_API_TOKEN": "qrc_live_..." }
    }
  }
}
Enter fullscreen mode Exit fullscreen mode

Restart the client and the qr-cow tools appear. There is nothing to install beforehand: uvx fetches the package from PyPI on first run. Cursor and Zed use the same shape (a command, args, and an env block); their MCP docs show where it goes.

What you can ask for

  • "Make a QR code that goes to my menu page, call it Café menu."
  • "Render a QR for acme.com in the ocean preset, 600 pixels, transparent background."
  • "Generate ten styled QR codes for these ten booth URLs." (This is where doing it by hand stops being fun and an assistant shines.)
  • "Which countries scanned the café menu last week? Which hours are busiest?"
  • "Point the printed menu code at /menu-v2 instead."

The eight tools

Tool What it does
create_qrcode Create and save a static or dynamic QR code (URL, Wi-Fi, vCard, and 10 more types) in your account.
render_styled_qrcode Render a fully styled image (dot and eye shapes, gradients, logo) from data plus a preset, without saving anything. Returns the image into the chat.
list_qrcodes List your recent codes, newest first.
get_qrcode Fetch one code with its current destination and design.
update_qrcode_destination Change where a dynamic code points. The printed code keeps working.
delete_qrcode Soft-delete a code.
get_qrcode_analytics Scans, unique scanners, and breakdowns by country, device, and hour of day.
me Your profile and current plan.

The printed-code trick, explained

The most useful prompt in the list above is the least flashy one: retargeting a code that is already printed. That works because dynamic QR codes encode a short redirect URL rather than the destination itself, so the destination stays editable forever. Your assistant changing it in one sentence beats reprinting 500 flyers.

It is also why the analytics tool has something to report: every scan of a dynamic code passes through the redirect, which is what powers the country, device, and time-of-day breakdowns.

Privacy notes

  • The server is a thin pass-through. Your token lives in your own config file and is only ever sent to the qr-cow API as an authorization header.
  • No telemetry, no third-party calls, no storage in the middle.
  • Rendering without saving (render_styled_qrcode) is stateless: nothing appears in your account unless you ask to save.

Where to get it

The package is on PyPI as qr-cow-mcp, the source is on GitHub, and the full setup reference lives in the API & MCP docs. Static QR codes are free on every plan; dynamic codes with analytics start at $3/month, and the free plan includes a few to play with.

If you wire it into something interesting, tell us — we read every message to hi@qr-cow.com.


Originally published on the qr-cow blog.

Top comments (0)