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
Release files for qr-cow-mcp 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| qr_cow_mcp-0.1.1.tar.gz | 11.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| qr_cow_mcp-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 20.8 kB
Release files / qr_cow_mcp-0.1.1.tar.gz
| Download URL | qr_cow_mcp-0.1.1.tar.gz |
|---|---|
| Size | 11.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
4f56b350d9aaf3b6150e5704bb214ff4e91a75077e3b1e129d752da4e2f664f2
|
|
BLAKE2b-256 checksum How to use checksums |
3a3137f671354d856c0a84e6e81096aa83a27b123b5b17ca7eea8786d2c7968f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.2
|
Release files / qr_cow_mcp-0.1.1-py3-none-any.whl
| Download URL | qr_cow_mcp-0.1.1-py3-none-any.whl |
|---|---|
| Size | 9.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
4bf2b0cbb664ca29cc9af99b3d213d3404859de7b29f57d2513cac724e1450f6
|
|
BLAKE2b-256 checksum How to use checksums |
4c082953d8ad30c2c9ca352009752f782baeb966a176b115bd9a36c49cb63389
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.2
|