Mcp Arabic Toolkit — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Mcp Arabic Toolkit (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
A small Model Context Protocol (MCP) server exposing practical Arabic text utilities. Built with the official mcp Python SDK (FastMCP).
Demonstrates: MCP server authoring / tool development
All tools are implemented for real -- deterministic string processing plus one clearly-labelled heuristic. The pure logic lives in arabic_tools.py (no mcp dependency), so it is independently unit-tested; server.py is a thin MCP wrapper.
| Tool | Description | Example input | Example output |
|---|---|---|---|
normalise_arabic | NFC-normalises, removes diacritics (harakat/tashkil) and tatweel, and optionally unifies letter variants (alef/yeh/teh-marbuta). | الْعَرَبِيَّةُ | العربية |
strip_tashkeel | Removes only the diacritics (and, by default, the tatweel); leaves letters as-is. | كــــتاب | كتاب |
transliterate | Documented, deterministic Arabic→Latin romanisation (simplified DIN 31635 / ALA-LC, ASCII digraphs). | كَتَبَ | {"transliteration": "kataba", "scheme": "din31635-simplified-ascii"} |
detect_dialect | Heuristic dialect guess (Egyptian/Levantine/Gulf/Maghrebi/MSA) from marker words. Not a trained classifier — see limits below. | شو بدك هلق؟ | {"dialect": "levantine", "confidence": 1.0, ...} |
count_tokens | Whitespace-token count plus character and Arabic-character statistics. | مرحبا يا عالم | {"tokens": 3, "characters": 13, ...} |
detect_dialect (read this)detect_dialect is an honest heuristic, not a machine-learning model. It counts hand-picked marker words/particles per dialect and returns the highest scorer. Known limits:
confidence is a crude ratio (winning hits / total hits), not acalibrated probability.
confidence: 0.0 when no markers are found.For production-grade detection, train a supervised classifier (e.g. fastText or a fine-tuned transformer) on a labelled corpus such as MADAR or NADI.
transliterateThe romanisation is deterministic and documented but intentionally simple:
ال is always al- (no sun-letterassimilation), and hamzat al-wasl is not elided.
Requires Python 3.10+.
# Clone, then install the package (editable for local development):
pip install -e .This pulls in the mcp SDK and registers a mcp-arabic-toolkit console script.
The tests themselves need only pytest (no mcp SDK):
pip install pytest# Option A: run the module directly (stdio transport)
python server.py
# Option B: run the installed console script
mcp-arabic-toolkitTo use it from Claude Desktop (or any MCP client), add an entry to the client's MCP server config:
{
"mcpServers": {
"arabic-toolkit": {
"command": "python",
"args": ["/absolute/path/to/mcp-arabic-toolkit/server.py"]
}
}
}python -m pytest tests/ -vThe suite (tests/test_tools.py) imports the pure logic directly and covers every tool with concrete examples (diacritic/tatweel removal, letter unification, transliteration with and without harakat, each dialect, and token counting).
python -c "import arabic_tools; print(arabic_tools.normalise_arabic('الْعَرَبِيَّةُ'))"
# -> العربيةThis package ships a server.json manifest compatible with the official MCP registry.
server.json){
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-07-09/server.schema.json",
"name": "io.github.benjiscollector/mcp-arabic-toolkit",
"description": "MCP server exposing Arabic text utilities: normalisation, tashkeel stripping, transliteration, a heuristic dialect detector, and token counting.",
"status": "active",
"repository": {
"url": "https://github.com/BenjisCollector/mcp-arabic-toolkit",
"source": "github"
},
"version": "0.2.0",
"packages": [
{
"registryType": "pypi",
"registryBaseUrl": "https://pypi.org",
"identifier": "mcp-arabic-toolkit",
"version": "0.2.0",
"transport": { "type": "stdio" }
}
]
}The server name uses the io.github.<owner>/<repo> namespace, which the registry verifies against GitHub ownership during publish.
at:
python -m build
twine upload dist/*mcp-publisher) — see theio.github.*namespace:
mcp-publisher login githubserver.json: mcp-publisher publishTo list this server on the community modelcontextprotocol/servers README as well, see SUBMISSION.md for the exact entry text and PR steps.
MIT — see LICENSE.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.