parsi-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| gregorian_to_jalaliC | Convert a Gregorian date to the Jalali (Persian) calendar. |
| jalali_to_gregorianC | Convert a Jalali (Persian) date to the Gregorian calendar. |
| jalali_year_infoB | Leap-year status and month length for a Jalali year. |
| validate_national_idB | Validate an Iranian national ID (code melli) using its checksum. |
| validate_card_numberA | Validate a 16-digit Iranian bank card number (Luhn). |
| validate_shebaC | Validate an Iranian Sheba (IBAN) number. |
| normalize_mobileB | Validate and normalize an Iranian mobile number to 09xxxxxxxxx. |
| normalize_persian_textB | Normalize Arabic letter variants to Persian, clean spacing, and convert digits to Persian. |
| to_persian_digitsC | Convert any digits in a string to Persian digits. |
| number_to_persian_wordsB | Write a non-negative integer in Persian words, e.g. for invoices. |
| convert_rial_tomanB | Convert between rial and toman (1 toman = 10 rial). |
| bank_from_cardB | Identify the Iranian bank from a card number (first 6 digits / BIN). |
| bank_from_shebaB | Identify the Iranian bank from a Sheba (IBAN) number (3-digit bank code). |
| mobile_operatorB | Detect the mobile operator (MCI/Irancell/Rightel) of an Iranian mobile number. |
| landline_provinceC | Find the province of an Iranian landline number from its area code. |
| validate_postal_codeC | Validate an Iranian 10-digit postal code. |
| persian_words_to_numberB | Convert Persian number words to a number, e.g. 'دویست و پنجاه هزار' -> 250000. |
| format_jalali_dateC | Format a Jalali date. Tokens: YYYY YY MMMM MM M DD D dddd. |
| parse_jalali_dateB | Parse text like '1403/05/09', '۱۴۰۳-۵-۹' or '9 مرداد 1403' into a Jalali date. |
| jalali_addB | Add days, months and/or years to a Jalali date (month overflow clamps to month length). |
| jalali_diffA | Days between two Jalali dates plus a Persian relative description. |
| slugify_persianC | Create a URL slug from Persian/Latin text. |
| sanitize_persian_textB | Fix ZWNJ (half-space) for می/نمی and plural suffixes, Persian punctuation and spacing, Arabic letter variants. |
| calculate_vatB | VAT helper. Rate (percent) must be supplied. mode 'exclusive' = amount excludes tax, 'inclusive' = amount includes tax. |
| format_number_groupedB | Group digits in threes (200000 -> 200,000 or ۲۰۰٬۰۰۰). Accepts Persian/Arabic digits. |
| parse_grouped_numberA | Strip separators and Persian/Arabic digits to a clean number, e.g. '۲۰۰٬۰۰۰' -> '200000'. |
| price_to_persian_wordsB | Amount in Persian words with unit, e.g. 200000 toman -> 'دویست هزار تومان'. Toman may have one decimal digit (tenths = rials). |
| price_input_snippetB | 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. |
| rtl_guidelinesA | Full RTL frontend guidelines for Persian/Arabic UIs (also available as prompt and resource 'rtl-frontend-guidelines'). |
| rtl_audit_cssB | 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. |
| rtl_convert_cssB | Convert physical CSS (and React style objects) to logical properties. |
| rtl_convert_tailwindB | Convert Tailwind physical utilities to logical ones (ml-4 -> ms-4, pr-2 -> pe-2, text-left -> text-start). |
| rtl_starter_snippetC | Minimal RTL-ready setup for html, css, tailwind, nextjs, react or vue. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| rtl-frontend-guidelines | Guidelines for building RTL-first Persian frontends (load before designing UI). |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| rtl-frontend-guidelines | RTL frontend guidelines for Persian UIs |
TDQS
Scored across 33 tools
Most tools target clearly distinct resources/actions (date conversion, validation, RTL, number formatting), making selection straightforward. However, normalize_persian_text and sanitize_persian_text overlap significantly (both fix Arabic letter variants and spacing), and number_to_persian_words vs price_to_persian_words plus format_number_grouped vs parse_grouped_number require careful reading to distinguish.
Nearly all tools use snake_case with a verb_noun pattern (slugify_persian, calculate_vat, format_jalali_date, validate_sheba). A few are noun-first or prefix-grouped (rtl_guidelines, rtl_audit_css, price_input_snippet), but these still read consistently and are clearly grouped by domain.
At 33 tools the surface is heavy for a general Persian-utilities server, exceeding the comfortable range. The breadth is genuine (text, numbers, dates, RTL, validation, banking/telecom), but a few tools (normalize vs sanitize, price_input_snippet vs price_to_persian_words) add count without much new capability.
Coverage is strong: text normalization/digits, number/price formatting both directions, full Jalali date conversion/formatting/math, core Iranian validators, and bank/operator identification. Minor gaps exist (e.g. no generic text search or broader bank-name lookup), but nothing that blocks typical workflows.