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 分