OpenQR

offiziell

Generieren Sie QR-Codes und verwalten Sie dynamische (bearbeitbare) QR-Codes mit Scan-Analysen über einen gehosteten MCP-Server (17 Tools) und eine kostenlose REST-API.

Was kann man mit OpenQR MCP machen?

  • Statische QR-Codes generieren — Fordern Sie einen QR-Code für beliebigen Text oder eine URL an; erhalten Sie PNG- oder SVG-Ausgabe über generate_qr.
  • Dynamische QR-Codes erstellen und verwalten — Erstellen Sie bearbeitbare Codes, ändern Sie Ziele, listen Sie sie auf oder löschen Sie sie mit create_dynamic_qr, update_dynamic_qr und delete_dynamic_qr.
  • Scan-Analysen verfolgen — Fordern Sie Scan-Statistiken für einen dynamischen Code an, um die Leistung über get_scans zu sehen.
  • Mit Ordnern und Themes organisieren — Erstellen Sie Ordner und wiederverwendbare Stilvorlagen, um Codes ordentlich und markenkonform zu halten, mit create_folder und create_theme.
  • Massenhaft für Druckkampagnen generieren — Erstellen Sie bis zu 200 dynamische Codes auf einmal für groß angelegte Projekte mit bulk_create_dynamic_qr.

Dokumentation

OpenQR

Kostenloser, quelloffener QR-Code-Generator ohne Wasserzeichen. Läuft vollständig in deinem Browser – kein Tracking, keine Anmeldung, keine Limits.

License: AGPL-3.0 Next.js No watermark Listed on mcpservers.org

Die meisten Online-QR-Generatoren locken dich mit „kostenlos“ und fügen dann ein Wasserzeichen hinzu, begrenzen deine Download-Größe, verstecken den Vektor-Export hinter einer Bezahlschranke oder leiten deinen Code über ihre Server, sodass er stirbt, sobald du aufhörst zu zahlen. Ein QR-Code ist nur ein offener Standard (ISO/IEC 18004), dessen Erzeugung nichts kostet. OpenQR hält daran fest.

Dieses Repository ist das grundlegende Generator-Tool – die quelloffene Referenzimplementierung. Es ist bewusst klein gehalten und leicht zu forken.

Wenn OpenQR für dich nützlich ist, hilft ein Stern auf dem Repository anderen Leuten, es zu finden. Das ist die ganze Bitte.

Gehostete Version: kostenlose API, MCP-Server und bearbeitbare Codes

Alles in diesem Repo ist und bleibt kostenlos, ohne Wasserzeichen und ohne Ablauf. Der gehostete Build unter openqr.uk fügt eine optionale Kontoschicht für Leute hinzu, die bearbeitbare Codes und Automatisierung möchten:

  • Dynamische / bearbeitbare QR-Codes mit Scan-Analysen. Ändere das Ziel, nachdem du es gedruckt hast. 1 kostenlos auf einem kostenlosen Konto (7 Tage Scans nach Land); 25 bearbeitbare Codes bei Pro für 9 £/Monat oder 90 £/Jahr, was außerdem ein 90-Tage-Fenster für Scan-Analysen sowie Stadt- und Regionsdetails, Geräte- und Referrer-Aufschlüsselungen mit CSV-Export, eine eigene Subdomain und passwortgeschützte Codes freischaltet. Bestehende Abonnenten behalten ihren aktuellen Plan und Preis.
  • Kostenlose REST-API. Generiere Codes und verwalte dynamische Codes programmatisch. OpenAPI-Spezifikation unter /openapi.json; interaktive Dokumentation unter openqr.uk/api.
  • Gehosteter MCP-Server unter https://openqr.uk/mcp (Streamable HTTP). Generiere und verwalte QR-Codes direkt von Claude, Cursor oder einem beliebigen MCP-Client. Gelistet im offiziellen MCP-Registry. Remote-fähige Clients verbinden sich direkt mit dieser URL; stdio-only-Clients können mit npx -y @open-qr/mcp und OPENQR_API_KEY eine Brücke dorthin herstellen (Details).

Der statische Generator in diesem Repository ruft davon nie etwas auf. Er bleibt zu 100 % clientseitig (siehe Datenschutz), und nichts davon ist erforderlich, um den Generator zu nutzen oder selbst zu hosten.

Einen MCP-Client verbinden

Hole dir einen kostenlosen Schlüssel unter openqr.uk/api und richte dann deinen Client mit dem Schlüssel als Auth-Header auf den Server aus.

Claude Code:

claude mcp add --transport http openqr https://openqr.uk/mcp \
  --header "Authorization: Bearer oqr_YOUR_KEY"

Cursor (~/.cursor/mcp.json) und jeder andere Client, der Streamable HTTP spricht:

{
  "mcpServers": {
    "openqr": {
      "url": "https://openqr.uk/mcp",
      "headers": {
        "Authorization": "Bearer oqr_YOUR_KEY"
      }
    }
  }
}

Tools

Der gehostete MCP-Server unter https://openqr.uk/mcp stellt diese Tools bereit (führe tools/list für den aktuellen Satz aus). Jedes Tool erfordert einen kostenlosen API-Schlüssel – erstelle einen unter openqr.uk/api und übergib ihn als Authorization: Bearer oqr_... bei der MCP-Verbindung.

ToolWas es tut
generate_qrGeneriere einen statischen QR-Code aus beliebigem Text oder einer URL. Gibt ein PNG-Bild oder SVG-Markup zurück.
create_dynamic_qrErstelle einen bearbeitbaren QR-Code, dessen Ziel du später ohne Neudruck ändern kannst.
update_dynamic_qrÄndere Ziel, Beschriftung, benutzerdefinierten Kurzlink, Tags oder Ordner eines dynamischen Codes.
get_dynamic_qrHole die vollständigen Details eines Codes: Ziel, Kurzlink, Beschriftung, Typ, Tags, Ordner, Status, Erstellungsdatum.
get_scansScan-Statistiken für einen dynamischen Code.
list_dynamic_qrListe deine dynamischen Codes mit ID, Kurz-URL, Ziel, Beschriftung und Status auf.
delete_dynamic_qrLösche einen dynamischen Code dauerhaft. Sein Kurzlink funktioniert nicht mehr.
bulk_create_dynamic_qrErstelle bis zu 200 dynamische Codes auf einmal.
list_foldersListe deine Ordner auf.
create_folderErstelle einen Ordner, um Codes zu organisieren.
delete_folderLösche einen Ordner. Seine Codes werden nicht gelöscht, sondern nur aus dem Ordner entfernt.
list_themesListe gespeicherte Stil-Designs auf. Wende eines an, indem du seine ID oder seinen Namen als theme übergibst.
create_themeSpeichere ein wiederverwendbares Stil-Design (Farben, Punkt- und Eckstile).
delete_themeLösche ein gespeichertes Design. Codes, die bereits damit gestaltet wurden, behalten ihr Aussehen.
get_subdomainZeige die eigene Subdomain auf dem Konto an und ob sie gesperrt ist.
set_subdomainBeanspruche oder ändere die eigene Subdomain, sodass Codes auch unter {name}.oqr.to aufgelöst werden. Nur Pro.
clear_subdomainGib die eigene Subdomain frei. Codes bleiben über den normalen Kurzlink live.

Es stellt außerdem 5 Ressourcen und 4 Prompts bereit:

  • Ressourcen sind integrierte QR-Stil-Voreinstellungen unter openqr://preset/classic, /teal, /high-contrast, /dots und /classy. Lies eine und übergib ihren Stil an create_theme.
  • Prompts sind create_tracked_qr, bulk_qr_for_print, brand_a_qr und qr_scan_report.

Funktionen

  • Keine Wasserzeichen, keine Größenlimits, keine Anmeldung – jede Funktion ist kostenlos
  • Privat by design – Codes werden vollständig in deinem Browser generiert; der Inhalt berührt nie einen Server
  • Überall exportieren – PNG / WebP bis 4096px, plus echtes Vektor-SVG und PDF
  • Volle Gestaltung – Farben, Verläufe, Punkt- und Eckstile, Logo-Einbettung, „Scan me“-Rahmen
  • Intelligente Eingabe – füge einen Link oder Text ein und der Typ wird automatisch erkannt
  • Umfangreiche Inhalte – URL, Text, E-Mail, Telefon, SMS, WhatsApp, Wi-Fi und ein kartenbasierter Standortwähler
  • Ein-Klick-Kopieren, teilbare Design-Links, hell/dunkel, responsiv, tastaturzugänglich

Schnellstart

pnpm install
pnpm dev        # http://localhost:3011

Build & Selbsthosting

pnpm build
pnpm start      # serves on :3011 (standalone output)

Es ist eine Standard-Next.js-App – hoste sie überall (einen VPS, einen Raspberry Pi, Cloudflare, hinter einem beliebigen Reverse-Proxy). Sie benötigt keine Umgebungsvariablen, keine Datenbank, keine Geheimnisse zum Ausführen. Die Dev/Start-Skripte oben verwenden Port 3011; das Docker-Image unten bedient Port 3000. Die einzige Konfiguration in beiden Fällen ist PORT.

Bereitstellen (Docker-Image)

Ein Multi-Arch-Image (linux/amd64, linux/arm64) wird bei jedem Release-Tag auf GHCR veröffentlicht:

docker run -d --name openqr --restart unless-stopped -p 3000:3000 ghcr.io/open-qr/openqr:latest

Oder mit docker-compose.yml:

docker compose up -d          # update later: docker compose pull && docker compose up -d

Pinne in der Produktion eine Versions-Tag an (ghcr.io/open-qr/openqr:1.0.1); latest bewegt sich mit jedem Release. Der Container ist ein vorgebauter, nicht-root-Standalone-Server mit Healthcheck und enthält LICENSE und NOTICE im Image.

Ein-Klick-Bereitstellungen

HostLinkHinweise
DigitalOcean App Platform1-Klick-ButtonLiest .do/deploy.template.yaml; kleinste Instanz, Port 3000
RenderBlueprint-ButtonLiest render.yaml; setzt eine kostenpflichtige Instanz voraus (Renders kostenloser Tarif schläft)
KoyebStellt aus dem Image bereitBeliebiges öffentliches ghcr.io/open-qr/openqr-Tag, kein Repo-Build

Die Bereitstellung über eine dieser Optionen fügt keine Bedingungen über AGPL-3.0 hinaus hinzu: Die Quelle ist dieses Repository, und das Image enthält die Lizenz und Hinweise zu Drittanbietern.

Einbettung

Die <Generator/>-Komponente ist eigenständig und konfigurierbar:

import { Generator } from "@/components/generator/generator";

// Full page (default OpenQR logo header):
<Generator />

// Embedded widget, your own branding, no default header:
<Generator embedded header={<MyLogo />} />

// Inject your own post-download call-to-action:
<Generator renderSuccess={(variant) => <MySupportCluster variant={variant} />} />

Das Tool liefert null Analytics. Wenn du anonyme UI-Ereignisse möchtest (z. B. welches Exportformat verwendet wurde – niemals den QR-Inhalt), injiziere einen Handler:

import { setTrackHandler } from "@/lib/analytics";
setTrackHandler((action, name, category) => myAnalytics.track(category, action, name));

Datenschutz

Die QR-Generierung erfolgt zu 100 % in deinem Browser. Die einzigen optionalen ausgehenden Aufrufe befinden sich im Standort-Tool: Kartendaten von CARTO und Adressabfragen über OpenStreetMaps Nominatim. Sonst verlässt nichts das Gerät.

Technologie-Stack

Next.js 16 (App Router) · React 19 · TypeScript (streng) · Tailwind v4 · qr-code-styling · Leaflet · pnpm.

Mitwirken

Siehe CONTRIBUTING.md. Halte es einfach, zugänglich, clientseitig und kostenlos – keine Funktion sollte jemals eine Zahlung erfordern, um ein Wasserzeichen zu entfernen oder ein Format freizuschalten.

Lizenz

AGPL-3.0 © 2026 Sam Moreton.

Du kannst OpenQR unter der AGPL-3.0 frei nutzen, studieren, modifizieren, selbst hosten und weiterverbreiten. Wenn du eine modifizierte Version als Netzwerkdienst betreibst, verlangt die AGPL, dass du deinen Quellcode unter derselben Lizenz verfügbar machst. Wenn das nicht zu deinem Anwendungsfall passt, ist eine kommerzielle Lizenz erhältlich – siehe NOTICE.