原型 · 预览版:收录官方注册中心里的全部服务器,每 30 分钟同步一次。评价和账户功能将在后续阶段推出。
PopNx MCP为使用 AI 的人准备的 MCP 服务器 · 用大白话讲清楚

Arabicfmt MCP

作者:cc1a2b版本 0.1.1i★ –i在你的电脑上运行
注册名称io.github.cc1a2b/arabicfmt-mcp

安装

概览

作者提供的说明(英文原文)

Arabic formatting: 22 Arab currencies (Saudi riyal U+20C1), Hijri dates, تفقيط, RTL/bidi fixes.

PopNx MCP 的三大支柱

这三项永远不会合并成一个分数:意见、测量和人气是不同的东西。

它能帮你做什么

我们还没有为它写通俗的介绍。下面是我们从注册中心读取到的事实。

  • 连接方式: 在你的电脑上运行
  • 传输方式: stdio
  • 分类: 其他

安装

选择你使用的 AI 应用,然后复制设置。

安装之前

  • 基础检查:1 项中通过 1 项
  • 在你的电脑上运行,拥有你的用户账户的权限(文件、网络、应用)。
  • 注册中心没有列出需要填写的密钥。

你需要

  • npm已安装 Node.js(用于 npx 命令)

你用的是哪个应用?

在上方选择你的应用。我们会记住它,下次按钮会显示“安装到 …”。

打开 Claude Desktop → Settings → Developer → Edit Config,把下面的内容粘贴到 claude_desktop_config.json

{
  "mcpServers": {
    "arabicfmt": {
      "command": "npx",
      "args": [
        "-y",
        "arabicfmt-mcp"
      ]
    }
  }
}

在终端中运行这条命令

claude mcp add arabicfmt -- npx -y arabicfmt-mcp

在 Cursor 中打开

或者自己复制设置

粘贴到项目中的 .cursor/mcp.json,或 ~/.cursor/mcp.json

{
  "mcpServers": {
    "arabicfmt": {
      "command": "npx",
      "args": [
        "-y",
        "arabicfmt-mcp"
      ]
    }
  }
}

浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。

在 VS Code 中打开

或者自己复制设置

粘贴到项目中的 .vscode/mcp.json

{
  "servers": {
    "arabicfmt": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "arabicfmt-mcp"
      ]
    }
  }
}

浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。

这个服务器在你的电脑上运行,而 ChatGPT 只能连接互联网上的服务器。请选择其他应用。

你的选择通过 Cookie 保存在这台设备上,无需账户。

这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。

它能做什么

它在你的电脑上运行;安装后,工具列表会显示在你的 AI 应用中。

基础检查i

我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月7日

  • ✓ 通过

    作者与仓库一致

    注册名称已通过 GitHub 账户 cc1a2b 验证,该账户拥有此仓库

  • … 尚未检查

    仍在维护

    我们还没有从 GitHub 读取这个仓库

  • … 尚未检查

    有许可证

    我们还没有从 GitHub 读取这个仓库

  • – 不适用

    端点有响应

    它在你的电脑上运行,没有互联网端点

  • – 不适用

    使用 OAuth 登录

    在你的电脑上运行,改用本地设置

  • … 尚未检查

    工具描述中没有隐藏指令

    它在你的电脑上运行;我们只能读取互联网端点的工具列表

与“其他”中的其他服务器比较i

  • 星标数多于此分类中其他 32700 个服务器的 0%
  • 发布到注册中心的时间比此分类中其他 32700 个服务器的 15% 更新
  • 基础检查结果等于或优于此分类中其他 32700 个服务器的 100%

与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。

常见问题

Arabicfmt MCP 安全吗?

它在 1 项适用的基础检查中通过了 1 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。

它需要哪些密钥或代码?

注册中心没有列出必需的密钥,不过有些服务器会在首次使用时要求你登录。

它在我的电脑上运行还是在云端?

它在你的电脑上运行。你的 AI 应用会在需要时启动它,数据不会经过作者的服务器(除非它自己调用在线服务)。

它还在维护吗?

GitHub 仓库最后更新于–,最新版本(0.1.1)于4个月前进入注册中心。

哪些应用可以使用它?

支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。你的电脑上还需要有 Node.js。

有什么可以替代它?

同一分类中有:Spec Driven Development, Remote Desktop Commander, Agent Data Tools: Utilities

替代选择

同一分类中其他作者的服务器,按星标数排序。

如何看卡片:★ GitHub 星标i三大支柱:评价 · 检查 · 使用情况i更新 = 最新版本发布到注册中心的时间i

Spec Driven Development

作者:formulahendry

MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.

在你的电脑上运行★ 440MIT14个月前更新
安装

Remote Desktop Commander

作者:desktop-commander

Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.

在云端运行★ 211前天更新
安装

Agent Data Tools: Utilities

作者:Nutshell2000

103 tools: JSON repair, CSV, hashes, cron, dates, units, validators. 25 free calls.

在云端运行今天更新
安装

作者的 README

打开 README

按原文从作者的仓库复制。PopNx MCP 没有审查或背书其内容。HTML、图片和脚本已被移除。链接会离开本站。

arabicfmt

Arabic-first formatting for JavaScript & TypeScript

Currency symbols · Hijri/Islamic calendar · number-to-words · تفقيط · 6 plural forms · RTL/bidi —

correct for all 22 Arab League countries, with zero dependencies and full TypeScript types.

أرقامٌ وعملاتٌ وتواريخُ هجريةٌ ولغةٌ عربيةٌ سليمة — في سطرٍ واحد.

[npm](https://www.npmjs.com/package/arabicfmt) · [Live demo](https://arabicfmt.vercel.app) · [GitHub](https://github.com/cc1a2b/arabicfmt)

arabicfmt is the only JavaScript library that handles the entire Arabic formatting stack in one zero-dependency package — currency symbols, number precision, Hijri/Islamic calendar dates, RTL bidirectional text, Arabic number-to-words and تفقيط — with full TypeScript types. Works in Node, the browser, Deno, Bun and React Native.

New in 0.1.5: every currency sign from the Unicode 17.0/18.0 transition — SAR U+20C1, MVR U+20C2, AED U+20C3, OMR U+20C4 — plus the tooling to actually render them: typed parts, a generated @font-face, price ranges and a date-aware transition registry.

npm install arabicfmt

What other libraries get wrong

ProblemOther librariesarabicfmt
Saudi riyal U+20C1Emits ﷼ (U+FDFC) — the Iranian rialCorrect U+20C1 with a safe text fallback
The Unicode 18.0 signs (MVR/AED/OMR)Unencoded, or still the old abbreviationAll four signs, plus transitionStatus() and a generated @font-face
Styling a new signRegex the symbol back out of a formatted stringformatCurrencyToParts() — the sign is its own typed part
Iraqi dinar (IQD) decimals0 (CLDR practical)3 decimals — ISO 4217 legal standard
Hijri date outputVaries between Node, Chrome, Safari, HermesFrozen Umm al-Qura tables — identical on every engine
Arabic plurals1–2 forms; Arabic legally needs 6Full CLDR 6-form system (zero/one/two/few/many/other)
Number to Arabic wordsNo zero-dep solutionarabicToWords(1234) → "ألف ومئتان وأربعة وثلاثون"
Spell money for cheques (تفقيط)Build it yourself, get the grammar wrongspellCurrency(1234.5, {currency:"SAR"}) → "ألف ومئتان وأربعة وثلاثون ريالاً وخمسون هللةً"
Ordinals (ترتيبية)Missing or gender-blindarabicOrdinal(25) → "الخامس والعشرون", gender-aware
Spoken durationsIntl.DurationFormat barely supportedformatDuration(7_500_000) → "ساعتان وخمس دقائق" with full agreement
RTL broken sentencesPhone numbers flip mid-sentenceUnicode isolates wrap LTR runs automatically
Eastern Arabic digit parsingparseInt("١٢٣") → NaNparseNumber("١٬٢٣٤٫٥٦") → 1234.56
Arabic URL slugsStrip to empty or mojibakeslugify("مدينة جدة") → "mdynh-jdh"
IBAN / Saudi ID checksRegex that accepts bad numbersReal ISO 7064 mod-97 + Luhn checksums

Install

npm install arabicfmt

or

yarn add arabicfmt

or

pnpm add arabicfmt

Requirements: Node.js ≥ 18 · TypeScript ≥ 4.7 (optional) · zero runtime dependencies.

Browser / CDN — no build step

Every release is mirrored on the jsDelivr and unpkg CDNs automatically. Import the browser-ready ESM bundle straight from a URL — no install, no bundler:

<script type="module">

import { formatCurrency, formatHijri } from "https://cdn.jsdelivr.net/npm/arabicfmt/+esm";

console.log(formatCurrency(1234.5, { currency: "SAR", numerals: "arab" })); // ١٬٢٣٤٫٥٠ ر.س console.log(formatHijri(new Date(), { numerals: "arab" })); // ٢٧ ذو الحجة ١٤٤٧ هـ

Subpaths work too — e.g. https://cdn.jsdelivr.net/npm/arabicfmt/dist/currency/index.js for just the currency module. Pin a version for production, e.g. arabicfmt@0.1.


Quick start

import {

formatCurrency, // correct symbol + precision for every Arab currency formatCurrencyRange, // "1,000.00 – 5,000.00 ر.س" formatCurrencyToParts, // typed parts — font-scope just the new Unicode sign transitionStatus, // "none" | "announced" | "encoded" for any date signFontFaceCSS, // the scoped @font-face the new signs need formatCompact, // 1,200,000 → "1.2M" / "١٫٢ مليون" arabicToWords, // 1234 → "ألف ومئتان وأربعة وثلاثون" spellCurrency, // تفقيط: 1234.5 SAR → "...ريالاً وخمسون هللةً" arabicOrdinal, // 25 → "الخامس والعشرون" formatDuration, // 7_500_000ms → "ساعتان وخمس دقائق" formatFileSize, // 1536 → "1.5 كيلوبايت" formatRelativeTime, // "منذ ٣ أيام" formatList, // ["أحمد","علي"] → "أحمد وعلي" parseCurrency, // "١٬٢٣٤٫٥٠ ر.س" → 1234.5 arabicPlural, // full 6-form Arabic plural selection sortArabic, // Arabic-locale collation slugify, // "مدينة جدة" → "mdynh-jdh" (URL slugs) isValidIBAN, // ISO 7064 mod-97 IBAN checksum isValidSaudiId, // Saudi national ID / Iqama check digit isolateForeign, // fix broken RTL sentences normalizeForSearch, // search-key normalization detectLocale, // auto-detect from browser / Node environment } from "arabicfmt";

import { formatHijri, toHijri } from "arabicfmt/umalqura"; // deterministic Hijri calendar

// Currency formatCurrency(1.2, { currency: "KWD" }); // "1.200 د.ك" formatCurrency(1234, { locale: "ar-SA", numerals: "arab" }); // "١٬٢٣٤٫٠٠ ر.س" formatCurrency(-500, { currency: "SAR", accounting: true }); // "(500.00 ر.س)" formatCurrencyRange(1000, 5000, { currency: "SAR" }); // "1,000.00 – 5,000.00 ر.س" formatCompact(1_500_000, { locale: "ar", numerals: "arab" }); // "١٫٥ مليون"

// The Unicode currency-sign transition, as data transitionStatus("AED"); // "encoded" (Unicode 18.0) transitionStatus("AED", new Date("2026-01-01")); // "announced" transitionStatus("KWD"); // "none" — Kuwait has no sign signFontFaceCSS({ src: "/fonts/signs.woff2" }); // @font-face … unicode-range: U+20C1…U+20C4

// Number to Arabic words arabicToWords(1234); // "ألف ومئتان وأربعة وثلاثون" arabicToWords(1_000_000); // "مليون" arabicToWords(5, { gender: "female" }); // "خمس"

// Spell money for invoices & cheques (التفقيط) spellCurrency(1234.5, { currency: "SAR" }); // "ألف ومئتان وأربعة وثلاثون ريالاً وخمسون هللةً" spellCurrency(100, { currency: "SAR", suffix: true }); // "مئة ريال فقط لا غير"

// Ordinals — gender-aware arabicOrdinal(1); // "الأول" arabicOrdinal(25); // "الخامس والعشرون" arabicOrdinal(1, { gender: "female" }); // "الأولى"

// Duration & file size formatDuration(7_500_000); // "ساعتان وخمس دقائق" formatFileSize(1536); // "1.5 كيلوبايت"

// Lists formatList(["أحمد", "محمد", "علي"]); // "أحمد ومحمد وعلي" formatList(["تفاح", "موز"], { type: "disjunction" }); // "تفاح أو موز"

// Hijri dates (deterministic — same output on Node, Chrome, Safari, Hermes) formatHijri(new Date("2025-09-23")); // "1 ربيع الآخر 1447 هـ" formatHijri(new Date("2025-09-23"), { numerals: "arab" }); // "١ ربيع الآخر ١٤٤٧ هـ" toHijri(new Date("2025-09-23")); // { year: 1447, month: 4, day: 1 }

// Relative time formatRelativeTime(new Date(Date.now() - 3 * 86400_000)); // "منذ 3 أيام"

// Parse formatted strings back to numbers parseCurrency("١٬٢٣٤٫٥٠ ر.س"); // 1234.5 parseCurrency("(500.00 SAR)"); // -500

// RTL isolateForeign("اتصل على +1 (555) 234-5678 الآن"); // phone stays intact in RTL

// Locale auto-detection detectLocale(); // "ar-SA" in a Saudi browser, "ar-EG" in Node with LANG=ar_EG


Currency formatting

Symbol strategy: symbolMode

The Saudi riyal received its own Unicode symbol (U+20C1) in September 2025. Most libraries either emit the wrong ligature (U+FDFC, the Iranian rial) or fall back to SAR. arabicfmt gives you full control:

import { formatCurrency, resolveCurrencySymbol, getCurrencyInfo } from "arabicfmt/currency";

formatCurrency(1234.5, { currency: "SAR" }); // → "1,234.50 ر.س" (auto: safe text symbol, renders everywhere today)

formatCurrency(1234.5, { currency: "SAR", symbolMode: "new" }); // → "1,234.50 ⃁" (U+20C1 — use with a webfont; see webfont guide below)

formatCurrency(1234.5, { currency: "SAR", symbolMode: "code" }); // → "1,234.50 SAR" (ISO code — for accounting tables)

symbolModeSARAEDOMRUse when
auto *(default)*ر.س⃃ U+20C3⃄ U+20C4Default. AED/OMR use the dedicated sign; SAR stays on safe text
new⃁ U+20C1⃃ U+20C3⃄ U+20C4Force the dedicated sign (needs font support)
textر.سد.إر.ع.Always the safe text symbol — renders everywhere
codeSARAEDOMRISO code

Unicode 18.0 (16 September 2026): the AED (U+20C3), OMR (U+20C4) and MVR

(U+20C2) signs are now live, and auto prefers them. Need maximum

compatibility today? Use symbolMode: "text". The Saudi riyal keeps its safe

text default by design. See

the transition section for the full table.

Correct decimal precision — all 22 Arab League countries

Generated from CLDR 48.2.0 at build time and verified on every build:

formatCurrency(1.2, { currency: "KWD" });  // "1.200 د.ك"  ← 3 decimals

formatCurrency(1.2, { currency: "BHD" }); // "1.200 د.ب" ← 3 decimals formatCurrency(1.2, { currency: "IQD" }); // "1.200 ع.د" ← 3 decimals (ISO 4217, not CLDR's 0) formatCurrency(500, { currency: "KMF" }); // "500 ف.ج.ق" ← 0 decimals formatCurrency(500, { currency: "SAR" }); // "500.00 ر.س" ← 2 decimals

DecimalsCurrencies
3KWD, BHD, OMR, JOD, IQD, LYD, TND
0DJF, KMF
2SAR, AED, QAR, and the rest
All currency options
// Resolve from locale region — no need to know the currency code

formatCurrency(99.9, { locale: "ar-BH" }); // "99.900 د.ب" formatCurrency(1234, { locale: "ar-AE", numerals: "arab", symbolMode: "text" }); // "١٬٢٣٤٫٠٠ د.إ" (auto → U+20C3 sign)

// Accounting notation (negatives in parentheses) formatCurrency(-1234.5, { currency: "SAR", accounting: true }); // "(1,234.50 ر.س)"

// Hide/override formatCurrency(100, { currency: "SAR", showSymbol: false, fractionDigits: 0 }); // "100"

// Currency metadata getCurrencyInfo("SAR"); // { // code: "SAR", digits: 2, // symbols: { auto: "ر.س", text: "ر.س", code: "SAR", new: "⃁" }, // unicode: { codepoint: "U+20C1", unicodeVersion: "17.0", live: true, autoDefault: false }, // displayName: "ريال سعودي" // }

Price ranges

只显示了开头部分;其余内容请在仓库中阅读

问 PopNx