vn-skills

io.github.beiryu由 GitHub 账号 beiryu 发布v0.8.0更新于 Nov 6, 2026

Vietnam: VietQR, address, tax ID, CCCD, phone, holiday, names, number/date format, lunar, e-invoice

概览

AI 生成的概览

离线越南数据工具集:生成与解析 VietQR 二维码、解析地址、校验税号与电子发票,并处理农历日期和节假日。

可以做什么
  • 生成、解析和解码 VietQR 银行转账二维码,并检索 NAPAS 银行列表
  • 解析越南自由文本地址,将 2025 年前地址转换为新的两级结构,并查询省和坊
  • 校验越南税号与 CCCD/CMND 号码,规范化电话号码,拆分或排序人名
  • 在越南语文字与越南盾金额之间互转,格式化数字和日期,并将文本改写为口语形式
  • 在公历与农历日期之间转换,解析越南语日期短语,列出节假日、工作日并导出 iCalendar
  • 按第 123/2020 号法令校验电子发票,计算增值税与合计,并开具模拟发票
适用场景
适合助手处理越南商务或个人数据的场景:生成收款二维码、在 2025 年行政区划调整后清洗或迁移地址列表、核对税号与发票,或围绕越南节假日和农历日期安排日程。
运行要求
通过 stdio 在本地运行,通常用 npx 从 @vn-skills/mcp 这个 npm 包启动,因此需要 Node.js,首次安装还需要网络。未声明任何账号、API 密钥或环境变量。
安装前请注意
多数工具为离线运行,不查询官方机构,因此校验结果不能证明身份证号、税号或地址真实存在。模拟电子发票工具不会真正开票,也不保存任何数据。地址转换与批量工具返回的映射结果在使用前应人工复核。

安装

在 SourceWeft 中

  1. 打开 控制台中的 vn-skills,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

@vn-skills/mcp

MCP server (stdio) exposing the vn-skills functions as tools.

bash
claude mcp add vn-skills -- npx -y @vn-skills/mcp
json
{ "mcpServers": { "vn-skills": { "command": "npx", "args": ["-y", "@vn-skills/mcp"] } } }

Tools: vietqr_build, vietqr_parse, vietqr_decode, vietqr_banks, vn_address_parse, vn_address_convert, vn_address_search_wards, vn_tax_id_validate, vn_money_to_words, vn_lunar_from_solar, vn_lunar_to_solar, vn_lunar_holidays, vn_einvoice_validate, vn_einvoice_totals, vn_einvoice_mock_issue, vn_name.

来源:packages/mcp/README.md,提交 ab515bc

工具

37

vietqr_build

Build VietQR

Create a VietQR (NAPAS 247) bank-transfer QR payload. Returns the EMVCo string, CRC and optionally a PNG image. Bank accepts BIN (970436), code (VCB) or name (Vietcombank). Amount is integer VND; note is sanitized (no diacritics, max 25 chars).

输入参数bank必填noteimageamountaccount必填

vietqr_parse

Parse VietQR

Decode a VietQR / EMVCo QR payload string: bank, account, amount, note, and whether the CRC is valid.

输入参数payload必填

vietqr_decode

Decode VietQR image

Read the QR code in a PNG image file and decode it like vietqr_parse: bank, account, amount, note, CRC validity. Returns READ_ERROR for an unreadable/non-PNG file and NO_QR when no QR code is found.

输入参数path必填

vietqr_banks

Search banks

Search the NAPAS bank list by BIN, code, short name, full name or SWIFT/BIC code. Empty query lists all banks.

输入参数query

vn_address_parse

Parse Vietnamese address

Parse a free-text Vietnamese address into province / ward / street using the post-01/07/2025 catalogue (34 provinces, no districts). Handles missing diacritics and abbreviations (TP.HCM, Q.1, P. Bến Nghé). Set mode "legacy" for pre-2025 addresses with districts.

输入参数modetext必填

vn_address_convert_batch

Convert many old addresses to new (2025)

Convert up to 1000 pre-July-2025 Vietnamese free-text addresses (63 provinces, districts, wards) into the new 2-level structure (34 provinces, wards) in one call. Returns per-row results plus a summary of converted and failed rows. Null, empty or non-string entries do not fail the call: they come back as failed rows (ok:false with an error code) and are counted in summary.failed.

输入参数addresses必填

vn_address_convert

Convert old address to new (2025)

Convert a pre-July-2025 Vietnamese address (63 provinces, districts, wards) into the new 2-level structure (34 provinces, wards). Returns the new ward/province, mapping type (unchanged/merged/divided) and all candidates when the old ward was split. When the client supports elicitation, the server may ask the user to pick the new ward for a split old ward (chosenBy: user|default).

输入参数textwardstreetdistrictprovince

vn_address_search_wards

Search wards

Find current (post-2025) wards by name, optionally within a province.

输入参数limitquery必填province

vn_tax_id_validate

Validate tax ID

Offline validation of a Vietnamese tax ID (mã số thuế): 10 digits (enterprise), 13 digits (branch, e.g. 0100233488-001) with check-digit verification, or 12-digit personal ID (format only). Does not query the tax authority.

输入参数taxId必填

vn_id_parse

Parse citizen ID

Offline validation and decoding of a 12-digit CCCD (province, sex, birth year; legacy province mapped to 2025 province) or format check of a 9-digit CMND. Format validity does not prove the identity exists.

输入参数id必填

vn_phone

Vietnamese phone number

Normalise a Vietnamese phone number (0/84/+84, old 11-digit 01xx mobile prefixes) to national and E.164 forms and classify it: mobile (original carrier) or landline (area code, province). Offline.

输入参数phone必填

vn_name

Vietnamese name tools

Split a Vietnamese full name into họ / tên đệm / tên (handles Tôn Thất, Nguyễn Phúc), plus slug and initials; or sort a list of names by tên with Vietnamese collation.

输入参数nameasciinames

vn_money_to_words

Amount in Vietnamese words

Read an integer VND amount in Vietnamese words, e.g. 1200000 -> "một triệu hai trăm nghìn đồng". Also reads plain numbers without a unit with plain: true, e.g. 30 -> "ba mươi". Options: thousand "nghìn"/"ngàn", odd "lẻ"/"linh", capitalize, unit.

输入参数oddchanunitplainamount必填thousandcapitalize

vn_text_speech_normalize

Rewrite text as spoken Vietnamese for TTS

Rewrite numbers, VND amounts (1.250.000đ, 500k), percentages, phone numbers and dd/mm/yyyy dates in text as spoken Vietnamese for text-to-speech. Decimals and partial dates are left unchanged and listed in skipped. Returns text, changes, skipped.

输入参数text必填

vn_money_parse

Vietnamese number words to digits

Parse an amount written in Vietnamese words back to digits, e.g. "một triệu hai trăm nghìn đồng" -> "1200000". Returns value (digit string), negative, unit, chan.

输入参数text必填

vn_number_format

Vietnamese number formatting and parsing

Format numbers/VND/dates the Vietnamese way (1.234.567,89; 1.200.000 ₫; 1,2 triệu; dd/MM/yyyy) or parse typed amounts ("1tr2", "500k", "1,5 tỷ"; "1.500" = 1500).

输入参数mode必填value必填

vn_lunar_from_solar

Solar to lunar date

Convert a Gregorian date (dd/mm/yyyy or yyyy-mm-dd) to the Vietnamese lunar date with can chi (e.g. Ất Tỵ), zodiac, leap-month flag and solar term. Optional hour (0-23) adds hourCanChi, hourBranch, hourRange (giờ sinh).

输入参数date必填hour

vn_lunar_to_solar

Lunar to solar date

Convert a Vietnamese lunar date to the Gregorian date. Set leap=true for the leap (nhuận) month.

输入参数day必填leapyear必填month必填

vn_lunar_parse_date

Parse Vietnamese date phrase

Turn a Vietnamese date phrase into a solar date: lunar ("rằm tháng Giêng năm sau", "mùng 1 Tết", "23 tháng Chạp"), relative ("ngày mai", "3 ngày nữa", "thứ Sáu tuần sau") or Gregorian. ref (yyyy-mm-dd) defaults to today in UTC+7.

输入参数reftext必填

vn_lunar_month

Lunar month calendar

Calendar of a Gregorian month: each day with lunar date (leap flag, mùng 1, rằm), day can chi, solar term starts and holidays/days off.

输入参数year必填month必填

vn_lunar_holidays

Vietnamese holidays

List Vietnamese holidays for a solar year (Tết, Giỗ Tổ Hùng Vương, 30/4, 1/5, 2/9, Trung thu...). Lunar holidays are resolved to solar dates. publicOnly limits to official days off.

输入参数year必填publicOnly

vn_holidays_year

Vietnam official days off for a year

Official days off for public-sector staff in a year (2023-2199): Tết Dương lịch, Tết Âm lịch, Giỗ Tổ Hùng Vương, 30/4, 1/5, Quốc khánh, Ngày Văn hóa Việt Nam 24/11 (from 2026), with nghỉ bù and swapped working Saturdays from the Government notice. Unannounced years return the statutory days, announced: false and the pending Tết / National Day days.

输入参数year必填

vn_holidays_ics

Export Vietnam days off as an iCalendar file

Export the official days off of a year (2023-2199) as iCalendar (RFC 5545) text for Google Calendar, Outlook or Apple Calendar: holidays, nghỉ bù, swapped days and (optionally) working Saturdays. Unannounced years omit pending days and list them in warnings.

输入参数year必填includeWorkingSaturdays

vn_holidays_is_working_day

Is it a working day in Vietnam?

Whether a date is a working day for public-sector staff (Monday-Friday minus holidays and nghỉ bù, plus swapped Saturdays). certain: false when the year is not announced and the date may still become a Tết or National Day day off.

输入参数day必填year必填month必填

vn_holidays_add_working_days

Add Vietnamese working days

The date n working days after (or before, n < 0) a date, skipping weekends, holidays and nghỉ bù; the start date is not counted. certain: false if unannounced days were crossed.

输入参数n必填day必填year必填month必填

vn_holidays_count_working_days

Count Vietnamese working days

Number of working days in (from, to]: the start date is not counted, the end date is; negative if to is before from. Skips weekends, holidays and nghỉ bù. certain: false if unannounced Tết or National Day days were crossed.

输入参数to必填from必填

vn_einvoice_validate

Validate e-invoice

Validate an e-invoice (hóa đơn điện tử) object against the mandatory contents of Decree 123/2020 (series, date, seller tax ID, lines, VAT rates 0/5/8/10/KCT/KKKNT).

输入参数invoice必填

vn_einvoice_totals

Compute e-invoice totals

Validate an invoice and compute line amounts, VAT per rate, grand total and the total in Vietnamese words.

输入参数invoice必填thousand

vn_einvoice_vat

Apply or split VAT

Apply VAT to a net amount, or with inclusive=true split a VAT-inclusive price (giá đã gồm VAT) into net (tiền hàng) and VAT. Rates 0/5/8/10/KCT/KKKNT. Net is rounded half away from zero and the leftover đồng goes to VAT (library convention).

输入参数rate必填amount必填inclusive

vn_einvoice_mock_issue

Issue invoice (mock)

Issue an invoice through the in-memory MOCK provider (no real API, nothing persisted). Useful for testing integrations before wiring MISA/Viettel/VNPT sandbox adapters.

输入参数invoice必填

vn_lunar_tet

Date of Tết

Solar date of Tết (lunar new year) for a year, with can chi and leap month.

输入参数year必填

vn_lunar_canchi

Can chi of a year

Can chi (e.g. Giáp Thìn) of a lunar year, with its leap month if any.

输入参数year必填

vn_tax_id_check_digit

Tax ID check digit

Compute the 10th check digit of a Vietnamese tax ID from its first 9 digits.

输入参数first9必填

vn_address_provinces

List provinces

List the 34 current Vietnamese provinces (since 01/07/2025) with ward counts.

无需输入参数。

vn_address_history

Former wards of a current ward

List the pre-01/07/2025 wards (with district and province) that became a current ward, by ward code or name.

输入参数ward必填province

vn_address_province

Look up a province

Look up one current province by name, alias (e.g. "TP.HCM") or 2-digit code.

输入参数query必填

vn_einvoice_example

Example e-invoice

Return a valid example invoice object to start from.

无需输入参数。

版本历史

3
  1. v0.8.0最新Oct 30, 2026
  2. v0.7.0Oct 25, 2026
  3. v0.6.0Oct 23, 2026

评分

已满足适用检查项的 90%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分
  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具必需15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分