OpenQR

官方

生成二维码,并通过托管的MCP服务器(17个工具)和免费REST API管理动态(可编辑)二维码,附带扫描分析功能。

你可以用 OpenQR MCP 做什么?

  • 生成静态二维码 — 通过任意文本或URL请求二维码;通过 generate_qr 获取PNG或SVG输出。
  • 创建和管理动态二维码 — 使用 create_dynamic_qr、update_dynamic_qr 和 delete_dynamic_qr 构建可编辑的二维码、更改目标地址、列出或删除它们。
  • 跟踪扫描分析 — 通过 get_scans 请求动态二维码的扫描统计信息,以查看其表现。
  • 使用文件夹和主题进行组织 — 使用 create_folder 和 create_theme 创建文件夹和可复用的样式预设,以保持二维码整洁并体现品牌风格。
  • 批量生成用于印刷活动 — 使用 bulk_create_dynamic_qr 一次创建多达200个动态二维码,适用于大规模项目。

文档

OpenQR

免费、开源、无水印的二维码生成器。 完全在浏览器中运行——无追踪、无需注册、无限制。

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

大多数在线二维码生成器以“免费”为诱饵,然后添加水印、限制下载大小、将矢量导出置于付费墙之后,或者通过他们的服务器路由你的代码,使你在停止付费时它就会失效。二维码只是一个开放标准(ISO/IEC 18004),生成它无需任何成本。OpenQR 保持了这一点。

此仓库是基础生成器工具——参考开源实现。它刻意保持小巧且易于分叉。

如果 OpenQR 对你有用,给仓库点个星标可以帮助其他人找到它。这就是全部请求。

托管版本:免费 API、MCP 服务器和可编辑代码

此仓库中的所有内容都是且将保持免费,无水印、无过期。位于 openqr.uk 的托管构建为需要可编辑代码和自动化的人添加了可选账户层:

  • 动态/可编辑二维码,带扫描分析。打印后可以更改目的地。免费账户1 个免费(7 天按国家扫描);Pro 版25 个可编辑代码,每月 £9 或每年 £90,同时解锁 90 天扫描分析窗口,以及城镇和地区详情、设备和引荐来源细分(支持 CSV 导出)、品牌子域名和密码保护代码。现有订阅者保留其当前套餐和价格。
  • 免费 REST API。 以编程方式生成代码和管理动态代码。OpenAPI 规范见 /openapi.json;交互式文档见 openqr.uk/api。
  • 托管 MCP 服务器,位于 https://openqr.uk/mcp(Streamable HTTP)。直接从 Claude、Cursor 或任何 MCP 客户端生成和管理二维码。已列入官方 MCP 注册表。支持远程的客户端直接连接该 URL;仅支持 stdio 的客户端可以通过设置 npx -y @open-qr/mcp 和 OPENQR_API_KEY 桥接(详情)。

此仓库中的静态生成器从不调用上述任何功能。它保持 100% 客户端运行(见隐私),并且使用或自托管生成器均不需要其中任何功能。

连接 MCP 客户端

在 openqr.uk/api 获取免费密钥,然后将客户端指向服务器,并将密钥作为认证头传递。

Claude Code:

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

Cursor(~/.cursor/mcp.json)以及任何其他支持 Streamable HTTP 的客户端:

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

工具

位于 https://openqr.uk/mcp 的托管 MCP 服务器暴露以下工具(运行 tools/list 获取实时列表)。每个工具都需要免费 API 密钥——在 openqr.uk/api 创建一个,并在 MCP 连接上作为 Authorization: Bearer oqr_... 传递。

工具功能
generate_qr从任何文本或 URL 生成静态二维码。返回 PNG 图像或 SVG 标记。
create_dynamic_qr创建可编辑二维码,其目的地可在之后更改而无需重新打印。
update_dynamic_qr更改动态代码的目的地、标签、自定义短链接、标签或文件夹。
get_dynamic_qr获取单个代码的完整详情:目的地、短链接、标签、类型、标签、文件夹、状态、创建日期。
get_scans动态代码的扫描统计。
list_dynamic_qr列出你的动态代码,包含 id、短 URL、目的地、标签和状态。
delete_dynamic_qr永久删除动态代码。其短链接将停止工作。
bulk_create_dynamic_qr一次创建最多 200 个动态代码。
list_folders列出你的文件夹。
create_folder创建文件夹以组织代码。
delete_folder删除文件夹。其中的代码将被取消归档,而非删除。
list_themes列出已保存的样式主题。通过传递其 id 或名称作为 theme 来应用。
create_theme保存可复用的样式主题(颜色、点和角样式)。
delete_theme删除已保存的主题。已使用该主题样式的代码保持其外观。
get_subdomain显示账户上的品牌子域名,以及是否被暂停。
set_subdomain认领或更改品牌子域名,使代码也能在 {name}.oqr.to 解析。仅限 Pro。
clear_subdomain释放品牌子域名。代码在普通短链接上保持活跃。

它还暴露了5 个资源和4 个提示:

  • 资源是内置的二维码样式预设,位于 openqr://preset/classic、/teal、/high-contrast、/dots 和 /classy。读取一个并将其样式传递给 create_theme。
  • 提示是 create_tracked_qr、bulk_qr_for_print、brand_a_qr 和 qr_scan_report。

功能

  • 无水印、无大小限制、无需注册——每项功能均免费
  • 设计上保护隐私——代码完全在浏览器中生成;内容从不接触服务器
  • 随处导出——PNG / WebP 最高 4096px,以及真正的矢量 SVG 和 PDF
  • 完整样式——颜色、渐变、点和角样式、Logo 嵌入、“扫描我”框架
  • 智能输入——粘贴链接或文本,类型自动检测
  • 丰富负载——URL、文本、电子邮件、电话、短信、WhatsApp、Wi-Fi 以及基于地图的位置选择器
  • 一键复制、可分享的设计链接、浅色/深色、响应式、键盘可访问

快速开始

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

构建与自托管

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

这是一个标准的 Next.js 应用——可托管在任何地方(VPS、树莓派、Cloudflare、任何反向代理之后)。运行无需环境变量、无需数据库、无需密钥。上述开发/启动脚本使用端口 3011;下面的 Docker 镜像在 3000 上提供服务。两种方式的唯一配置是 PORT。

部署(Docker 镜像)

一个多架构镜像(linux/amd64、linux/arm64)在每个发布标签时发布到 GHCR:

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

或使用 docker-compose.yml:

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

在生产环境中固定版本标签(ghcr.io/open-qr/openqr:1.0.1);latest 随每个版本移动。该容器是一个预构建的非 root 独立服务器,带有健康检查,并在镜像内携带 LICENSE 和 NOTICE。

一键部署

主机链接备注
DigitalOcean App Platform1 键按钮读取 .do/deploy.template.yaml;最小实例,端口 3000
RenderBlueprint 按钮读取 render.yaml;假定付费实例(Render 的免费层会休眠)
Koyeb从镜像部署任何公共 ghcr.io/open-qr/openqr 标签,无需仓库构建

通过上述任何方式部署都不会增加 AGPL-3.0 之外的条款:源代码即此仓库,镜像携带许可证和第三方声明。

嵌入

<Generator/> 组件是自包含且可配置的:

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} />} />

该工具零分析。如果你想要匿名 UI 事件(例如使用了哪种导出格式——绝不包含二维码内容),注入一个处理器:

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

隐私

二维码生成 100% 在浏览器中完成。唯一可选的出站调用在位置工具中:来自 CARTO 的地图瓦片和通过 OpenStreetMap 的 Nominatim 进行的地址查找。其他内容不会离开设备。

技术栈

Next.js 16(App Router)· React 19 · TypeScript(严格模式)· Tailwind v4 · qr-code-styling · Leaflet · pnpm。

贡献

见 CONTRIBUTING.md。保持简单、可访问、客户端运行且免费——任何功能都不应要求付费才能移除水印或解锁格式。

许可证

AGPL-3.0 © 2026 Sam Moreton。

你可以自由使用、研究、修改、自托管和重新分发 OpenQR,遵循 AGPL-3.0。如果你将修改版本作为网络服务运行,AGPL 要求你在相同许可证下提供源代码。如果这不适合你的用例,可提供商业许可证——见 NOTICE。