mcpField
Q
QR for Agent

QR for Agent

本地服务
github.com/benswel商业与营销320 周前更新

关于 QR for Agent

QR for Agent 是面向 AI Agent 和开发者的 REST API 与 MCP 服务,可编程创建和管理动态二维码,并提供可更改目标地址、扫码分析及 37 个 MCP 工具。

主要功能

  1. 01可更改目标地址的动态二维码
  2. 02支持 11 种二维码类型
  3. 03自定义样式并导出 SVG/PNG
  4. 04扫码与转化分析
  5. 05条件重定向和 Webhook
  6. 06批量管理二维码

适用场景

  1. 01更改营销活动目标而无需替换印刷码
  2. 02衡量扫码量及扫码后的转化
  3. 03创建 WiFi、联系人或活动二维码

MCP 相关

`qr-for-agent` MCP 服务提供 37 个工具,供 Agent 创建、更新、删除和分析二维码,并管理相关 Webhook 与设置。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"benswel-qr-for-agent": {
"command": "npx",
"args": [
"-y",
"qr-for-agent"
],
"env": {
"API_KEY": "<API_KEY>",
"BASE_URL": "<BASE_URL>"
}
}
}
}
启动命令npx -y qr-for-agent
需要配置的环境变量
API_KEY密钥Your QR for Agent API key
BASE_URLAPI base URL (default: https://api.qrforagent.com)

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmqr-for-agent0.12.2

工具

37

收录的工具列表 · 更新于 2 天前

参数类型必填说明
labelstring否用于标识此二维码的可选标签。
widthnumber否二维码宽度,单位为像素。默认值:400。
formatenum否图像格式。推荐使用 "svg"(体积更小、可缩放且可解析文本)。仅在必须使用位图时使用 "png"。svg | png
marginnumber否静区边距,单位为模块。默认值:2。
gradientobject否对二维码点和角应用渐变,而不是使用纯色 foreground_color。
gradient.typeenum是渐变类型。linear | radial
gradient.anglenumber否角度,单位为度(仅适用于线性渐变)。0=从左到右,90=从上到下。
gradient.colorsarray是2 种或更多十六进制颜色,均匀分布。
logo_urlstring否徽标图片的 URL(PNG/JPG/SVG)或 data:base64 URI。位于二维码中央。
dot_styleenum否数据模块的形状。square=经典,rounded=圆角,dots=圆点,classy-rounded=自然圆润。square | rounded | dots | classy-rounded
logo_sizenumber否徽标大小占二维码宽度的比例(0.15-0.3)。默认值:0.2。
expires_atstring否ISO 8601 日期时间。此日期之后,扫描将返回 410 Gone,而不是重定向。
frame_textstring否边框上的 CTA 文本(例如 'Scan Me!'、'View Menu')。最多 30 个字符。需要设置 frame_style。
target_urlstring是二维码应重定向到的目标 URL。
frame_colorstring否边框背景的十六进制颜色。默认值:#000000。
frame_styleenum否二维码周围的装饰边框。'banner_bottom':文本位于下方,'banner_top':文本位于上方,'rounded':带文本的圆角边框。none | banner_bottom | banner_top | rounded
corner_styleenum否定位图案(角落方块)的形状。square=经典,extra-rounded=平滑圆角,dot=圆形。square | extra-rounded | dot
scheduled_atstring否目标自动切换到 scheduled_url 的 ISO 8601 日期时间。
scheduled_urlstring否在 scheduled_at 激活的替换 URL。
background_colorstring否二维码背景的十六进制颜色。默认值:#ffffff(白色)。
error_correctionenum否纠错级别。L=7%,M=15%(默认值),Q=25%,H=30%。提供徽标时自动设为 H。L | M | Q | H
foreground_colorstring否二维码圆点的十六进制颜色。默认值:#000000(黑色)。
frame_text_colorstring否边框文本的十六进制颜色。默认值:#ffffff。
gtm_container_idstring否Google Tag Manager 容器 ID(例如 'GTM-ABC123')。通过中间 HTML 页面启用 QR 扫描的 GTM 跟踪。
frame_border_radiusnumber否边框圆角半径。仅适用于 'rounded' 样式。

详细介绍

QR for Agent

benswel/qr-for-agent-api MCP server

专为 AI Agent 打造的二维码即服务 API。通过 REST API 或 MCP 以编程方式创建、更新和追踪动态二维码(37 个工具)。

二维码指向短 URL(/r/:shortId),你可以随时更改其目标地址——二维码图像不会改变,但扫描后会跳转到新的目标地址。采用多租户设计,并提供完整的扫描分析数据。

在线 API: api.qrforagent.com  |  网站: qrforagent.com  |  MCP: qr-for-agent

功能

  • 动态二维码——无需重新生成图像即可更改目标 URL
  • 11 种二维码类型——URL、vCard、WiFi、Email、SMS、Phone、Event、Text、Location、Social、App Store
  • 自定义样式——点形状(方形、圆角、圆点、圆润典雅)、角落样式、颜色、渐变、嵌入徽标,以及带 CTA 文案的边框
  • SVG 和 PNG——矢量和位图输出
  • 增强型分析——设备类型、浏览器、操作系统、国家、城市、引荐来源、每日扫描量
  • 实时 Webhook——采用 HMAC-SHA256 签名的载荷,并记录投递情况
  • UTM 追踪——自动向重定向 URL 追加 UTM 参数
  • GTM 支持——包含 Google Tag Manager 代码片段的中间页面
  • 条件重定向——按设备、操作系统、国家、语言、时间范围或 A/B 拆分进行路由
  • 自定义域名——Pro 用户可使用自己的域名为短 URL 添加品牌标识(qr.yourbrand.com/r/abc123)
  • 过期与定时安排——自动使二维码过期,或安排 URL 切换
  • 转化追踪——通过追踪像素和 API 记录扫描后的事件(购买、注册),并提供 ROI 分析
  • 边框与模板——二维码装饰边框(banner_top、banner_bottom、rounded),并带有 CTA 文案
  • 批量操作——每次请求最多创建、更新或删除 50 个二维码;通过 CSV 上传最多可处理 500 个(Pro)
  • 多租户——每个 API 密钥只能访问自己的数据
  • MCP 服务——qr-for-agent,提供 37 个工具,可用于 Claude Desktop、Cursor 等
  • 按套餐设定配额——Free(10 个二维码,每月 1K 次扫描)和 Pro($19/月,无限量)
  • 自助注册——使用邮箱调用 POST /api/register,无需信用卡
  • Stripe 集成——结账、账单门户,以及由 Webhook 驱动的套餐管理
  • OpenAPI 文档——位于 /documentation 的 Swagger UI
  • 可供 AI 发现——/.well-known/ai-plugin.json 和 /.well-known/mcp.json
  • 开源——采用 MIT 许可证,可通过 Docker 自托管

快速开始

git clone https://github.com/benswel/qr-for-agent-api.git
cd qr-for-agent-api
npm install
npm run dev

首次启动时,会自动生成 API 密钥并打印到控制台。

curl -X POST http://localhost:3100/api/qr \
  -H "Content-Type: application/json" \
  -H "X-API-Key: qr_YOUR_KEY_HERE" \
  -d '{"target_url": "https://example.com", "label": "My first QR"}'

API 端点

二维码管理(需要 X-API-Key)
方法路径说明
POST/api/qr创建二维码(11 种类型,支持自定义样式)
GET/api/qr列出所有二维码(分页)
GET/api/qr/:shortId获取二维码详情
PATCH/api/qr/:shortId更新目标 URL、标签、UTM、GTM 和重定向规则
DELETE/api/qr/:shortId删除二维码及其分析数据
GET/api/qr/:shortId/image下载二维码图像(使用已保存的样式重新生成)
POST/api/qr/bulk创建最多 50 个二维码(全部成功或全部失败)
PATCH/api/qr/bulk更新最多 50 个二维码(允许部分成功)
DELETE/api/qr/bulk删除最多 50 个二维码(允许部分成功)
POST/api/qr/bulk/csv从 CSV 创建最多 500 个二维码(仅限 Pro)
分析数据(需要 X-API-Key)
方法路径说明
GET/api/analytics/:shortId扫描统计数据,按设备、浏览器、操作系统、国家、城市细分,并包含转化数据
转化(需要 X-API-Key)
方法路径描述
POST/api/conversions为你拥有的二维码记录一次转化事件
GET/api/conversions/:shortId获取转化统计(总计、按事件、按天、近期记录)
Webhook(需要 X-API-Key)
方法路径描述
POST/api/webhooks注册 Webhook 端点(返回 HMAC 密钥)
GET/api/webhooks列出所有 Webhook
DELETE/api/webhooks/:id删除 Webhook
自定义域名(需要 X-API-Key,仅限 Pro)
方法路径描述
GET/api/domain获取当前自定义域名和 DNS 状态
PUT/api/domain设置自定义域名
DELETE/api/domain移除自定义域名
账户(需要 X-API-Key)
方法路径描述
GET/api/usage当前用量和配额
POST/api/stripe/checkout创建 Stripe Checkout 会话(升级到 Pro)
POST/api/stripe/portal打开 Stripe 账单门户
公共接口(无需身份验证)
方法路径描述
POST/api/register自助注册 API 密钥(受速率限制)
GET/r/:shortId重定向到目标 URL(记录扫描)
GET/t/:shortId转化跟踪像素(返回 1×1 GIF)
GET/i/:shortId提供二维码图片(可缓存)
GET/health健康检查
GET/documentationSwagger UI
GET/.well-known/ai-plugin.jsonAI 插件清单
GET/.well-known/mcp.jsonMCP 发现清单
管理员(需要 X-Admin-Secret 请求头)
方法路径描述
GET/api/admin/keys列出所有已注册的 API 密钥
GET/api/admin/stats仪表盘指标

身份验证

所有 /api/* 端点都需要 X-API-Key 请求头。

  • 格式:qr_ + 32 个字符的随机字符串
  • 自动生成:首次启动时,如果不存在密钥则自动生成
  • 多租户:每个密钥只能查看自己的二维码
  • 创建密钥:npm run key:create "my-label"
  • 列出密钥:npm run key:list

公共端点(/r/*、/i/*、/health、/documentation、/.well-known/*)无需身份验证。

MCP 服务

作为 qr-for-agent 发布在 npm 上。提供 37 个工具,供 AI Agent 原生管理二维码。

npx qr-for-agent
Claude Desktop / Cursor

添加到你的 MCP 配置中(claude_desktop_config.json 或 .cursor/mcp.json):

{
  "mcpServers": {
    "qr-for-agent": {
      "command": "npx",
      "args": ["-y", "qr-for-agent"],
      "env": {
        "API_KEY": "your-api-key",
        "BASE_URL": "https://api.qrforagent.com"
      }
    }
  }
}
可用工具(37 个)
工具描述
create_qr_code创建可选自定义样式的 URL 二维码
get_qr_code按短 ID 获取二维码详情
update_qr_destination更改二维码的重定向目标
list_qr_codes分页列出所有二维码
delete_qr_code删除二维码及其分析数据
get_qr_analytics获取扫描统计数据和细分数据
bulk_create_qr_codes一次创建最多 50 个二维码
bulk_update_qr_codes一次更新最多 50 个二维码
bulk_delete_qr_codes一次删除最多 50 个二维码
create_vcard_qr创建 vCard 联系人二维码
create_wifi_qr创建 WiFi 凭据二维码
create_email_qr创建电子邮件(mailto:)二维码
create_sms_qr创建短信二维码
create_phone_qr创建电话呼叫二维码
create_event_qr创建日历活动二维码
create_text_qr创建纯文本二维码
create_location_qr创建地理位置二维码
create_social_qr创建社交媒体链接二维码
create_app_store_qr创建智能应用商店重定向二维码
update_vcard_qr更新 vCard 二维码
update_wifi_qr更新 WiFi 二维码
update_social_qr更新社交媒体二维码
update_app_store_qr更新应用商店二维码
create_webhook注册 webhook 端点
list_webhooks列出所有已注册的 webhook
delete_webhook删除 webhook
register注册以获取 API 密钥
get_usage获取当前用量和配额
upgrade_to_pro创建 Stripe Checkout 会话
manage_billing打开 Stripe 账单门户
set_utm_params为二维码设置 UTM 跟踪参数
set_redirect_rules为二维码设置条件重定向规则
set_custom_domain设置或移除自定义域名(Pro)
get_custom_domain获取当前自定义域名和 DNS 状态
bulk_create_from_csv根据 CSV 数据创建最多 500 个二维码(Pro)
record_conversion记录扫描后的转化事件
get_conversions获取二维码的转化统计数据

配置

将 .env.example 复制为 .env 并进行编辑:

变量默认值描述
PORT3100HTTP 端口
HOST0.0.0.0绑定地址
BASE_URLhttp://localhost:3100公共 URL(用于短 URL)
DATABASE_URL./data/qr-agent.dbSQLite 文件路径
SHORT_ID_LENGTH8生成的短 ID 长度
ADMIN_SECRET(无)管理端点的密钥(X-Admin-Secret 请求头)
STRIPE_SECRET_KEY(无)Stripe API 密钥
STRIPE_WEBHOOK_SECRET(无)Stripe webhook 签名密钥
STRIPE_PRICE_ID(无)Pro 套餐的 Stripe Price ID

数据库

使用 Drizzle ORM 和 SQLite。包含六张表:

  • api_keys — 密钥存储,包含标签、电子邮件、套餐(free/pro)、Stripe ID 和自定义域名
  • qr_codes — 二维码元数据、目标 URL、类型/type_data、样式选项、UTM、GTM、重定向规则、过期时间/计划
  • scan_events — 扫描跟踪:时间戳、用户代理、来源页、IP、设备、浏览器、操作系统、国家/地区、城市
  • webhooks — 每个 API 密钥对应的 webhook 端点、HMAC 密钥、订阅事件
  • webhook_deliveries — 投递日志:状态、响应代码、错误消息
  • conversion_events — 转化跟踪:事件名称、值、元数据、来源页、IP、时间戳
npm run db:generate   # Generate migration from schema changes
npm run db:migrate    # Apply pending migrations
npm run db:studio     # Open Drizzle Studio (web UI)

服务器启动时会自动运行迁移。

部署

Docker
docker compose up -d

数据库保存在 Docker 卷中。

Railway

项目包含 railway.toml 和多阶段 Dockerfile。将 GitHub 仓库连接到 Railway,即可自动构建和部署,并在 /health 上执行运行状况检查。

测试

195 项集成测试,涵盖所有端点、身份验证、多租户隔离、二维码类型、Webhook、批量操作、自定义域名、帧、转换、CSV 上传和分析。

npm test           # Run all tests
npm run test:watch # Watch mode

脚本

脚本描述
npm run dev启动支持自动重新加载的开发服务器
npm run build编译 TypeScript
npm start运行生产服务器
npm test运行测试套件
npm run test:watch以监视模式运行测试
npm run key:create创建 API 密钥
npm run key:list列出 API 密钥
npm run db:generate生成迁移
npm run db:migrate运行迁移
npm run db:studio打开 Drizzle Studio

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。