QR Code KIT MCP server

Endpoint: https://mcp.v2.qrcodekit.com/mcp · Authentication: Sign in with OAuth

Create dynamic QR codes and short links and retrieve their analytics.

How do I authenticate?

Add the endpoint in your client, start Connect or Sign in, approve the requested scopes, and return to the client. OAuth discovery finds the authorization server; client registration requirements vary by provider. Follow the provider guidance and client setup below.

Authentication and connection guide

Connection specification

Remote endpoint
https://mcp.v2.qrcodekit.com/mcp
Browser access
Not yet measured
Declared MCP transport
Streamable HTTP
Live-validated MCP transport
Streamable HTTP — Observed by the latest catalog validation
Declared authentication
OAuth 2.1
Detected authentication
OAuth 2.1 detected or retained from publisher evidence
Protocol lifecycle
Stateful MCP · 2025-11-25
Authorization server
https://api.v2.qrcodekit.com

Product documentation · Official listing documentation · Official MCP Registry record

Provider guidance

  • The validator completed an unauthenticated MCP handshake. Account data and actions require the publisher-documented sign-in; a public handshake does not establish access to those tools.

More Developer Tools MCP servers · Browse all MCP servers · Test this endpoint in the MCP Playground

Authorization setup

Registration requirements not verified

The OAuth authorization and app-registration requirements for this exact endpoint have not been verified. A compatible client will request authorization, but follow the publisher documentation and do not guess client credentials or callbacks.

Connect it

Live-validated endpoint: https://mcp.v2.qrcodekit.com/mcp · Streamable HTTP. Registration requirements not verified: The OAuth authorization and app-registration requirements for this exact endpoint have not been verified. A compatible client will request authorization, but follow the publisher documentation and do not guess client credentials or callbacks.

Agent prompt for Claude Code or Codex
Add the QR Code KIT MCP server to my MCP client configuration and verify that it works.

What it is: Create dynamic QR codes and short links and retrieve their analytics.
Server URL: https://mcp.v2.qrcodekit.com/mcp
Transport: Streamable HTTP (remote MCP server, no local install).
Authentication: OAuth 2.1. The client opens a browser sign-in on first connect; do not create or store tokens yourself. Registration requirements not verified: The OAuth authorization and app-registration requirements for this exact endpoint have not been verified. A compatible client will request authorization, but follow the publisher documentation and do not guess client credentials or callbacks.
Tools (14, as last observed by mcptest): create_file_upload_session, delete_link, get_link_stats, host_file, list_links, render_file_upload_qr_form, save_app_store_link, save_email_link, save_file_url_qr, save_html_file_qr, save_short_link, save_whatsapp_link, set_link_slug, show_links.
Reference: https://mcptest.io/servers/qrcodekit/

Steps:
1. Work out which MCP client I use (Claude Code, Codex, Cursor, VS Code or another) and add the server under the name "qrcodekit" in that client's MCP configuration, user scope unless I ask otherwise.
   Claude Code: claude mcp add --transport http --scope user 'qrcodekit' 'https://mcp.v2.qrcodekit.com/mcp'
   Other clients: use the setup for that client on the reference page.
2. Never write a credential value into a file that could be committed; reference an environment variable or the client's secret store, and ask me for any value you need.
3. Verify: connect to the server and call tools/list. Confirm the tools above are listed, and report any sign-in step I still have to complete.
MCP client

Claude Code setup

Run in a terminal. This user-scoped entry is available across projects.

claude mcp add --transport http --scope user 'qrcodekit' 'https://mcp.v2.qrcodekit.com/mcp'
  • After adding the server, open Claude Code, run /mcp, select the server, and follow the browser flow to authenticate.

Codex CLI setup

Run in a terminal; Codex stores the entry in ~/.codex/config.toml.

codex mcp add 'qrcodekit' --url 'https://mcp.v2.qrcodekit.com/mcp'
codex mcp login 'qrcodekit'

Cursor setup

Add to .cursor/mcp.json for this project, or ~/.cursor/mcp.json for all projects.

{
  "mcpServers": {
    "qrcodekit": {
      "url": "https://mcp.v2.qrcodekit.com/mcp"
    }
  }
}

VS Code setup

Add to .vscode/mcp.json, or run “MCP: Open User Configuration” for a private user-level entry.

{
  "servers": {
    "qrcodekit": {
      "type": "http",
      "url": "https://mcp.v2.qrcodekit.com/mcp"
    }
  }
}

Claude setup

Add the endpoint above in Claude:

  • Customize > Connectors > Add custom connector
  • Team/Enterprise: Organization settings > Connectors > Add > Custom > Web

Claude Desktop setup

Add the endpoint above in Claude Desktop:

  • Remote: Customize > Connectors (same as claude.ai)
  • Local: Settings > Developer > Edit Config, or Settings > Extensions for .mcpb files
  • ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows), local servers only

ChatGPT setup

Add the endpoint above in ChatGPT:

  • ChatGPT web: Plugins > Add custom MCP server, then configure authentication and accept the risk warning

Windsurf setup

Add the endpoint above in Windsurf:

  • ~/.config/devin/mcp_config.json (%APPDATA%\devin\mcp_config.json on Windows), serverUrl or url
  • Cascade panel > ... > MCPs > Open MCP config file

Gemini CLI setup

Add the endpoint above in Gemini CLI:

  • gemini mcp add --transport http <name> <url>
  • ~/.gemini/settings.json (user) or .gemini/settings.json (project), mcpServers

MCP SDK setup

Add the endpoint above in MCP SDK:

  • Programmatic: new Client(...).connect(new StreamableHTTPClientTransport(url))

Notes for every client

  • Provider guidance: The validator completed an unauthenticated MCP handshake. Account data and actions require the publisher-documented sign-in; a public handshake does not establish access to those tools.

Client compatibility

ClientStatusWhy
Claude CodeSupportedClaude Code supports Streamable HTTP servers and OAuth sign-in.
CodexPartialCodex CLI ignores resources: The server can still connect, but Codex CLI does not consume the advertised resources capability.
CursorSupportedCursor supports Streamable HTTP servers and OAuth sign-in.
VS CodeSupportedVS Code supports Streamable HTTP servers and OAuth sign-in.
ClaudeSupportedClaude supports Streamable HTTP servers and OAuth sign-in.
Claude DesktopSupportedClaude Desktop supports Streamable HTTP servers and OAuth sign-in.
ChatGPTPartialChatGPT ignores resources: The server can still connect, but ChatGPT does not consume the advertised resources capability. Stateful routing needs operational care: ChatGPT can preserve MCP sessions, but the deployment must route a session consistently and retain its state.
WindsurfPartialWindsurf's documentation does not state support for OAuth sign-in.
Gemini CLISupportedGemini CLI supports Streamable HTTP servers and OAuth sign-in.
MCP SDKSupportedMCP SDK supports Streamable HTTP servers and OAuth sign-in.

Computed from this server's validated transport, protocol and authentication against documented client support. Checks the catalog has not observed are not counted.

Similar servers

  • GitHub — GitHub's official hosted MCP server for repository context, issues, pull requests, code search, and development workflows. OAuth 2.1
  • MCP Registry Server — MCP interface for searching and publishing servers through the official Model Context Protocol Registry backend. No authentication
  • GitLab — GitLab's hosted MCP server exposes project, issue, merge-request, pipeline, and repository workflows. OAuth 2.1
  • CircleCI — CircleCI's hosted MCP server helps inspect pipelines, builds, tests, failures, and delivery workflows. OAuth 2.1
  • Sanity — Runs GROQ queries, creates and patches documents, manages releases, and reads schemas in Sanity projects. Uses OAuth by default; Sanity also documents token-based authentication. OAuth 2.1
  • Buildkite — Reads Buildkite pipelines, builds, jobs, logs, artifacts, and test results. This endpoint uses OAuth; headless agents can send an API token to the /direct endpoint. OAuth 2.1

Guides for this server

Watch this server for breaking changes

Share and embed

Maintain QR Code KIT? Embed this badge in your README. It follows the latest catalog validation result and links to this server profile.

mcptest.io: ready

Latest validation evidence

Validation status
Online when last tested
Validation checked at
Oct 26, 2026 at 11:07 AM
Validation detail
Negotiated stateful MCP 2025-11-25 at https://mcp.v2.qrcodekit.com/mcp; detected transport streamable-http; authentication oauth

Tool inventory

What the catalog validator observed on at https://mcp.v2.qrcodekit.com/mcp without credentials. The live server may have changed since; connect in the Playground for the current list.

Tools provided by QR Code KIT 14

Some details were sanitized for public display.

  • create_file_upload_sessionoutputSchema declared

    Widget-only helper: mint a one-time upload session so the file upload form can send the selected file to QRCodeKIT without exposing credentials. Not intended for direct use; prefer 'Upload a File → Get a Link & QR'.

    Input filename: string, mime_type?: any, size_bytes: integer, typology: string
    • filename: stringrequired

      Original filename of the selected file.

    • mime_type?: anyoptional

      MIME type reported by the browser for the selected file.

    • size_bytes: integerrequired

      Size of the selected file in bytes. Must be at most 50 MB.

    • typology: stringrequired

      Use 'file' for an arbitrary file or 'pdf' for a PDF.

  • delete_linkoutputSchema declared

    Move an existing QRCodeKIT link and its QR code to the active account's trash. Use this only when the user asks to delete, remove, or discard a specific link. Reversible from the QRCodeKIT web app. Resolve the exact qr_id before deleting when the target is ambiguous.

    Input qr_id: string
    • qr_id: stringrequired

      Stable QRCodeKIT identifier for the link.

  • get_link_statsoutputSchema declared

    Retrieve analytics for the whole QRCodeKIT account or for one link. Reports total, unique, and repeat visits, unique-visitor ratio, activity over time, and — when the account plan supports advanced analytics — breakdowns by country, city, device, operating system, and browser. Account-wide results also include the number of links and the top links ranked by lifetime visits. Use this when the user asks about QR scans, short-link clicks, campaign performance, audience location, devices, trends, comparisons, or top-performing links. Every visit to the short URL is counted, so link clicks and QR s

    Input end_date?: any, interval?: string, qr?: any, start_date?: any
    • end_date?: anyoptional

      Last day of the stats window (YYYY-MM-DD). Defaults to today.

    • interval?: stringoptional

      Time-series bucket size: 1h, 1d, 1w, or 1M. Use 'auto' (default) to pick a sensible bucket from the range length.

    • qr?: anyoptional

      Optional link to deep-dive into: the QRCodeKIT qr_id, the short-link slug, or (part of) the link title. Omit for account-wide stats.

    • start_date?: anyoptional

      First day of the stats window (YYYY-MM-DD). Defaults to 29 days before end_date.

  • host_fileoutputSchema declared

    Upload and host a local PDF, image, document, spreadsheet, or other file, and get a permanent public short link plus a downloadable dynamic QR code that opens or downloads it. Use this when the user wants to publish or share an attached PDF or file — a PDF menu, brochure, catalog, CV, ticket, presentation, or any document — without a separate file-hosting account. QRCodeKIT copies the attachment to its own asset storage and validates PDFs as real PDF documents. When `qr_id` is provided, replace the hosted file while preserving the existing public URL and printed QR code.

    Input file: any, qr_id?: any, title: string
    • file: anyrequired

      Attached file to host — PDF or any other type — stored as a QRCodeKIT asset before creating the link.

    • qr_id?: anyoptional

      Optional QRCodeKIT identifier for updating an existing link instead of creating one.

    • title: stringrequired

      Display title for the link.

  • list_linksoutputSchema declared

    Return the account's QRCodeKIT links as structured data: title, destination or hosted content, short URL, slug, QR image download URLs, timestamps, and lifetime visits. Lifetime visits combine short-link clicks and QR scans. Use this when the assistant needs to search, filter by link type, compare, inspect, or process existing links programmatically. Use show_links instead when the user asks to see, show, display, preview, or download their links or QR codes.

    Input limit?: integer, typology?: string
    • limit?: integeroptional

      Maximum number of links to return from the active account.

    • typology?: stringoptional

      Link typology internal name to filter by. Use 'all' or omit this field to return all typologies.

  • render_file_upload_qr_formoutputSchema declared

    Open an interactive form for the user to upload a file or PDF from their device and get a permanent short link plus a downloadable dynamic QR code. Use this on Claude and other MCP hosts that cannot pass an attached file directly, whenever the user wants to share or host a PDF, menu, brochure, CV, ticket, or other file by link or QR. The form uploads the file to QRCodeKIT and saves the link; when `qr_id` is provided, it replaces the file of an existing link while preserving its short URL and QR code.

    Input qr_id?: any, title?: any, typology?: string
    • qr_id?: anyoptional

      Optional QRCodeKIT identifier when updating an existing QR instead of creating one.

    • title?: anyoptional

      QR title used when the upload is saved; the form has no title input. Always pass a sensible title from the conversation; when updating an existing QR, pass that QR's current title. Defaults to the uploaded filename.

    • typology?: stringoptional

      Initial file typology hint for the form heading. The final typology is inferred from the uploaded file's extension, so this is only a default.

  • save_app_store_linkoutputSchema declared

    Create a device-routing smart link and dynamic QR code for a mobile app: the same short link sends iPhone users to the Apple App Store and Android users to Google Play. Use this for 'download our app' campaigns in print, ads, websites, or link-in-bio pages. An app name and at least one store URL (iOS or Android) are required; an icon URL is optional. When `qr_id` is provided, update the app destinations while preserving the existing short link and QR code.

    Input android_url?: any, app_name: string, image_url?: any, ios_url?: any, qr_id?: any
    • android_url?: anyoptional

      Optional Google Play URL, such as [REDACTED URI]

    • app_name: stringrequired

      App name shown on the App Store QR landing page.

    • image_url?: anyoptional

      Optional app icon image URL.

    • ios_url?: anyoptional

      Optional Apple App Store URL, such as [REDACTED URI]

    • qr_id?: anyoptional

      Optional QRCodeKIT identifier for updating an existing QR instead of creating one.

  • save_email_linkoutputSchema declared

    Create a short link and dynamic QR code that opens a pre-filled email with a recipient, required subject, optional body, and optional CC recipients. Use this for 'contact us' flows, support or quote requests, RSVPs, feedback, reservations, or other email calls to action. When `qr_id` is provided, update the email details while preserving the existing short link and QR code.

    Input body?: string, cc?: any, email_address: string, qr_id?: any, subject: string, title: string
    • body?: stringoptional

      Optional pre-filled email body.

    • cc?: anyoptional

      Optional CC email addresses.

    • email_address: stringrequired

      Recipient email address for the email QR.

    • qr_id?: anyoptional

      Optional QRCodeKIT identifier for updating an existing QR instead of creating one.

    • subject: stringrequired

      Pre-filled email subject.

    • title: stringrequired

      Display title for the link.

  • save_file_url_qroutputSchema declared

    Create or update a permanent short link and dynamic QR code for a file or PDF that is already hosted at a public URL. Use this as a fallback when the host cannot pass an attached file; prefer host_file for local or host-native attachments. When `qr_id` is provided, update the file destination while preserving the existing short link and QR code. Also used as the finalizer step by the in-chat upload form.

    Input asset_iri?: any, file_url: string, original_filename?: any, qr_id?: any, title: string, typology: string
    • asset_iri?: anyoptional

      Optional QRCodeKIT asset IRI returned by an earlier upload.

    • file_url: stringrequired

      Already-hosted public file URL, preferably a QRCodeKIT asset URL.

    • original_filename?: anyoptional

      Original filename to show for the download. Defaults to 'file'.

    • qr_id?: anyoptional

      Optional QRCodeKIT identifier for updating an existing QR instead of creating one.

    • title: stringrequired

      Display title for the QR.

    • typology: stringrequired

      Use 'file' for an arbitrary file or 'pdf' for a PDF.

  • save_html_file_qroutputSchema declared

    Publish a single-page static HTML site live on the web and get a permanent public URL and shareable link, plus a downloadable dynamic QR code that opens it. Use this when the user asks to create, publish, deploy, host, share, or put online a landing page, one-pager, business page, digital menu, event page, portfolio, product page, campaign page, or microsite — especially when they do not have a website or hosting provider. No separate hosting account, build step, or deployment token is required. Accepts one complete HTML document up to 6 MB: a single file, not a multi-page site. When `qr_id` i

    Input html: string, qr_id?: any, title: string
    • html: stringrequired

      Complete HTML document for a static page, such as an AI-generated landing page or microsite, to publish at a public QRCodeKIT-hosted URL and share through the returned shortlink. Maximum size is 6 MB when encoded as UTF-8.

    • qr_id?: anyoptional

      Optional QRCodeKIT identifier for updating an existing hosted HTML page in place while preserving the same public URL and QR code.

    • title: stringrequired

      Human-readable title for the hosted page.

  • save_short_linkoutputSchema declared

    Create a branded short link and dynamic QR code for an existing website URL, with an optional custom slug (e.g. qrkit.co/summer-sale). Use this when the user already has a destination URL and wants to shorten or brand it, track visits, or get a QR code for it: every link includes a scannable QR code that opens the same destination, and clicks and scans are tracked together in one analytics dashboard. When `qr_id` is provided, change the destination while preserving the existing short URL and printed QR code. Use set_link_slug instead when the user wants to rename the slug of an existing link.

    Input destination_url: string, qr_id?: any, short_code?: any, title: string
    • destination_url: stringrequired

      Destination URL the short link and QR code redirect to.

    • qr_id?: anyoptional

      Optional QRCodeKIT identifier for updating an existing link instead of creating one.

    • short_code?: anyoptional

      Optional custom slug for the new short link, such as 'summer-sale' — the branded part of the short URL (qrkit.co/summer-sale). Letters, digits, dots, hyphens, and underscores only; must be unique within the domain. Only valid when creating; use set_link_slug to rename an existing link.

    • title: stringrequired

      Display title for the link.

  • save_whatsapp_linkoutputSchema declared

    Create a short link and dynamic QR code that opens a WhatsApp conversation with a phone number in international format and an optional pre-filled message. Use this for 'chat with us' or contact buttons, customer support, reservations, sales enquiries, printed signage, business cards, or link-in-bio pages. When `qr_id` is provided, update the phone number or message while preserving the existing short link and QR code.

    Input message?: string, phone_number: string, qr_id?: any, title: string
    • message?: stringoptional

      Optional pre-filled WhatsApp message.

    • phone_number: stringrequired

      WhatsApp phone number with international country code, such as +12025550123.

    • qr_id?: anyoptional

      Optional QRCodeKIT identifier for updating an existing QR instead of creating one.

    • title: stringrequired

      Display title for the link.

  • set_link_slugoutputSchema declared

    Change the custom slug (short code) of an existing QRCodeKIT short link, for any link type — e.g. turn qrkit.co/x7Ab9c into qrkit.co/summer-sale. The link keeps its identity and analytics. Use this only when the user explicitly wants to rename the short URL; to change a destination, use the corresponding save tool instead. WARNING: warn the user that the previous short URL stops redirecting and the QR image is regenerated, so any printed or shared copies of the old QR must be replaced.

    Input qr_id: string, short_code: string
    • qr_id: stringrequired

      Stable QRCodeKIT identifier for the link.

    • short_code: stringrequired

      New slug for the short link, such as 'my-campaign-2026'. Letters, digits, dots, hyphens, and underscores only. Must be unique within the short-link domain.

  • show_linksoutputSchema declared

    Display the account's QRCodeKIT links in an interactive gallery: short URL, QR image, combined click-and-scan totals, and download actions. Available QR assets may include SVG, PNG, PDF, and EPS. Use this when the user asks to see, show, preview, display, or download their links or QR codes. When qr_id is provided, show only that link; otherwise show links from the active account.

    Input limit?: integer, qr_id?: any
    • limit?: integeroptional

      Maximum number of links to render when qr_id is absent.

    • qr_id?: anyoptional

      Optional QRCodeKIT identifier for showing a single link instead of the gallery list.

Resources 3

Some details were sanitized for public display.

  • file_upload_qr_form

    Upload a File or PDF — Interactive form to upload a file or PDF and get a short link plus a downloadable QR code.

  • link_gallery

    Links & QR Codes — Interactive gallery for viewing short links, QR images, and visit totals (clicks + scans).

  • link_stats

    Link & QR Analytics — Interactive dashboard with link analytics (clicks + scans combined): totals, unique visitors, a time-series chart, and country/city/device/OS/browser breakdowns.