OpenQR
官方生成QR碼,並透過託管的MCP伺服器(17個工具)和免費REST API管理動態(可編輯)QR碼,附掃描分析功能。
你可以用 OpenQR MCP 做什麼?
- 產生靜態 QR Code — 從任何文字或 URL 要求 QR Code;透過
generate_qr取得 PNG 或 SVG 輸出。 - 建立與管理動態 QR Code — 使用
create_dynamic_qr、update_dynamic_qr和delete_dynamic_qr建立可編輯的 Code、變更目的地、列出或刪除。 - 追蹤掃描分析 — 透過
get_scans要求動態 Code 的掃描統計資料,以查看效能。 - 使用資料夾與主題整理 — 使用
create_folder和create_theme建立資料夾與可重複使用的樣式預設,讓 Code 保持整齊且具品牌感。 - 大量產生以用於印刷活動 — 使用
bulk_create_dynamic_qr一次建立最多 200 個動態 Code,適用於大型專案。
文件
OpenQR
免費、開源、無浮水印的 QR Code 產生器。 完全在您的瀏覽器中執行——無追蹤、無需註冊、無限制。
大多數線上 QR Code 產生器以「免費」為誘餌,然後加上浮水印、限制下載尺寸、將向量匯出功能鎖在付費牆後,或將您的條碼經由他們的伺服器傳輸,讓您在停止付費時條碼就失效。QR Code 只是一種開放標準(ISO/IEC 18004),產生它不需要任何成本。OpenQR 讓它保持如此。
這個儲存庫是基礎產生器工具——參考用的開源實作。它刻意保持小巧且易於分支。
如果 OpenQR 對您有幫助,在儲存庫上按一顆星可以幫助其他人找到它。這就是唯一的請求。
託管版本:免費 API、MCP 伺服器與可編輯條碼
此儲存庫中的所有內容都保持免費,無浮水印且無期限。位於 openqr.uk 的託管版本為需要可編輯條碼與自動化的使用者增加了選用的帳戶層:
- 動態/可編輯 QR Code,附掃描分析。列印後仍可變更目的地。免費帳戶可享有 1 個免費(7 天依國家劃分的掃描資料);Pro 方案每月 £9 或每年 £90 可享有 25 個可編輯條碼,同時解鎖 90 天掃描分析視窗,以及城鎮與地區詳細資料、裝置與參照來源分析(含 CSV 匯出)、品牌子網域和密碼保護條碼。現有訂閱者保留目前的方案與價格。
- 免費 REST API。 以程式化方式產生條碼與管理動態條碼。OpenAPI 規格位於
/openapi.json;互動式文件位於 openqr.uk/api。 - 託管 MCP 伺服器位於
https://openqr.uk/mcp(Streamable HTTP)。可直接從 Claude、Cursor 或任何 MCP 用戶端產生與管理 QR Code。已列於官方 MCP Registry。支援遠端的用戶端可直接連線至該 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 產生靜態 QR Code。回傳 PNG 圖片或 SVG 標記。 |
create_dynamic_qr | 建立可編輯的 QR Code,日後可變更目的地而無需重新列印。 |
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的內建 QR 樣式預設。讀取一個並將其樣式傳遞給create_theme。 - 提示為
create_tracked_qr、bulk_qr_for_print、brand_a_qr和qr_scan_report。
功能
- 無浮水印、無尺寸限制、無需註冊——每個功能都免費
- 設計上注重隱私——條碼完全在您的瀏覽器中產生;內容絕不會觸及伺服器
- 隨處匯出——PNG/WebP 最高 4096px,加上真正的向量 SVG 和 PDF
- 完整樣式——顏色、漸層、點與角落樣式、標誌嵌入、「掃描我」外框
- 智慧輸入——貼上連結或文字,類型會自動偵測
- 豐富的內容類型——URL、文字、電子郵件、電話、SMS、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 | 1-click 按鈕 | 讀取 .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 Code 產生 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。
您可以在 AGPL-3.0 下自由使用、研究、修改、自行託管和重新散布 OpenQR。如果您以網路服務形式執行修改版本,AGPL 要求您以相同授權提供原始碼。如果這不適合您的使用情境,可取得商業授權——請參閱 NOTICE。