parsi-mcp

MCPcommunity
v0.3.0Amir HosseinMITUpdated 4d agonpmGitHub

MCP server for Persian/Iranian apps: Jalali calendar, validators, Persian text, price inputs, RTL frontend tools

Works in
ClaudeCursorCopilotGemini

Inferred from the transports this listing declares (stdio). A client not listed here hasn’t been ruled out — it just isn’t something Forge can confirm.

Automatically indexed from public sources. Not yet verified by the developer on Forge.Claim this listing →
34Downloads/wk
5GitHub stars
4d agoLast update
Package
AuthorAmir Hossein
LicenseMIT
Version0.3.0
Sourcenpm+mcp-registry
Trust Status
C
40/100Caution
✓Listed in Forge index+10/10
—Publisher identity verified+0/20
→ Publisher: run `forge publish` from the package repo to claim ownership
—Ed25519 publish signature+0/5
→ Included automatically when the publisher runs `forge publish`
—Domain verification+0/5
→ Publisher: host /.well-known/forge.json on the package homepage with { "publisher": "<github-login>" }
—npm Trusted Publishing (Sigstore)+0/5
→ Publish from GitHub Actions with --provenance so the attestation binds this package to this repo
—npm maintainer match+0/5
→ Earned once your identity is verified above and that login is an npm maintainer of this package
✓CVE scan · clean+30/30
—Static analysis · clean+0/20
→ Suspicious install scripts or obfuscated code detected
Paste into Claude Code, Cursor, or any AI assistant to fix all gaps
StatusCommunity-indexed
PublisherUnverified
SignatureUnsigned
Domain—
Provenance—
Dependencies✓ 60 resolved+ · none vulnerable
Tool surface40 tools · none privileged
Security scan⚠ Warnings (1)v0.3.0 · todayHow well does this scan work?
PROMPTtool:persian_ordinalInvisible Unicode characters (zero-width / direction override)
EvalsNone
IndexedOct 22, 2026

Verification confirms publisher identity (repo ownership), not code safety. The security scan covers known CVEs and suspicious install scripts.

Tools

40 tools · none privileged · 1 flagged for injection
Statically extracted from the published packagev0.3.0 · 23h ago

Read out of the source npm actually ships, at scan time. The package was never executed. Tools registered dynamically at runtime, or hidden inside bundled or minified code, can be missed — so this is a floor on the tool surface, not a complete census of it.

gregorian_to_jalaliConvert a Gregorian date to the Jalali (Persian) calendar.

Convert a Gregorian date to the Jalali (Persian) calendar.

No input schema was published for this tool.

jalali_to_gregorianConvert a Jalali (Persian) date to the Gregorian calendar.

Convert a Jalali (Persian) date to the Gregorian calendar.

No input schema was published for this tool.

jalali_year_infoLeap-year status and month length for a Jalali year.

Leap-year status and month length for a Jalali year.

No input schema was published for this tool.

validate_national_idValidate an Iranian national ID (code melli) using its checksum.

Validate an Iranian national ID (code melli) using its checksum.

No input schema was published for this tool.

validate_card_numberValidate a 16-digit Iranian bank card number (Luhn).

Validate a 16-digit Iranian bank card number (Luhn).

No input schema was published for this tool.

validate_shebaValidate an Iranian Sheba (IBAN) number.

Validate an Iranian Sheba (IBAN) number.

No input schema was published for this tool.

normalize_mobileValidate and normalize an Iranian mobile number to 09xxxxxxxxx.

Validate and normalize an Iranian mobile number to 09xxxxxxxxx.

No input schema was published for this tool.

normalize_persian_textNormalize Arabic letter variants to Persian, clean spacing, and convert digits to Persian.

Normalize Arabic letter variants to Persian, clean spacing, and convert digits to Persian.

No input schema was published for this tool.

to_persian_digitsConvert any digits in a string to Persian digits.

Convert any digits in a string to Persian digits.

No input schema was published for this tool.

number_to_persian_wordsWrite a non-negative integer in Persian words, e.g. for invoices.

Write a non-negative integer in Persian words, e.g. for invoices.

No input schema was published for this tool.

convert_rial_tomanConvert between rial and toman (1 toman = 10 rial).

Convert between rial and toman (1 toman = 10 rial).

No input schema was published for this tool.

bank_from_cardIdentify the Iranian bank from a card number (first 6 digits / BIN).

Identify the Iranian bank from a card number (first 6 digits / BIN).

No input schema was published for this tool.

bank_from_shebaIdentify the Iranian bank from a Sheba (IBAN) number (3-digit bank code).

Identify the Iranian bank from a Sheba (IBAN) number (3-digit bank code).

No input schema was published for this tool.

mobile_operatorDetect the mobile operator (MCI/Irancell/Rightel) of an Iranian mobile number.

Detect the mobile operator (MCI/Irancell/Rightel) of an Iranian mobile number.

No input schema was published for this tool.

landline_provinceFind the province of an Iranian landline number from its area code.

Find the province of an Iranian landline number from its area code.

No input schema was published for this tool.

validate_postal_codeValidate an Iranian 10-digit postal code.

Validate an Iranian 10-digit postal code.

No input schema was published for this tool.

persian_words_to_numberConvert Persian number words to a number, e.g. 'دویست و پنجاه هزار' -> 250000.

Convert Persian number words to a number, e.g. 'دویست و پنجاه هزار' -> 250000.

No input schema was published for this tool.

format_jalali_dateFormat a Jalali date. Tokens: YYYY YY MMMM MM M DD D dddd.

Format a Jalali date. Tokens: YYYY YY MMMM MM M DD D dddd.

No input schema was published for this tool.

parse_jalali_dateParse text like '1403/05/09', '۱۴۰۳-۵-۹' or '9 مرداد 1403' into a Jalali date.

Parse text like '1403/05/09', '۱۴۰۳-۵-۹' or '9 مرداد 1403' into a Jalali date.

No input schema was published for this tool.

jalali_addAdd days, months and/or years to a Jalali date (month overflow clamps to month length).

Add days, months and/or years to a Jalali date (month overflow clamps to month length).

No input schema was published for this tool.

jalali_diffDays between two Jalali dates plus a Persian relative description.

Days between two Jalali dates plus a Persian relative description.

No input schema was published for this tool.

slugify_persianCreate a URL slug from Persian/Latin text.

Create a URL slug from Persian/Latin text.

No input schema was published for this tool.

sanitize_persian_textFix ZWNJ (half-space) for می/نمی and plural suffixes, Persian punctuation and spacing, Arabic letter variants.

Fix ZWNJ (half-space) for می/نمی and plural suffixes, Persian punctuation and spacing, Arabic letter variants.

No input schema was published for this tool.

calculate_vatVAT helper. Rate (percent) must be supplied. mode 'exclusive' = amount excludes tax, 'inclusive' = amount includes tax.

VAT helper. Rate (percent) must be supplied. mode 'exclusive' = amount excludes tax, 'inclusive' = amount includes tax.

No input schema was published for this tool.

format_number_groupedGroup digits in threes (200000 -> 200,000 or ۲۰۰٬۰۰۰). Accepts Persian/Arabic digits.

Group digits in threes (200000 -> 200,000 or ۲۰۰٬۰۰۰). Accepts Persian/Arabic digits.

No input schema was published for this tool.

parse_grouped_numberStrip separators and Persian/Arabic digits to a clean number, e.g. '۲۰۰٬۰۰۰' -> '200000'.

Strip separators and Persian/Arabic digits to a clean number, e.g. '۲۰۰٬۰۰۰' -> '200000'.

No input schema was published for this tool.

price_to_persian_wordsAmount in Persian words with unit, e.g. 200000 toman -> 'دویست هزار تومان'. Toman may have one decimal digit (tenths = rials).

Amount in Persian words with unit, e.g. 200000 toman -> 'دویست هزار تومان'. Toman may have one decimal digit (tenths = rials).

No input schema was published for this tool.

price_input_snippetReady-to-use RTL-friendly price input code: digit grouping while typing with caret preserved, live Persian words (aria-live), raw value submission. variant 'core' returns the shared helpers.

Ready-to-use RTL-friendly price input code: digit grouping while typing with caret preserved, live Persian words (aria-live), raw value submission. variant 'core' returns the shared helpers.

No input schema was published for this tool.

rtl_guidelinesFull RTL frontend guidelines for Persian/Arabic UIs (also available as prompt and resource 'rtl-frontend-guidelines').

Full RTL frontend guidelines for Persian/Arabic UIs (also available as prompt and resource 'rtl-frontend-guidelines').

No input schema was published for this tool.

rtl_audit_cssScan CSS/HTML/JSX/Tailwind text for LTR-only patterns (margin-left, ml-4, text-align:left, float:left, left/right, forced ltr, directional icons...) and suggest logical replacements.

Scan CSS/HTML/JSX/Tailwind text for LTR-only patterns (margin-left, ml-4, text-align:left, float:left, left/right, forced ltr, directional icons...) and suggest logical replacements.

No input schema was published for this tool.

rtl_convert_cssConvert physical CSS (and React style objects) to logical properties.

Convert physical CSS (and React style objects) to logical properties.

No input schema was published for this tool.

rtl_convert_tailwindConvert Tailwind physical utilities to logical ones (ml-4 -> ms-4, pr-2 -> pe-2, text-left -> text-start).

Convert Tailwind physical utilities to logical ones (ml-4 -> ms-4, pr-2 -> pe-2, text-left -> text-start).

No input schema was published for this tool.

rtl_starter_snippetMinimal RTL-ready setup for html, css, tailwind, nextjs, react or vue.

Minimal RTL-ready setup for html, css, tailwind, nextjs, react or vue.

No input schema was published for this tool.

persian_relative_timePersian relative time like '۳ روز پیش' or '۲ ساعت دیگر'. Pass an ISO timestamp; 'now' defaults to the current time. Months = 30 days, years = 365 days.

Persian relative time like '۳ روز پیش' or '۲ ساعت دیگر'. Pass an ISO timestamp; 'now' defaults to the current time. Months = 30 days, years = 365 days.

No input schema was published for this tool.

jalali_month_gridCalendar grid for a Jalali month (for date-pickers): weeks of 7 cells with day number, Gregorian date and Friday flag; null cells pad the edges. Default week starts Saturday.

Calendar grid for a Jalali month (for date-pickers): weeks of 7 cells with day number, Gregorian date and Friday flag; null cells pad the edges. Default week starts Saturday.

No input schema was published for this tool.

jalali_period_rangeStart/end (Jalali and Gregorian) of the Jalali day, week (Saturday-Friday), month, quarter (season) or year containing a date. Use for reports and finance periods instead of Gregorian date libraries.

Start/end (Jalali and Gregorian) of the Jalali day, week (Saturday-Friday), month, quarter (season) or year containing a date. Use for reports and finance periods instead of Gregorian date libraries.

No input schema was published for this tool.

persian_ordinalinjection riskPersian ordinal words: 3 -> سوم, 21 -> بیست و یکم, 30 -> سی‌ام. 1 gives اول (set firstAsYekom for یکم).

Persian ordinal words: 3 -> سوم, 21 -> بیست و یکم, 30 -> سی‌ام. 1 gives اول (set firstAsYekom for یکم).

INJECTIONInvisible Unicode characters (zero-width / direction override)وم, 21 -> بیست و یکم, 30 -> سی\u200cام. 1 gives اول (set firstAsYe

No input schema was published for this tool.

persian_fuzzy_searchFuzzy-match a query against candidate strings, treating Arabic/Persian letter variants (ي/ی, ك/ک, آ/ا), diacritics, ZWNJ and digit styles as equal. Returns ranked matches with scores.

Fuzzy-match a query against candidate strings, treating Arabic/Persian letter variants (ي/ی, ك/ک, آ/ا), diacritics, ZWNJ and digit styles as equal. Returns ranked matches with scores.

No input schema was published for this tool.

persian_sortSort strings in Persian alphabetical order (ا ب پ ت ... ی). Digits first (numeric), then Persian, then Latin. Ignores ZWNJ and Arabic/Persian letter variants.

Sort strings in Persian alphabetical order (ا ب پ ت ... ی). Digits first (numeric), then Persian, then Latin. Ignores ZWNJ and Arabic/Persian letter variants.

No input schema was published for this tool.

fix_keyboard_layoutFix text typed with the wrong keyboard layout using the standard Iranian layout (ISIRI 9147): 'sghl' -> 'سلام', and Persian typed on English back to Latin. direction 'auto' picks by script.

Fix text typed with the wrong keyboard layout using the standard Iranian layout (ISIRI 9147): 'sghl' -> 'سلام', and Persian typed on English back to Latin. direction 'auto' picks by script.

No input schema was published for this tool.

40 of 40 tools published a description.

Tool names and descriptions are written by the publisher and shown verbatim as inert text. They are the strings an MCP client passes to a model, so Forge scans them for prompt-injection patterns — any finding appears with the security scan above. “Privileged” is a keyword match on the tool name, not an audit of what the tool does: a benign-sounding name can still do anything.

About

MCP server for Persian/Iranian apps: Jalali calendar, validators, Persian text, price inputs, RTL frontend tools

Keywords
mcpmodel-context-protocolmcp-serverpersianfarsiiranjalalishamsirtltomanshebaclaude-codecursorskills
Alternatives
Comparing tool surfaces…

Dependency tree

What one Forge scan resolved from npm metadata on 2026-10-22 — observed resolution, not a publisher declaration.

60 packages resolved · 3 direct · none carrying advisories Resolution stops at depth 4 and 60 packages.

The crawl stopped at the depth-4 limit. Anything below that level was never resolved.

The crawl stopped at the 60-package limit. The rest of the tree was never resolved.

36 more resolved packages are not drawn here (display cap: 24). Every dependency carrying an advisory is drawn regardless of the cap. Full inventory (CycloneDX SBOM)

Declared but not resolved

55 declared dependencies never landed in the tree. They are missing from Forge's resolution, not from the package.

+43 more not listed. The counts by reason above cover all of them.

Not followed: peerDependencies. This tree covers runtime dependencies only, so anything those pull in was never resolved.