MCP server for qr-cow: create, style, and manage QR codes (with scan analytics) from Claude, Cursor, Zed, or any MCP client.
Project description
qr-cow MCP server
An MCP server that exposes the customer-facing qr-cow.com API to any MCP-compatible AI client (Claude Desktop, Claude Code, Cursor, Zed, …).
Once connected, you can say things like:
"Make a QR code that goes to https://my-cafe.com/menu, call it Café menu" "Render a styled QR for https://acme.com in the ocean preset, 600px" "Show me which countries scanned my café menu last week" "Change the destination of the café menu QR to /menu-v2"
…and the assistant calls the API on your behalf.
1. Create a token
- Sign in at https://qr-cow.com.
- Go to Dashboard → API & MCP.
- Click Create token. Give it a name like "Claude Desktop".
- Copy the
qrc_live_…value that appears. It's shown once.
2. Wire it into your MCP client
Claude Desktop / Claude Code
Add to ~/.claude.json (or your platform's equivalent config):
{
"mcpServers": {
"qr-cow": {
"command": "uvx",
"args": ["qr-cow-mcp"],
"env": {
"QRCOW_API_TOKEN": "qrc_live_..."
}
}
}
}
Restart the client. You should see qr-cow tools listed.
Cursor / Zed
Same shape — pass command, args, and an env block with
QRCOW_API_TOKEN. See their MCP docs for the exact key.
Self-hosted qr-cow
Set QRCOW_API_BASE (defaults to https://qr-cow.com/api) to point at
your install:
"env": {
"QRCOW_API_TOKEN": "qrc_live_...",
"QRCOW_API_BASE": "https://your-host/api"
}
Tools
| Tool | What it does |
|---|---|
create_qrcode |
Create and save a static or dynamic QR (URL, Wi-Fi, vCard, …) in your account. |
render_styled_qrcode |
Render a fully styled QR image (dot/eye shapes, gradient, logo) from data plus a preset or style, without saving it. Returns the image. |
list_qrcodes |
List recent QR codes in your account. |
get_qrcode |
Fetch one QR code with its current destination + design. |
update_qrcode_destination |
Change a dynamic QR's destination — the printed code keeps working. |
delete_qrcode |
Soft-delete a code. |
get_qrcode_analytics |
Scans, unique scanners, country / device / hour-of-day breakdown. |
me |
The signed-in user's profile + current plan. |
Develop locally
git clone https://github.com/qrcow/qr_cow_mcp.git
cd qr_cow_mcp
uv venv && source .venv/bin/activate
uv pip install -e ".[dev]"
pytest
# Try it out — auth doesn't matter for startup
QRCOW_API_TOKEN=qrc_live_local QRCOW_API_BASE=http://localhost:8080/api qr-cow-mcp
The server speaks stdio, so the easiest way to manually exercise it is through an MCP client.
Privacy & security
- The server is a thin pass-through: your token stays in your MCP client
config and is only ever sent to the qr-cow API (or the
QRCOW_API_BASEyou configure) as aBearerheader. - No telemetry, no third-party calls. Requests carry a
User-Agent: qr-cow-mcp/<version>header so the API can distinguish MCP traffic.
Contributing & releases
- CONTRIBUTING.md — dev setup, style, how to send a PR.
- CHANGELOG.md — what changed in each release.
- RELEASING.md — how maintainers cut a release (tag → CI → PyPI).
License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file qr_cow_mcp-0.1.1.tar.gz.
File metadata
- Download URL: qr_cow_mcp-0.1.1.tar.gz
- Upload date:
- Size: 11.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/7.0.0 CPython/3.11.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4f56b350d9aaf3b6150e5704bb214ff4e91a75077e3b1e129d752da4e2f664f2
|
|
| MD5 |
e301b7ebd568e89ecfc9385738300668
|
|
| BLAKE2b-256 |
3a3137f671354d856c0a84e6e81096aa83a27b123b5b17ca7eea8786d2c7968f
|
File details
Details for the file qr_cow_mcp-0.1.1-py3-none-any.whl.
File metadata
- Download URL: qr_cow_mcp-0.1.1-py3-none-any.whl
- Upload date:
- Size: 9.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/7.0.0 CPython/3.11.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4bf2b0cbb664ca29cc9af99b3d213d3404859de7b29f57d2513cac724e1450f6
|
|
| MD5 |
ac1104fd9c673f0d51fa7f82be096523
|
|
| BLAKE2b-256 |
4c082953d8ad30c2c9ca352009752f782baeb966a176b115bd9a36c49cb63389
|