关于 OpenQR
OpenQR 提供浏览器端 QR 码生成器,并通过托管服务扩展动态 QR 码、扫描分析与自动化能力,适合个人及需要程序化管理 QR 码的团队。
主要功能
- 01生成静态 QR 码并导出 PNG、SVG、PDF
- 02创建和编辑动态 QR 码
- 03查看动态码扫描统计
- 04批量创建最多 200 个动态码
- 05管理文件夹与样式主题
适用场景
- 01在浏览器中制作并导出 QR 码
- 02打印后更改 QR 码的目标地址
- 03批量创建并整理动态 QR 码
- 04通过 API 或 MCP 客户端自动化管理 QR 码
MCP 相关
托管 MCP 服务位于 `https://openqr.uk/mcp`,向客户端提供 QR 码生成、动态码管理及扫描统计等工具,并提供 5 个资源和 4 个提示词。所有工具都需要免费的 API key。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://openqr.uk/mcpclaude mcp add --transport http uk-openqr-qr https://openqr.uk/mcp{"mcpServers":{"uk-openqr-qr":{"type":"http","url":"https://openqr.uk/mcp"}}}在 Cursor 中打开{"servers":{"uk-openqr-qr":{"type":"http","url":"https://openqr.uk/mcp"}}}在 VS Code 中打开{"mcpServers":{"uk-openqr-qr":{"type":"http","url":"https://openqr.uk/mcp"}}}{"mcpServers":{"uk-openqr-qr":{"serverUrl":"https://openqr.uk/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
https://openqr.uk/mcp需要授权工具
17| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| data | string | 是 | 要编码的内容(URL 或文本)。 |
| format | enum | 否 | 输出格式(默认值为 png)。png | svg |
| size | number | 否 | 像素尺寸,范围为 64–2048(默认值为 512)。 |
| theme | string | 否 | 已保存的主题 ID 或名称。应用主题的颜色(SVG);动态码会应用完整样式。 |
详细介绍
OpenQR
免费、开源、无水印的二维码生成器。 完全在浏览器中运行——无跟踪、无需注册、没有限制。
大多数在线二维码生成器先用“免费”吸引你,然后添加水印、限制下载尺寸、将矢量导出设为付费功能,或者把你的二维码通过他们的服务处理,这样一旦你停止付费,二维码就无法使用。二维码只是一种开放标准(ISO/IEC 18004),生成它不需要任何费用。OpenQR 让这一切始终如此。
此代码库是基础生成器工具——开源参考实现。它刻意保持精简,便于分叉。
如果 OpenQR 对你有用,请为代码库点个星,帮助更多人发现它。这就是我们唯一的请求。
托管版本:免费 API、MCP 服务和可编辑二维码
此代码库中的所有内容都是且始终免费、无水印且永不过期。托管版本 openqr.uk 为想要可编辑二维码和自动化功能的用户提供了一个可选账户层:
- 动态/可编辑二维码,带有扫描分析功能。打印后仍可更改目标地址。免费账户可使用 1 个免费二维码(可查看 7 天内按国家/地区划分的扫描数据);Pro 版每月 £9 或每年 £90,可使用 25 个可编辑二维码,并解锁 90 天扫描分析时间范围,以及城镇和地区详情、设备和引荐来源细分数据及 CSV 导出、品牌子域名和密码保护二维码。 现有订阅用户保留当前套餐和价格。
- 免费 REST API。 以编程方式生成二维码并管理动态二维码。OpenAPI 规范见
/openapi.json;交互式文档见 openqr.uk/api。 - 位于
https://openqr.uk/mcp的托管 MCP 服务(Streamable HTTP)。 可直接通过 Claude、Cursor 或任何 MCP 客户端生成和管理二维码。已收录于 官方 MCP Registry。 支持远程连接的客户端可直接连接该 URL;仅支持 stdio 的客户端可使用npx -y @open-qr/mcp桥接,并设置OPENQR_API_KEY(详情)。
此代码库中的静态生成器不会调用上述任何服务。它始终完全在客户端运行(参见隐私),使用或自托管生成器也不需要这些服务。
连接 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"
}
}
}
}
工具
托管的 MCP 服务 https://openqr.uk/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、Raspberry Pi、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 Platform | 一键部署按钮 | 读取 .do/deploy.template.yaml;使用最小规格实例,端口为 3000 |
| Render | Blueprint 按钮 | 读取 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 事件(例如使用了哪种导出格式——绝不收集 QR 内容),可以注入一个处理程序:
import { setTrackHandler } from "@/lib/analytics";
setTrackHandler((action, name, category) => myAnalytics.track(category, action, name));
隐私
QR 码完全在浏览器中生成。唯一可选的对外请求来自 Location 工具:从 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。
你可以根据 AGPL-3.0 自由使用、研究、修改、可自托管并再分发 OpenQR。如果你将修改后的版本作为网络服务运行,AGPL 要求你以相同许可证公开源代码。如果这不符合你的使用场景,可以获取商业许可证——请参阅 NOTICE。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。