QR codes are a good fit for an AI assistant: the task is small, the input is a URL, and the output is an image. This tutorial connects Claude (or ChatGPT) to qrlia, a QR code platform with a remote MCP server, and walks through creating, updating and tracking a code.
Disclosure: I built qrlia.
What you need
- A Claude account (web, desktop or mobile), Claude Code, ChatGPT on a plan with custom apps, or Cursor.
- A qrlia workspace. The free plan is enough: 3 QR codes, scan totals, and the AI-assistant connector. Free codes carry a small qrlia logo in the centre. Sign up at https://qrlia.com/apply?utm_source=devto&utm_medium=community&utm_campaign=mcp-launch
No API key is needed. The server uses OAuth 2.1: you sign in in the browser and approve access.
The server
- URL:
https://mcp.qrlia.com/mcp - Transport: Streamable HTTP
- Auth: OAuth 2.1 (scopes
qrlia.read,qrlia.write, and an opt-inqrlia.adminfor workspace admins)
Option 1: Claude (web, desktop, mobile)
qrlia is in the Claude connector directory: https://claude.ai/directory/connectors/qrlia
- Open the link above, or Settings → Connectors and search "qrlia".
- Click Connect.
- Choose your workspace, sign in, approve the scopes.
Option 2: ChatGPT
In ChatGPT, open Settings → Apps, turn on developer mode under Advanced, and create an app with the URL https://mcp.qrlia.com/mcp. ChatGPT opens the qrlia sign-in; approve access. Your ChatGPT plan needs to support custom apps.
Option 3: Claude Code
claude mcp add --transport http qrlia https://mcp.qrlia.com/mcp
Then, inside Claude Code:
/mcp
Select qrlia and sign in in the browser window that opens. Add --scope user to the add command if you want it in every project.
Option 4: Cursor and other MCP clients
Add the server to your client's MCP config. For Cursor (~/.cursor/mcp.json):
{
"mcpServers": {
"qrlia": {
"url": "https://mcp.qrlia.com/mcp"
}
}
}
Cursor will prompt you to sign in. Configs for other clients are in https://github.com/mgazelle/qrlia-mcp.
Step 1: Create a code
Create a QR code for https://example.com called Spring flyer and show
me the image.
Claude calls a create tool, then fetches the image (PNG or SVG) and shows it. The code is dynamic: it encodes a short link, and the short link redirects to your URL.
Step 2: Change where it points
You printed 500 flyers and the page moved:
Change the Spring flyer code to point to https://example.com/summer.
The printed code stays the same. Only the redirect changes.
Step 3: Check scans
Show scan analytics for the last 30 days: which codes were scanned
most, and from which countries?
On the free plan you get scan totals. Pro adds breakdowns by day, country, city, device, OS and referrer.
Step 4: Use your brand
On a paid plan you can describe your brand and let the assistant save it as a design:
Save a design called Brand: dark red #7C220D modules, blue #00AEEF
corner markers, rounded dots, our logo from
https://example.com/logo.png in the centre, and a banner frame that
says "Scan to save my contact". Then apply it to the Spring flyer code.
Every code that uses the design follows it, and editing the design updates them all. Without your own logo, codes show the qrlia mark; you can also ask for no logo at all.
Other things to try
- "Create a Wi-Fi QR code for network CafeGuest." (static: no short link, no scan stats)
- "Make a vCard QR code for Jane Doe, sales, jane@example.com."
- "Create QR codes for these 20 URLs and put them in a folder called Spring." (bulk create handles up to 200 per call; folders are Pro)
- "Render the Spring flyer code as SVG using my saved design."
Safety notes
- Each tool is marked read-only or destructive. Claude asks before running a destructive one, like deleting a code.
- Admin tools (members, domains, webhooks, API key revoke) only appear if a workspace admin opts in to the admin scope.
- Revoke access any time under Settings → Connected apps in qrlia. A password change also revokes it.
Prefer HTTP?
The same operations are in a REST API with OpenAPI docs at https://docs.qrlia.com (Pro plan). MCP and REST share one service layer, so they behave the same.
Wrap-up
That's the whole setup: one URL, one sign-in. If you try it, tell me which prompts work badly; that's what I'm tuning next.
Top comments (0)