The QRX MCP server lets AI assistants make artistic QR codes for you: describe a picture and give a link, and the assistant starts the code, waits while it is painted and hands back the image and its short link. It works with Claude, Claude Code, Cursor, VS Code, Windsurf, Cline and other clients that speak the Model Context Protocol.
https://qrx.codes/mcpMake a key on the API keys page and send it as Authorization: Bearer <your API key>. A client that can only add a plain header can send X-API-Key: <your API key> instead. Give each assistant its own key, so you can see its usage and revoke it on its own.
QRX and give the server URL, https://qrx.codes/mcp.Authorization with the value Bearer <your API key>.QRX_API_KEY environment variable, then run this in your project. It saves the server to .mcp.json with a reference to the variable, not the key, so the file is safe to commit.claude mcp add --transport http --scope project qrx https://qrx.codes/mcp \
--header 'Authorization: Bearer ${QRX_API_KEY}'.cursor/mcp.json in your project, or ~/.cursor/mcp.json for every project. Cursor reads the key from the QRX_API_KEY environment variable.{
"mcpServers": {
"qrx": {
"url": "https://qrx.codes/mcp",
"headers": {
"Authorization": "Bearer ${env:QRX_API_KEY}"
}
}
}
}.vscode/mcp.json. VS Code asks for the key the first time and stores it securely.{
"inputs": [
{
"type": "promptString",
"id": "qrx-api-key",
"description": "QRX API key",
"password": true
}
],
"servers": {
"qrx": {
"type": "http",
"url": "https://qrx.codes/mcp",
"headers": {
"Authorization": "Bearer ${input:qrx-api-key}"
}
}
}
}~/.codeium/windsurf/mcp_config.json. Note serverUrl, not url.{
"mcpServers": {
"qrx": {
"serverUrl": "https://qrx.codes/mcp",
"headers": {
"Authorization": "Bearer ${env:QRX_API_KEY}"
}
}
}
}cline_mcp_settings.json, with your key in place of <your API key>. autoApprove lists the tools that only read.{
"mcpServers": {
"qrx": {
"type": "streamableHttp",
"url": "https://qrx.codes/mcp",
"headers": {
"Authorization": "Bearer <your API key>"
},
"disabled": false,
"autoApprove": [
"get_qr_code",
"list_qr_codes",
"get_account",
"get_profile",
"list_styles"
]
}
}
}Any other client: point it at https://qrx.codes/mcp over Streamable HTTP with the same header. Without a key, a client can still list the tools and the styles.
| Tool | What it does | Reads or writes |
|---|---|---|
generate_qr_codeGenerate a QR code · Writes | Starts a new code from a description of the picture and the link it opens (or a Wi-Fi network to join). It answers at once with the code’s id while the picture is painted. | Writes |
get_qr_codeGet a QR code · Reads | A code’s status, image and short link. While the code is still being painted it waits up to 25 seconds for it. | Reads |
list_qr_codesList QR codes · Reads | The codes on your account, newest first, a page at a time. | Reads |
change_qr_code_destinationChange where a QR code points · Writes | Points an existing link code at a new web address. Printed copies follow at once, so assistants ask before using it. | Writes |
get_accountGet plan and usage · Reads | How many codes are left today, when the count resets, and what the account can do. | Reads |
get_profileGet the signed-in QRX account · Reads | Which QRX account is connected. | Reads |
list_stylesList QR code styles · Reads | The looks a new code can be painted in. No key needed. | Reads |
Every tool says whether it only reads, so clients can run the reading tools without asking each time. In clients that show interactive views, such as Claude, a new code appears in a card that fills in when it is ready.
get_account says how many are left and when the count resets.get_qr_code waits up to 25 seconds at a time, and the assistant calls it again until the code is ready.AGENTS.md snippet.https://qrx.codes/v1.