
Monapay Mcp
vn.monapay由 monapay.vn 发布v0.6.2更新于 Oct 24, 2026
MONA Pay for AI agents: create VietQR, check bank transfers, webhooks & HMAC. Vietnam bank API, VND
概览
MONA Pay 的 MCP 服务器,让 AI 助手创建 VietQR 与结账链接、查询越南盾入账转账,并配置 webhook 与通知。
- 可以做什么
- 查看账户状态、资料与套餐,并通过 OTP 绑定 ACB 银行账户、创建虚拟账户
- 创建、查看、筛选和取消托管结账会话与动态 VietQR
- 按虚拟账户列出和查询入账交易,并获取指定日期区间的汇总与每日数据
- 创建、更新、删除和测试 webhook,读取投递日志与统计,并在本地校验 HMAC 签名
- 管理邮件与 Zalo 群通知配置,发送测试并查看投递日志
- 生成或轮换 API 密钥,并生成 PHP、Node 或 Python 的 webhook 接收端代码片段
- 适用场景
- 适合在项目中集成 MONA Pay 时使用:实现银行转账自动确认、为订单生成 VietQR 或结账链接,或在开发过程中配置和排查 webhook 与通知投递。
- 运行要求
- 通过 npx 以 stdio 在本地运行,需要 Node.js 18 或更高版本。需要 MONA Pay API 密钥:MONAPAY_CLIENT_ID 与 MONAPAY_CLIENT_SECRET,在 MONA Pay 后台创建。MONAPAY_BASE_URL 可选,默认使用生产 API。需要能访问 MONA Pay API 的网络。
安装
在 SourceWeft 中
- 打开 控制台中的 Monapay Mcp,将其添加到工作区。
- 为需要使用其工具的对话启用该服务。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
其他 MCP 客户端
参照 仓库 中的启动说明。
README
monapay-mcp
An MCP server that lets AI coding agents such as Claude Code, Cursor and Codex (or any MCP client) work with MONA Pay while coding: link a bank account, create checkout links and VietQR codes, look up incoming transfers, configure and test webhooks, email and Zalo group notifications, and verify webhook signatures.
Published on npm as monapay-mcp and in the MCP Registry as vn.monapay/monapay-mcp.
Install
Requires Node.js 18 or later and a MONA Pay API key (client ID and client secret, created in the MONA Pay dashboard).
Claude Code
Cursor (.cursor/mcp.json) and Claude Desktop (claude_desktop_config.json)
Codex (~/.codex/config.toml)
Configuration
Client credentials are recommended over username/password, because accounts with 2FA enabled cannot log in with a password.
Usage
Tools
Resources and prompt
monapay://docs/llms: machine-readable index of the MONA Pay docs.monapay://docs/{slug}: one docs page as Markdown, for examplemonapay://docs/webhooks/tich-hop-webhook.- Prompt
integrate-monapay(argumentslanguage,framework): a 6-step plan for the agent to integrate MONA Pay into the current project.
Example
"Integrate automatic bank transfer confirmation into this Laravel site with MONA Pay."
The agent calls monapay_whoami, gets receiver code with monapay_generate_webhook_snippet(language="php"), writes the endpoint into the project, registers it with monapay_create_webhook(auth_type="HMAC_SHA256", secret_key=...), fires monapay_test_webhook, reads monapay_webhook_logs to confirm the endpoint returns 200, then uses monapay_create_checkout for each order and waits for CHECKOUT_PAID.
Link a bank account with OTP
ACB sends each OTP to the account holder's registered phone. The agent must ask the user at steps 2 and 4 and never guess an OTP.
- Call
monapay_link_bank_startwith the ACB account number, phone number, customer type, VA prefix and identifier. It returnsacb_request_id, and ACB sends the first OTP. - Ask the user for the OTP and call
monapay_link_bank_verify_otp. It returnsvirtual_account_idand the VA number. - Call
monapay_notification_registerwithvirtual_account_id. ACB sends the second OTP. - Ask the user for the second OTP and call
monapay_notification_verify_otp. Incoming transfers are now forwarded to your configured webhooks.
If an OTP is wrong or expired, call the previous step again to get a new code.
Zalo group notifications
The group must contain the MONA bot (Gấu Mona), which is added by the MONA team. group_id is 10 to 25 digits and comes from MONA Account/PMS.
Call monapay_create_zalo_group with group_id, a friendly name and the events to receive: TRANSACTION_IN, CHECKOUT_PAID, WEBHOOK_FAILED, VA_CREATED. You can limit it to one virtual_account_id, send a test with monapay_test_zalo_group and check delivery with monapay_zalo_group_logs.
Zalo does not render Markdown, so message_template must be plain text. It supports {amount}, {description}, {virtual_account_number}, {transaction_code} and {transfer_date}; the {{amount}} form also works.
Key rotation
monapay_rotate_key uses the current secret to rotate the key that matches MONAPAY_CLIENT_ID. The old secret stops working immediately; update MONAPAY_CLIENT_SECRET in your MCP config and restart the client.
Webhook signature
X-Mona-Signature: sha256=<hex>, where hex = HMAC-SHA256(secret, "<X-Mona-Timestamp>.<raw_body>"). Reject requests whose timestamp is more than 300 seconds off and compare in constant time. transaction_code stays the same across retries, so use it as the deduplication key.
Development
Agent guide: https://monapay.vn/ai-agent · Documentation: https://monapay.vn/docs
License
MIT
MONA Pay is part of MONA Cloud by The MONA Group.
来源:README.md,提交 be66409
工具
0版本历史
2- v0.6.2最新Oct 5, 2026
- v0.6.1Sep 19, 2026
评分
已满足适用检查项的 50%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
- 近 30 天内可连通25 分
请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。
- 已声明认证方式10 分
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
- 已列出工具15 分
请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。
- 描述必需15 分
- 图标10 分
- 文档15 分
- 许可证10 分