Dành cho nhà phát triển
API tạo mã QR miễn phí và máy chủ MCP
Tạo mã QR và mã chuyển khoản VietQR từ website, bảng tính, quy trình tự động hay trợ lý AI của bạn. Không cần khoá API, không đăng ký, không watermark — và không lưu bất cứ dữ liệu nào bạn gửi.
- REST · JSON
- OpenAPI 3.1
- MCP (Streamable HTTP)
- CORS
- Không cần khoá API
Bắt đầu nhanh
URL gốc: https://scan.io.vn/api/v1.
Mọi tuỳ chọn của công cụ tạo mã đều là tham số trên đường dẫn, nên chính URL là tấm ảnh — dán vào trình duyệt để thử ngay.
<img src="https://scan.io.vn/api/v1/qr?data=https%3A%2F%2Fexample.com&size=300" alt="QR code">
curl -o wifi.png "https://scan.io.vn/api/v1/qr?type=wifi&ssid=Cafe%20Sua%20Da&password=12345678"
const res = await fetch('https://scan.io.vn/api/v1/qr', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
type: 'vcard', first_name: 'An', last_name: 'Nguyen',
phone: '+84901234567', email: '[email protected]',
response: 'json',
}),
});
const { data } = await res.json();
document.querySelector('#qr').src = data.image; // data: URI
import requests
r = requests.get("https://scan.io.vn/api/v1/vietqr", params={
"bank": "VCB", "account": "0123456789",
"amount": 150000, "note": "Order 1024",
})
r.raise_for_status()
open("vietqr.png", "wb").write(r.content)
$svg = file_get_contents('https://scan.io.vn/api/v1/qr?' . http_build_query([
'data' => 'https://example.com',
'format' => 'svg',
'module_shape' => 'rounded',
]));
Dùng được ở mọi nơi
Nhờ đường dẫn HTTPS thuần và máy chủ MCP theo chuẩn, bộ máy tạo mã của website có mặt trên mọi nền tảng bạn đang dùng.
- Website & email Đặt URL của API thẳng vào thẻ <img>: không cần JavaScript, không cần SDK, dùng được trong bản tin email và trang CMS (WordPress, Shopify, Haravan…).
- Google Sheets & Excel Một công thức IMAGE() biến cả cột link, mã sản phẩm hay mã vé thành cột mã QR.
- Tự động hoá không cần code Gọi từ n8n, Make, Zapier hoặc Power Automate bằng một bước HTTP, hoặc nhập tệp OpenAPI.
- Trợ lý AI (MCP) Kết nối Claude, ChatGPT, Cursor, VS Code Copilot, Windsurf hoặc Gemini CLI rồi chỉ việc yêu cầu tạo mã QR trong chat.
- GPT & AI agent Nhập đặc tả OpenAPI 3.1 làm action cho Custom GPT hoặc công cụ cho AI agent; mọi thao tác và tham số đều được mô tả đầy đủ.
- Mọi ngôn ngữ lập trình HTTPS thuần, lỗi dạng JSON và bật sẵn CORS: JavaScript, Python, PHP, Go, Java, Swift, Kotlin, Dart…
Google Sheets / Excel 365: mỗi dòng một mã QR
Đặt nội dung ở cột A và công thức này ở cột B, rồi kéo xuống:
=IMAGE("https://scan.io.vn/api/v1/qr?size=256&data="&ENCODEURL(A2))
n8n, Make, Zapier, Power Automate, Custom GPT
Dùng bước HTTP request với các đường dẫn trên trang này, hoặc nhập tài liệu OpenAPI để có sẵn mô tả mọi thao tác và tham số: https://scan.io.vn/api/v1/openapi.json
GET POST /qr
Tạo mã QR tĩnh (không bao giờ hết hạn). Chọn loại nội dung và điền các trường của nó — API tự ghi đúng định dạng chuẩn — hoặc gửi dữ liệu thô. GET nhận tham số trên đường dẫn; POST nhận cùng các trường dưới dạng JSON, form hoặc multipart. Để có logo ở giữa, truyền logo_url (ảnh PNG, JPG, GIF hoặc WebP công khai qua https, tối đa 2 MB), hoặc tải lên qua trường logo của POST multipart.
Nội dung
| Tham số | Giá trị | Mô tả |
|---|---|---|
| type | link | text | wifi | vcard | email | sms | phone | calendar | geo | Loại nội dung. Bỏ trống để mã hoá nguyên văn `data`. |
| data | string | Nội dung thô cần mã hoá (văn bản, hoặc link khi type=link). Bắt buộc khi không dùng loại nội dung có cấu trúc. |
| url | string | Link cần mở (type=link) hoặc website trên danh thiếp (type=vcard). type=link type=vcard |
| ssid | string | Tên mạng Wi-Fi. type=wifi |
| password | string | Mật khẩu Wi-Fi (bỏ qua khi security=nopass). type=wifi |
| security |
WPA | WEP | nopass
Mặc định: WPA
|
Kiểu bảo mật Wi-Fi: WPA (gồm cả WPA2/WPA3), WEP hoặc nopass. type=wifi |
| hidden |
boolean
Mặc định: false
|
Mạng ẩn, không phát tên. type=wifi |
| first_name | string | Tên (bắt buộc có tên hoặc họ). type=vcard |
| last_name | string | Họ. type=vcard |
| org | string | Công ty hoặc tổ chức. type=vcard |
| string | Địa chỉ email trên danh thiếp. type=vcard | |
| phone | string | Số điện thoại. type=vcard type=sms type=phone |
| to | string | Địa chỉ email người nhận. type=email |
| subject | string | Tiêu đề email. type=email |
| body | string | Nội dung email. type=email |
| message | string | Nội dung tin nhắn soạn sẵn. type=sms |
| title | string | Tên sự kiện. type=calendar |
| start | string | Thời gian bắt đầu, giờ địa phương (YYYY-MM-DDTHH:MM). type=calendar |
| end | string | Thời gian kết thúc, giờ địa phương. type=calendar |
| location | string | Địa điểm sự kiện. type=calendar |
| description | string | Mô tả sự kiện. type=calendar |
| lat | -90–90 | Vĩ độ. type=geo |
| lng | -180–180 | Kinh độ. type=geo |
Ví dụ theo loại nội dung
Thiết kế
| Tham số | Giá trị | Mô tả |
|---|---|---|
| format |
svg | png | webp
Mặc định: png
|
Định dạng ảnh. |
| size |
128–2048
Mặc định: 512
|
Chiều rộng và cao tính bằng pixel, gồm cả viền. |
| border |
0 | 2 | 4 | 6
Mặc định: 4
|
Viền trống quanh mã: 0 không viền, 2 mỏng, 4 vừa, 6 dày. |
| color |
string
Mặc định: #000000
|
Màu các ô mã (hex). |
| background |
string
Mặc định: #ffffff
|
Màu nền (hex). |
| eye_color | string | Màu ba mắt ở góc (hex). Mặc định trùng màu ô mã. |
| module_shape |
square | rounded | dots
Mặc định: square
|
Hình dạng các ô mã. |
| eye_frame_shape |
square | rounded | circle
Mặc định: square
|
Hình dạng khung mắt ở góc. |
| eye_pupil_shape |
square | rounded | circle
Mặc định: square
|
Hình dạng tròng mắt ở góc. |
| error_correction |
high | quartile | medium | low
Mặc định: high
|
Mức sửa lỗi: high (chịu được hư hại/che khuất ~30% mã), quartile (~25%), medium (~15%) hoặc low (~7%). Mức thấp cho ít ô hơn, ô to hơn; nên giữ high hoặc quartile khi có logo ở giữa. |
| label | string | Chú thích bên dưới mã. |
| label_size |
8–72
Mặc định: 20
|
Cỡ chữ chú thích. |
| label_align |
left | center | right
Mặc định: center
|
Căn lề chú thích. |
| label_color |
string
Mặc định: #000000
|
Màu chú thích (hex). |
| logo_url | string | URL https công khai của logo PNG, JPG, GIF hoặc WebP (tối đa 2 MB) đặt ở giữa mã. Máy chủ của chúng tôi tải về và lưu đệm trong một giờ. |
| logo_size |
16–1024
Mặc định: 40
|
Chiều rộng logo ở giữa, tính bằng pixel (logo từ logo_url, hoặc tải lên qua trường `logo` dạng multipart khi dùng POST). |
Tuỳ chọn phản hồi
| Tham số | Giá trị | Mô tả |
|---|---|---|
| response |
image | json
Mặc định: image
|
image trả về chính tệp ảnh; json trả về nội dung đã mã hoá và ảnh dạng data URI base64. |
| download |
boolean
Mặc định: false
|
Gửi ảnh dưới dạng tệp đính kèm (Content-Disposition) thay vì hiển thị trực tiếp. |
| filename | string | Tên tệp tải về, không gồm phần mở rộng (chữ, số, dấu chấm, gạch ngang, gạch dưới). |
Thiết kế riêng kèm logo (multipart)
curl -o qr.png \
-F "data=https://example.com" \
-F "module_shape=dots" -F "eye_frame_shape=rounded" \
-F "color=#4f46e5" -F "[email protected]" \
https://scan.io.vn/api/v1/qr
POST /qr/batch
Tạo tối đa 50 mã QR cùng một thiết kế trong một yêu cầu và trả về file ZIP, hoặc JSON khi dùng response=json. Mỗi mục trong items là một chuỗi (mã hoá nguyên văn) hoặc một object với các tham số nội dung ở trên và filename tuỳ chọn; tham số thiết kế áp dụng cho mọi mã. Lỗi của tất cả các mục được báo cùng lúc, theo khoá items.<vị trí>.<trường>.
curl -o menus.zip https://scan.io.vn/api/v1/qr/batch \
-H "Content-Type: application/json" \
-d '{"items": [
"https://example.com/menu?table=1",
"https://example.com/menu?table=2",
{"type": "wifi", "ssid": "Cafe", "password": "12345678", "filename": "wifi"}
],
"module_shape": "rounded", "format": "svg"}'
Để thêm logo, gửi dạng multipart kèm tệp logo và items là một chuỗi JSON. Yêu cầu tạo hàng loạt có giới hạn riêng 10 lần mỗi phút cho mỗi IP.
GET /vietqr
Tạo mã chuyển khoản VietQR (EMVCo / NAPAS) dạng PNG. Ứng dụng ngân hàng tại Việt Nam quét mã sẽ tự điền ngân hàng, số tài khoản và, nếu có, số tiền và nội dung. Với response=json bạn nhận thêm thông tin ngân hàng và chuỗi EMVCo gốc.
| Tham số | Giá trị | Mô tả |
|---|---|---|
| bank* | string | Mã BIN ngân hàng (vd. 970436), mã viết tắt (vd. VCB) hoặc tên ngắn (vd. Vietcombank). Xem /api/v1/banks. |
| account* | string | Số tài khoản, chỉ gồm chữ số. |
| amount | 2000–99999999 | Số tiền cố định (VND). Bỏ trống để tạo mã dùng lại nhiều lần, người chuyển tự nhập số tiền. |
| note | string | Nội dung chuyển khoản. Dấu câu được thay bằng khoảng trắng. |
| size |
200–1000
Mặc định: 400
|
Chiều rộng và cao của ảnh PNG, tính bằng pixel. |
https://scan.io.vn/api/v1/vietqr?bank=VCB&account=0123456789&amount=150000¬e=Order%201024
GET /banks
Liệt kê các ngân hàng nhận chuyển khoản VietQR cùng mã BIN, mã viết tắt, tên ngắn, tên đầy đủ, mã SWIFT và logo. Tham số q (không bắt buộc) lọc theo đầu mã BIN, mã viết tắt hoặc tên.
https://scan.io.vn/api/v1/banks?q=vietcom
Mã QR động (cần khoá API)
Mã QR động chứa một đường link rút gọn mà bạn có thể đổi đích sau khi in, và đếm lượt quét. Quản lý các mã trong tài khoản từ phần mềm của bạn hay từ trợ lý AI bằng một khoá API cá nhân.
- Đăng ký miễn phí và xác minh địa chỉ email.
- Tạo khoá ở trang Khoá API. Chọn "Chỉ đọc" để xem báo cáo, hoặc "Đọc & thay đổi" để tạo và sửa mã. Khoá chỉ hiển thị một lần.
- Gửi kèm khoá trong mọi yêu cầu:
Authorization: Bearer sqr_…
| Endpoint | Mô tả | Khoá |
|---|---|---|
GET /dynamic-qr |
Liệt kê mã của bạn (tuỳ chọn status=active|paused|blocked). | Chỉ đọc |
POST /dynamic-qr |
Tạo mã: target_url, name và mọi tham số thiết kế; multipart có thể kèm logo. | Đọc & thay đổi |
GET /dynamic-qr/{code} |
Một mã kèm lượt quét hôm nay / 7 / 30 ngày và các lần đổi đích gần đây. | Chỉ đọc |
PATCH /dynamic-qr/{code} |
Đổi target_url hoặc name, tạm dừng hay bật lại bằng is_active. | Đọc & thay đổi |
DELETE /dynamic-qr/{code} |
Xoá mã. Các bản đã in ngừng hoạt động; mã không bao giờ được cấp lại. | Đọc & thay đổi |
GET /dynamic-qr/{code}/stats |
Lượt quét theo ngày, khách không trùng, quốc gia, thành phố, thiết bị, hệ điều hành và ứng dụng trong một khoảng thời gian. | Chỉ đọc |
GET /dynamic-qr/{code}/image |
Ảnh mã QR theo thiết kế đã lưu; có thể đổi định dạng và kích thước. | Chỉ đọc |
Tạo và thay đổi
| Tham số | Giá trị | Mô tả |
|---|---|---|
| target_url* | string | Nơi lượt quét được chuyển tới (http/https). Có thể đổi sau mà không cần in lại mã. |
| name | string | Tên để nhận ra mã trong trang quản trị. Mặc định là tên miền của link. |
Khi tạo, bạn có thể truyền thêm mọi tham số thiết kế của /qr; thiết kế được lưu cùng mã. PATCH nhận target_url, name và is_active, đều không bắt buộc.
curl https://scan.io.vn/api/v1/dynamic-qr \
-H "Authorization: Bearer $SCAN_TOKEN" \
-H "Content-Type: application/json" \
-d '{"target_url": "https://example.com/menu", "name": "Menu table 1", "module_shape": "rounded"}'
curl -X PATCH https://scan.io.vn/api/v1/dynamic-qr/Ab3xK9z \
-H "Authorization: Bearer $SCAN_TOKEN" \
-H "Content-Type: application/json" \
-d '{"target_url": "https://example.com/menu-autumn"}'
Thống kê
| Tham số | Giá trị | Mô tả |
|---|---|---|
| range |
7 | 30 | 90 | custom
Mặc định: 30
|
7, 30 hoặc 90 ngày gần nhất, hoặc custom với from/to. |
| from | string | Ngày bắt đầu (YYYY-MM-DD) khi range=custom. |
| to | string | Ngày kết thúc (YYYY-MM-DD) khi range=custom; cách from tối đa 366 ngày. |
curl "https://scan.io.vn/api/v1/dynamic-qr/Ab3xK9z/stats?range=30" \
-H "Authorization: Bearer $SCAN_TOKEN"
Áp dụng cùng quy định như trên trang quản trị: tối đa 50 mã mỗi tài khoản và 30 lần đổi đích mỗi ngày, chỉ nhận link (http/https), đích được kiểm tra bằng Google Safe Browsing, và mã bị chặn do vi phạm thì không thể thay đổi. Mã của tài khoản khác chỉ trả về 404.
Phản hồi & lỗi
Các endpoint ảnh trả về chính tệp ảnh với Content-Type phù hợp, được lưu đệm một ngày. Thêm response=json để nhận phản hồi JSON, trong đó ảnh ở dạng data URI base64:
{
"code": "00",
"message": "Success",
"data": {
"content": "WIFI:T:WPA;S:Cafe;P:12345678;;",
"format": "png",
"mime_type": "image/png",
"image": "data:image/png;base64,iVBORw0KGgo…",
"image_url": "https://scan.io.vn/api/v1/qr?type=wifi&ssid=Cafe&password=12345678"
},
"extra_data": []
}
Lỗi luôn dùng cùng cấu trúc phản hồi. Thông báo bằng tiếng Anh, hoặc tiếng Việt khi yêu cầu gửi kèm Accept-Language: vi.
{
"code": "02",
"message": "The ssid field is required.",
"data": {
"ssid": [
"The ssid field is required."
]
},
"extra_data": []
}
422tham số sai hoặc thiếu (mã 02), thông báo cho từng trường nằm trong data429vượt giới hạn tần suất — chờ số giây trong header Retry-After404 / 405endpoint hoặc phương thức không tồn tại (mã 01)
Giới hạn
API miễn phí, không có hạn mức theo ngày hay tháng. Để luôn nhanh cho mọi người, mỗi địa chỉ IP có:
- 60 / min Yêu cầu REST API
- 10 / min Yêu cầu tạo hàng loạt (mỗi lần tối đa 50 mã)
- 120 / min Yêu cầu MCP
- 2048 px Ảnh QR lớn nhất
- 1273 bytes Nội dung dài nhất ở mức sửa lỗi H
- 2 MB Tải logo
- Không Giới hạn tổng số mã hay lượt quét
Cần tạo hàng nghìn mã? Hãy lưu đệm ảnh ở phía bạn — cùng một URL luôn trả về cùng một ảnh.
Máy chủ MCP cho trợ lý AI
Model Context Protocol (MCP) là chuẩn mở mà các trợ lý AI dùng để gọi công cụ bên ngoài. Thêm máy chủ của chúng tôi một lần, sau đó bạn chỉ cần yêu cầu bằng lời thường — "tạo mã QR Wi-Fi cho quán", "tạo mã QR chuyển khoản 150.000đ" — và nhận ảnh ngay trong khung chat. Máy chủ từ xa, giao thức Streamable HTTP, không cần xác thực.
- URL máy chủ Công cụ công khai, không cần đăng nhập.
https://scan.io.vn/mcp- Kèm tài khoản của bạn Thêm các mã QR động của bạn. Ứng dụng sẽ yêu cầu bạn đăng nhập (OAuth) hoặc gửi kèm khoá API.
https://scan.io.vn/mcp/account
Công cụ
-
generate_qr_codeTạo mã QRCreate a static QR code image (never expires, free, no watermark) and get a download link. Pick `type` and fill only that type's fields: link (url), text (data), wifi (ssid, password, security, hidden), vcard (first_name, last_name, org, phone, email, url), email (to, subject, body), sms (phone, message), phone (phone), calendar (title, start, end, location, description; local time YYYY-MM-DDTHH:MM), geo (lat, lng). The standard encoding (WIFI:, vCard 3.0, mailto:, SMSTO:, tel:, iCalendar, geo:) is done for you. Optional design: colors, module and eye shapes, a center logo from a public https logo_url, caption, size, format (png, svg, webp). Returns a PNG preview, the encoded content and a download URL in the requested format. Nothing is stored. For Vietnamese bank transfers use generate_vietqr instead.
-
generate_qr_codes_batchTạo nhiều mã QR cùng lúcCreate up to 50 static QR codes with the same design in one call, e.g. one per table, product, ticket or link. Each item is either a plain string (encoded as-is, like a link) or an object with the same content fields as generate_qr_code (type + its fields) and an optional filename. Design options apply to every code. Returns a preview of the first code and a download link for each one; nothing is stored. For a single ZIP file, the user or their app can POST the same items to https://scan.io.vn/api/v1/qr/batch.
-
generate_vietqrTạo mã chuyển khoản VietQRCreate a VietQR (EMVCo / NAPAS) bank transfer QR code for a Vietnamese bank account ("mã QR chuyển khoản"). Vietnamese banking apps scan it and pre-fill the bank, account number and, if given, the amount (VND) and transfer note. `bank` accepts a BIN (970436), code (VCB) or short name (Vietcombank); call list_banks if unsure. Leave out `amount` for a reusable code where the payer types the amount. Returns a PNG, the EMVCo payload and an image URL. Nothing is stored.
-
list_banksDanh sách ngân hàng hỗ trợ VietQRList the Vietnamese banks that accept VietQR transfers, with BIN, code and names, to pick the `bank` value for generate_vietqr. Optional `query` filters by BIN, code or name (e.g. "vietcom", "MB", "9704").
-
list_dynamic_qr_codesDanh sách mã QR động của tôi Khoá APIList the dynamic QR codes in the user's account, newest first: code, name, status (active, paused, blocked), short link encoded in the QR, current destination and total scans. Use the code with the other *_dynamic_qr_* tools.
-
get_dynamic_qr_codeXem một mã QR động Khoá APIShow one of the user's dynamic QR codes: the QR image, its short link and destination, status, scans today / last 7 days / last 30 days, and the recent destination changes. For charts and breakdowns use get_dynamic_qr_stats.
-
get_dynamic_qr_statsThống kê lượt quét của mã QR động Khoá APIScan statistics of one of the user's dynamic QR codes for a period (last 7/30/90 days or custom dates): total and unique scans, change versus the previous period, busiest day, daily counts, and breakdowns by country, city, device, operating system and app/browser (e.g. scanned from Zalo or Facebook). Bots are excluded; no IP addresses are stored.
-
create_dynamic_qr_codeTạo mã QR động Khoá APICreate a dynamic QR code in the user's account: the QR holds a short link that redirects to `target_url`, so the destination can be changed later (update_dynamic_qr_code) without reprinting, and scans are counted (get_dynamic_qr_stats). Links only (http/https); destinations are checked with Google Safe Browsing. Optional design: colors, module and eye shapes, a logo from logo_url, caption, size, format. Limit: 50 codes per account and 30 destination changes per day. For a QR that never needs to change, generate_qr_code is simpler.
-
update_dynamic_qr_codeSửa mã QR động Khoá APIChange one of the user's dynamic QR codes without reprinting it: point it to a new `target_url`, rename it, or pause (is_active=false: scans see a notice) / resume it. Only the fields you pass change. Every printed copy follows the new destination immediately, so confirm the new link with the user first. New links are checked with Google Safe Browsing; blocked codes cannot be changed.
-
delete_dynamic_qr_codeXoá mã QR động Khoá APIPermanently delete one of the user's dynamic QR codes. Printed copies stop working (scans see a "not found" page) and the code is never reused. This cannot be undone: confirm with the user first, and suggest pausing (update_dynamic_qr_code with is_active=false) if they may need it again.
Cài đặt trong ứng dụng của bạn
Claude (claude.ai, Desktop, mobile)
Cài đặt (Settings) → Connectors → Add custom connector, rồi dán URL máy chủ. Dùng https://scan.io.vn/mcp/account để đăng nhập và quản lý cả mã QR động của bạn.
Claude Code
claude mcp add --transport http scan-qr https://scan.io.vn/mcp
ChatGPT
Cài đặt (Settings) → Apps & Connectors → Advanced settings → bật Developer mode, sau đó Create một connector với URL máy chủ, không cần xác thực — hoặc dùng https://scan.io.vn/mcp/account với OAuth để dùng tài khoản của bạn.
Cursor
~/.cursor/mcp.json
{
"mcpServers": {
"scan-qr": {
"url": "https://scan.io.vn/mcp"
}
}
}
VS Code (GitHub Copilot)
.vscode/mcp.json
{
"servers": {
"scan-qr": {
"type": "http",
"url": "https://scan.io.vn/mcp"
}
}
}
Windsurf
~/.codeium/windsurf/mcp_config.json
{
"mcpServers": {
"scan-qr": {
"serverUrl": "https://scan.io.vn/mcp"
}
}
}
Gemini CLI
~/.gemini/settings.json
{
"mcpServers": {
"scan-qr": {
"httpUrl": "https://scan.io.vn/mcp"
}
}
}
Ứng dụng chỉ hỗ trợ stdio
Kết nối máy chủ từ xa qua mcp-remote (cần Node.js):
{
"mcpServers": {
"scan-qr": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://scan.io.vn/mcp"
]
}
}
}
Quản lý mã QR động ngay từ trợ lý AI
Các công cụ gắn nhãn "Khoá API" sẽ xuất hiện khi kết nối gửi kèm khoá của bạn (tạo ở trang Khoá API). Các ứng dụng cho phép đặt header:
Claude Code
claude mcp add --transport http scan-qr https://scan.io.vn/mcp --header "Authorization: Bearer sqr_your_token"
Cursor
~/.cursor/mcp.json
{
"mcpServers": {
"scan-qr": {
"url": "https://scan.io.vn/mcp",
"headers": {
"Authorization": "Bearer sqr_your_token"
}
}
}
}
VS Code (GitHub Copilot)
.vscode/mcp.json
{
"inputs": [
{
"type": "promptString",
"id": "scan-token",
"description": "scan.io.vn API token",
"password": true
}
],
"servers": {
"scan-qr": {
"type": "http",
"url": "https://scan.io.vn/mcp",
"headers": {
"Authorization": "Bearer ${input:scan-token}"
}
}
}
}
Windsurf
~/.codeium/windsurf/mcp_config.json
{
"mcpServers": {
"scan-qr": {
"serverUrl": "https://scan.io.vn/mcp",
"headers": {
"Authorization": "Bearer sqr_your_token"
}
}
}
}
Gemini CLI
~/.gemini/settings.json
{
"mcpServers": {
"scan-qr": {
"httpUrl": "https://scan.io.vn/mcp",
"headers": {
"Authorization": "Bearer sqr_your_token"
}
}
}
}
mcp-remote (stdio)
{
"mcpServers": {
"scan-qr": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://scan.io.vn/mcp",
"--header",
"Authorization:${SCAN_AUTH}"
],
"env": {
"SCAN_AUTH": "Bearer sqr_your_token"
}
}
}
}
Đăng nhập từ Claude, ChatGPT và các connector khác (OAuth)
Thêm https://scan.io.vn/mcp/account làm URL của connector. Ứng dụng sẽ mở một trang của scan.io.vn để bạn đăng nhập và chọn quyền cho phép (chỉ đọc, hoặc cả thay đổi); bạn có thể ngắt kết nối bất cứ lúc nào ở trang Khoá API. Theo chuẩn uỷ quyền của MCP: OAuth 2.1 với PKCE, đăng ký client động, protected resource metadata — không cần cấu hình gì.
Dành cho người phát triển client: /.well-known/oauth-protected-resource/mcp/account, /.well-known/oauth-authorization-server. Scope: dynamic-qr:read, dynamic-qr:write. Mã truy cập có hiệu lực 1 giờ, mã làm mới 30 ngày và được thay mới sau mỗi lần dùng. Client có thể đăng ký động hoặc dùng Client ID Metadata Document: một client_id là URL https trả về thông tin client dạng JSON (chỉ client công khai, tối đa 5120 byte).
Thử hỏi
- “Tạo mã QR cho mạng Wi-Fi "Cafe Sua Da", mật khẩu 12345678, dạng chấm tròn màu xanh đậm.”
- “Tạo mã QR danh thiếp cho Nguyễn Văn An, điện thoại 0901 234 567, email [email protected].”
- “Tạo mã VietQR chuyển khoản Vietcombank số tài khoản 0123456789, 150.000đ, nội dung "Don hang 1024".”
- “Biến 5 đường link này thành mã QR dạng SVG và gửi tôi đường dẫn tải về.”
- “Mã QR "Menu bàn 1" của tôi được quét bao nhiêu lần trong tháng này, từ những thành phố nào?”
- “Chuyển mã QR thực đơn của tôi sang trang thực đơn mùa thu mới.”
Quyền riêng tư
- API và máy chủ MCP không lưu dữ liệu bạn gửi vào cơ sở dữ liệu: không nhật ký tạo mã, không lịch sử, và logo tải lên bị xoá ngay sau khi tạo ảnh.
- Ngoại lệ là mã QR động: chúng được lưu trong tài khoản của bạn như mã tạo trên website. Khoá API chỉ được lưu dưới dạng mã băm; thu hồi khoá bất cứ lúc nào và khoá ngừng hoạt động ngay.
- Ứng dụng kết nối qua OAuth chỉ có đúng quyền bạn đã cho phép, không bao giờ nhận mật khẩu của bạn; mã của chúng cũng chỉ lưu dạng mã băm và hết hiệu lực khi bạn ngắt kết nối.
- Như mọi yêu cầu web, một URL GET (kể cả tham số) có thể xuất hiện tạm thời trong nhật ký truy cập kỹ thuật của máy chủ và CDN. Hãy gửi thông tin nhạy cảm như mật khẩu Wi-Fi bằng POST, và cẩn trọng khi chia sẻ đường dẫn ảnh.
- Ai cũng có thể gọi API mà không cần tài khoản; bạn chịu trách nhiệm về nội dung các mã mình tạo, theo quy định tại Điều khoản sử dụng.