MCP server for Dubai and UAE public APIs and business knowledge
Project description
MCP-Dubai
خادم MCP للبيانات العامة في دبي والإمارات وللمعرفة العملية لتأسيس الأعمال An MCP server for Dubai and UAE public data plus curated business setup knowledge
Connect AI agents (Claude, GPT, Cursor, Copilot) to Dubai and UAE public APIs and curated business setup knowledge.
🔧 91 tools · 🏛️ 29 features · 📚 17 verified knowledge domains · ✅ 9 anonymous APIs · 💼 51 business advisor tools · 🤖 2 agent skills
Quick Start · Tool Catalogue · Knowledge Freshness · Architecture · Roadmap · Contributing
Dubai gave me a life. I promised myself I'd give something back.
by Mahdi Salmanzade, Software Developer, Dubai 📧 mahdi@clrtstudio.com · 📅 April 2026
⚠️ Knowledge Date: April 2026
Business rules in the UAE (corporate tax, visas, free zone pricing, accelerator cycles, API migrations) change frequently. Always verify with the official source before making real decisions. Every
biz/*tool returns aknowledge_datefield with its own per-domain freshness stamp, and you can callget_knowledge_status()at any time to see which domains were verified when.
📋 Table of Contents
- What is this?
- Why MCP-Dubai exists
- Quick Start
- Tool Catalogue
- Data Sources
- Configuration
- Knowledge Freshness
- Architecture
- Example Queries
- Roadmap
- Contributing
- Disclaimer
- Acknowledgments
- License
🌟 What is this?
MCP-Dubai is a Model Context Protocol server that gives AI agents a single, well-typed interface to two distinct kinds of knowledge about Dubai and the UAE:
- Public Dubai and UAE government data, like prayer times, exchange rates, school ratings, real estate transactions, transport networks, and more.
- Curated business setup knowledge that no other MCP server has, like which free zone to choose for a SaaS startup, which visa to apply for as a freelance developer, how to estimate corporate tax under the QFZP rules, the full Hague-not-an-option attestation chain, the 11 most common founder mistakes, and a 14-bank matrix with DUL fast-track eligibility.
Drop it into Claude Desktop, Cursor, VS Code, or any MCP-compatible client and your AI assistant can answer questions like "what time is Fajr tomorrow in Dubai Marina?" or "where should I set up my SaaS company in Dubai with a 25K AED budget?" with grounded, source-cited answers instead of SEO spam.
💡 Why MCP-Dubai exists
Dubai's public data lives across at least a dozen platforms (api.dubaipulse.gov.ae, opendata.fcsc.gov.ae, bayanat.ae, centralbank.ae, aladhan.com, web.khda.gov.ae, aviationweather.gov, and more) each with its own auth, format, and rate limits. Most agencies do not expose self-serve APIs. The few that do are gated behind email-issued OAuth credentials or paywalled at AED 31,500/year per product.
On top of that, founders coming to Dubai face the same questions over and over: which license, which visa, which bank, how much, how long. The web answers are SEO-spam from agency setup firms.
MCP-Dubai is the honest, code-first answer.
- Built around 9 anonymous APIs that work today (Al-Adhan, Quran Cloud, FCSC CKAN, CBUAE Umbraco, KHDA XLSX, aviationweather.gov, OSM Overpass, WAQI air quality, curated UAE holidays).
- Layered with 6 curated business knowledge domains that compress 8,600+ lines of source-cited research into structured tools.
- Uses the same
KnowledgeMetadataenvelope on every business response so the LLM (and you) can always see when each domain was last verified. - Inspired by mcp-brasil. Aligned with Dubai Data Law (Law 26 of 2015). Run as a community contribution.
🚀 Quick Start
Install via uvx (recommended)
uvx mcp-dubai
Or install with pip
pip install mcp-dubai
python -m mcp_dubai
Claude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"dubai": {
"command": "uvx",
"args": ["mcp-dubai"]
}
}
}
Claude Desktop with Dubai Pulse credentials (unlocks Tier 1 tools)
Tier 1 (Dubai Pulse OAuth) features are not yet wired up but the auth scaffolding is ready. When they ship, set:
{
"mcpServers": {
"dubai": {
"command": "uvx",
"args": ["mcp-dubai"],
"env": {
"MCP_DUBAI_PULSE_CLIENT_ID": "your-client-id",
"MCP_DUBAI_PULSE_CLIENT_SECRET": "your-client-secret",
"MCP_DUBAI_WAQI_TOKEN": "optional-waqi-token"
}
}
}
}
Get Dubai Pulse credentials by requesting dataset access at data.dubai. Get a WAQI token (free) at aqicn.org/data-platform/token.
Cursor / VS Code
Create .vscode/mcp.json in your project root:
{
"servers": {
"dubai": {
"command": "uvx",
"args": ["mcp-dubai"]
}
}
}
Claude Code CLI
claude mcp add dubai -- uvx mcp-dubai
🧰 Tool Catalogue
91 tools across 29 features. All Tier 0 features ship today and work without any credentials. Tier 2 business knowledge and agent-skill tools are also live. Tier 1 (Dubai Pulse OAuth) DLD and RTA feature wrappers ship with graceful credential-missing fallbacks. Use recommend_tools(query) to find the right tool for any natural-language question.
✅ Tier 0: anonymous APIs (no auth, ship today)
| Feature | Tools | What it does |
|---|---|---|
al_adhan |
prayer_times_for, prayer_times_calendar, qibla_direction, hijri_to_gregorian, gregorian_to_hijri |
Prayer times for any UAE city or coords, Qibla compass bearing, Hijri/Gregorian conversion. Method 8 (Gulf Region) is the default; method 16 (Dubai experimental) matches Dubai mosque announcements. |
quran_cloud |
quran_surah, quran_ayah, quran_juz, quran_search |
Full Quran text and translations. Multiple editions (Arabic Uthmani, Sahih International English, Urdu, etc.). |
cbuae |
cbuae_exchange_rates, cbuae_base_rate |
Central Bank of UAE exchange rates against AED for 76 currencies (today or historical), bilingual rows with ISO 4217 codes. Sourced from the undocumented Umbraco endpoints, no auth. |
fcsc_ckan |
fcsc_search_dataset, fcsc_get_dataset, fcsc_list_organizations, fca_trade_stats |
Anonymous read against the UAE federal open data CKAN portal. Includes a convenience wrapper for Federal Customs Authority trade statistics (the easiest no-auth path for UAE trade data). |
khda |
khda_search_school, khda_list_curricula, khda_list_areas |
Search Dubai private schools by name, area, curriculum, KHDA inspection rating, or fee ceiling. Backed by a curated snapshot of well-known schools; full XLSX refresh script in roadmap. |
aviation_weather |
weather_uae_icao, weather_uae_all |
METAR (current observation) and TAF (forecast) for the 6 UAE international airports (OMDB Dubai International, OMDW Al Maktoum, OMSJ Sharjah, OMAA Abu Dhabi, OMAL Al Ain, OMRK RAK). The standard substitute for the missing NCM public API. |
air_quality |
air_quality_dubai, air_quality_by_coords, air_quality_dubai_stations |
Real-time air quality (AQI, PM2.5, PM10, NO2, SO2, CO, O3) for Dubai stations via WAQI/AQICN. Requires a free token from aqicn.org. Uses the graceful degradation pattern: returns a structured help error if the token is missing. |
osm_overpass |
osm_search_poi, osm_list_categories |
Find OpenStreetMap POIs near a Dubai location: restaurants, pharmacies, mosques, ATMs, metro stations, malls, parking, etc. 22 curated categories. |
holidays |
uae_holidays, uae_next_holiday, is_uae_holiday |
UAE federal public holidays. Lunar holidays (Eid Al Fitr, Eid Al Adha, Hijri New Year, Mawlid, Arafat Day) are flagged as provisional until officially announced by MoHRE. |
💼 Tier 2: curated business knowledge (no external API, ship today)
| Feature | Tools | What it does |
|---|---|---|
setup_advisor |
setup_advisor |
The headline tool. Recommends mainland vs free zone vs offshore for a Dubai business setup. Cross-references curated free zones, visas, banks, and tax rules. Gives jurisdiction, candidate free zones, reasoning, warnings, cost range, timeline, and next steps. Surfaces the SaaS-is-not-QFZP-Qualifying warning automatically. |
free_zones |
list_free_zones, free_zone_details, compare_free_zones, list_offshore |
All 12 major Dubai free zones (DMCC, DIFC Innovation, JAFZA, DAFZA, IFZA, Meydan, Dubai South, DSO/Dtec, TECOM, DHCC, DPC/DSC, DIFC full FS) with cost, office options, visa quota, and bank acceptance reputation. Plus JAFZA Offshore and RAK ICC. Renewal cost myth is corrected here: it is NOT 20-30% higher than setup. |
visas |
list_visa_types, visa_details, visa_recommend, golden_visa_check |
All 13 UAE visa types. Green Visa is correctly split into the AED 15K/month skilled employee track and the AED 360K/24-month freelancer track. Golden Visa specialized talent salary tightened to AED 30,000 basic monthly verified over 24 months (early 2026 update). |
banking |
list_banks, bank_details, bank_recommendation, dul_eligibility |
14-bank matrix (Wio, Mashreq NEOBiz, Zand, ruya, Emirates NBD, RAKBANK, ADCB, FAB, CBD, ADIB, HSBC, StanChart, Citi, Liv) on onboarding speed, minimum balance, and crypto stance. Plus DUL (Dubai Unified Licence) fast-track eligibility check listing the 7 participating banks and 3 participating free zones. |
founder_essentials |
attestation_guide, pro_services_estimate, legal_translation_estimate, chamber_of_commerce_info, setup_timeline_estimate, common_founder_mistakes |
The boring stuff that breaks setups. Full 5-step UAE legalization chain (UAE is NOT a Hague Apostille member, despite what some sources claim), PRO service cost estimator, MOJ legal translation calculator, Dubai Chamber of Commerce membership and CoO fees, realistic 1-to-16-week banking timelines, and the 11 most common founder mistakes with impact and fix for each. |
tax_compliance |
corporate_tax_estimate, vat_filing_calendar, qfzp_check, esr_status |
UAE Corporate Tax (Federal Decree-Law 47 of 2022, 9% above AED 375,000), VAT (5%), QFZP (Qualifying Free Zone Person under Ministerial Decision 229 of 2025, with the explicit SaaS-not-qualifying warning), and ESR status (DEAD for periods after Dec 2022 per Cabinet Resolution 98 of 2024). |
compliance |
aml_requirements, ubo_filing_guide, pdpl_compliance |
UAE AML/CFT obligations with DNFBP detection (real estate, precious metals, auditors, CSPs, lawyers, notaries) routing to goAML. UBO filing rules (Cabinet Decision 58/2020, 25% threshold, 15-day update window). PDPL data protection compliance for UAE federal, DIFC DPL, and ADGM DPR. |
funding |
accelerator_search, vc_list, grant_programs |
Accelerator program search filtered by sector, free/paid, and location. Active UAE VC list. Grant programs including Mohammed bin Rashid Innovation Fund and Khalifa Fund. |
gov_portals |
portal_guide |
Cross-linked guide to UAE government portals (MOHRE, ICP, FTA, EmaraTax, GDRFA, Dubai Now, TAS HEEL, Tamm, Tawjeeh) with what each does and which service sits where. |
dcde |
dcde_programs, chamber_membership |
Dubai Chamber of Digital Economy programs (Dubai Unified Licence fast-track, DIIC, Techstars Dubai) and chamber membership benefits and fees. |
events |
startup_events, gitex_info, ens_calendar |
Active Dubai startup events calendar, GITEX Global and GITEX Future Stars specifics, and the Emirates Nature Society quarterly event rotation. |
parkin |
parking_zones, nol_card_guide |
Dubai Parkin zone tariffs (A, B, C, D, E, F, Mall of Emirates, Dubai Mall) and the Nol Card system (Silver, Gold, Personal) with cap rules and RTA coverage. |
ip_trademark |
trademark_registration, ip_protection |
UAE trademark registration process via MOIAT (MOE migration complete), classes, timeline, and the three protection routes for software and brand IP. |
halal |
halal_certification, moiat_requirements |
Halal certification process via ESMA/UAE.S Halal National Mark, MOIAT import requirements for food, beverages, cosmetics, and pharmaceuticals. |
createapps |
createapps_championship, submission_guide |
Dubai Create Apps Championship entry rules, prize structure, timeline, and a submission-ready step-by-step guide. |
🤖 Tier 2 agent skills
| Feature | Tools | What it does |
|---|---|---|
arabic_writer |
list_honorifics, addressee_block, business_letter_template, list_salutations |
Bilingual Arabic/English business letter templates with correct UAE honorifics (HH, HE, HRH, Sheikh, Sheikha), addressee blocks, salutations, and closings. Useful when writing to government entities and senior family. |
data_analyst |
plan_query, list_plan_categories, synthesize_report, analyze_setup_decision |
Cross-tool planning and Markdown report synthesis. Hands back a sequenced plan (founder_setup, market_research, compliance_checkup, relocation) that the LLM executes step by step, then renders the results as a structured report. |
🧠 Tier 3: meta-tools
| Tool | What it does |
|---|---|
recommend_tools(query, top_k=5) |
BM25-powered tool discovery. Pass a natural-language query, get a ranked list of the most relevant tools so the LLM does not have to scan all 90 at once. |
list_features() |
List every registered feature with its tier, auth requirement, and tool count. |
get_knowledge_status() |
Read the freshness registry. Returns every registered business knowledge domain with its knowledge_date, volatility, verify_at URL, and disclaimer. |
about() |
Return the package version, knowledge date, live tool count, and repo URL. Useful for clients that want to confirm which version is running without scanning the full catalogue. |
🔐 Tier 1: Dubai Pulse OAuth
Feature wrappers for dld (real estate) and rta (transport) ship today with the graceful credential-missing pattern: tools return a structured success: false with setup instructions until you set MCP_DUBAI_PULSE_CLIENT_ID and MCP_DUBAI_PULSE_CLIENT_SECRET. See CREDENTIALS.md for the full walkthrough.
| Feature | Tools | What it does |
|---|---|---|
dld |
dld_search_transactions, dld_search_rent_contracts, dld_lookup_broker |
Dubai Land Department real estate sale transactions, Ejari rent contracts, and RERA broker lookup. |
rta (Pulse) |
rta_search_metro_stations, rta_search_bus_routes, rta_salik_tariff |
RTA metro stations (red and green lines), bus routes, and the Salik toll tariff. The rta_gtfs_static_url tool is open-data and needs no credentials. |
More Dubai Pulse feature wrappers (DHA health, DEWA, DTCM, DET, Dubai Municipality, Dubai Customs, Dubai Airports) are on the roadmap once specific datasets are requested.
📊 Data Sources
| Source | Auth | What we use | Tools |
|---|---|---|---|
| Al-Adhan API | ✅ Open | Prayer times, Qibla, Hijri calendar | al_adhan |
| Al-Quran Cloud | ✅ Open | Quran text and translations | quran_cloud |
| CBUAE Umbraco endpoints | ✅ Open (undocumented) | FX rates, base rate | cbuae |
| FCSC Open Data | ✅ Open (CKAN) | UAE federal datasets, FCA trade | fcsc_ckan |
| KHDA Resources | ✅ Open (XLSX) | Dubai schools | khda |
| aviationweather.gov | ✅ Open | METAR / TAF for UAE ICAOs | aviation_weather |
| OSM Overpass | ✅ Open | POI fallback | osm_overpass |
| WAQI / AQICN | 🔑 Free key | Air quality | air_quality |
| Curated UAE federal calendar | 📚 Static | Public holidays | holidays |
| Curated business knowledge files | 📚 Static | Free zones, visas, banks, founder essentials, tax | setup_advisor, free_zones, visas, banking, founder_essentials, tax_compliance |
| Dubai Pulse Gateway | 🔐 OAuth (planned) | DLD, RTA, DHA, DEWA, DET, DTCM, DM, Dubai Airports | Tier 1 (Phase 4) |
| DLD API Gateway | 💰 Paid (~AED 31,500/yr per product) | Ejari, Mollak, Trakheesi, Rental Index | Not built (we use Dubai Pulse open data instead) |
Things we will NOT build (full list in DISCLAIMER.md): Salik account/balance/trips (private app), NABIDH clinical data (vendor-only PHI), DMCC public-search scraping (ToS-banned), NCM weather wrapper (no public API), DM zoning/parcels (request-only paid), CBUAE Open Finance regulated TPP framework. We also explicitly do not promise A-to-F food grades from the open feed (the consumer app shows them but the open dataset schema is unconfirmed).
Upstream Status
Some government endpoints have deployed bot protection (Cloudflare) since v0.1.0 released. These tools return a structured success: false with error.status of upstream_blocked instead of crashing. The rest of the package is unaffected.
| Tool | Endpoint | Status as of 2026-04-13 |
|---|---|---|
cbuae_exchange_rates |
centralbank.ae Exchange endpoint |
✅ Working (scraper updated in v0.1.2 for the new Arabic three-cell DOM) |
cbuae_base_rate |
centralbank.ae InterestRate endpoint |
🔶 Cloudflare-blocked |
fcsc_search_dataset |
opendata.fcsc.gov.ae CKAN |
🔶 Cloudflare-blocked |
fcsc_get_dataset |
opendata.fcsc.gov.ae CKAN |
🔶 Cloudflare-blocked |
fcsc_list_organizations |
opendata.fcsc.gov.ae CKAN |
🔶 Cloudflare-blocked |
fca_trade_stats |
opendata.fcsc.gov.ae CKAN |
🔶 Cloudflare-blocked (delegates to fcsc_search_dataset) |
cbuae_exchange_rates rows now include currency (English), currency_ar (Arabic as returned by CBUAE), iso_code (ISO 4217), and rate_aed. Unknown currencies pass through with iso_code: null and currency: null so new CBUAE entries are never silently dropped.
Clients should check result["success"] and read result["error"]["status"] / result["error"]["reason"] for a user-facing message. We track these endpoints and will restore data access when the upstream blocks are lifted or alternative sources are wired up.
⚙️ Configuration
Zero keys required to run 82 of 91 tools. For the full walkthrough of every environment variable, where to get each credential, and step-by-step setup for Dubai Pulse, WAQI, and Calendarific, see CREDENTIALS.md.
| Env Var | Required | Default | Unlocks |
|---|---|---|---|
MCP_DUBAI_PULSE_CLIENT_ID |
Tier 1 only | None |
Tier 1 Dubai Pulse OAuth tools (when shipped) |
MCP_DUBAI_PULSE_CLIENT_SECRET |
Tier 1 only | None |
Tier 1 Dubai Pulse OAuth tools (when shipped) |
MCP_DUBAI_PULSE_API_BASE |
No | https://api.dubaipulse.gov.ae |
Override base URL for the data.dubai migration |
MCP_DUBAI_DATA_PORTAL_BASE |
No | https://data.dubai |
Override portal URL |
MCP_DUBAI_WAQI_TOKEN |
Air quality only | None |
air_quality_dubai, air_quality_by_coords |
MCP_DUBAI_CALENDARIFIC_KEY |
No | None |
Future Calendarific holiday refresh |
MCP_DUBAI_LOG_LEVEL |
No | INFO |
Log verbosity |
MCP_DUBAI_HTTP_TIMEOUT |
No | 30.0 |
HTTP timeout in seconds |
MCP_DUBAI_HTTP_MAX_RETRIES |
No | 3 |
Tenacity retry budget |
Every variable is optional. The server starts and runs all 9 Tier 0 features, all 15 Tier 2 business features, and both agent skills without any of them.
📅 Knowledge Freshness
The hardest thing about a Dubai business-knowledge MCP is that the rules move. Tax thresholds, visa criteria, free zone pricing, and even API base URLs all change inside a single quarter. This project handles that with seven mechanisms:
- Top-of-file timestamp on every curated JSON file (
knowledge_date: 2026-04-13). - Per-domain
KNOWLEDGEconstant in everybiz/*module, registered with the sharedKnowledgeRegistryat import time. knowledgeblock on every business tool response withknowledge_date,volatility,verify_atURL, anddisclaimer.get_knowledge_status()meta-tool that reads from the registry, so a single update flows through automatically.- README badge + ⚠️ callout under the maintainer's note.
- Volatility tags by domain: 🟢 stable (yearly re-verify), 🟡 medium (quarterly), 🔴 high (quarterly or monthly).
- Verification queue of open items tracked by maintainers.
Volatility map (current):
| Domain | Volatility | Re-verify cadence |
|---|---|---|
setup_advisor, free_zones, visas, tax_compliance |
🔴 high | quarterly |
banking, founder_essentials |
🟡 medium | quarterly |
| Tier 0 anonymous APIs | 🟢 stable | yearly |
| Dubai Pulse dataset slugs (when wired) | 🟡 medium | quarterly (data.dubai migration in progress) |
| Accelerator cohort dates, event calendar (when shipped) | 🔴 high | monthly |
Recent rule changes captured (as of 2026-04-13):
- QFZP Qualifying Activities updated by Ministerial Decision 229/2025 (SaaS still excluded).
- CT late-registration penalty waived if first return filed within 7 months (FTA, April 2025).
- Golden Visa specialized talent salary tightened to AED 30,000 basic monthly verified over 24 months (early 2026).
- ESR repealed for periods after 31 December 2022 (Cabinet Resolution 98/2024).
- VARA V2.0 Rulebook compliance deadline 19 June 2025.
- Dubai parking spun out of RTA into Parkin Company PJSC, December 2023, with variable tariffs live since 4 April 2025. Note: "Mawaqif" is Abu Dhabi, not Dubai.
- Ministry of Economy rebranded to Ministry of Economy and Tourism (MOET) in 2025.
- Federal health insurance mandate kicked in January 2025 (UAE-wide).
🏗️ Architecture
src/mcp_dubai/
├── __init__.py
├── __main__.py # python -m mcp_dubai entry point
├── server.py # FastMCP root + meta-tools + explicit feature mounts
├── _shared/
│ ├── auth.py # Dubai Pulse OAuth + availability() pattern
│ ├── constants.py # All base URLs env-overridable
│ ├── discovery.py # BM25 ToolDiscovery + ToolMeta + tier constants
│ ├── http_client.py # async httpx + tenacity retry + typed errors
│ ├── knowledge.py # KnowledgeRegistry singleton
│ └── schemas.py # ToolResponse envelope, KnowledgeMetadata, etc.
├── data/ # Tier 0 + Tier 1 API integrations
│ ├── al_adhan/
│ ├── aviation_weather/
│ ├── air_quality/
│ ├── cbuae/
│ ├── fcsc_ckan/
│ ├── holidays/
│ ├── khda/
│ ├── osm_overpass/
│ └── quran_cloud/
└── biz/ # Tier 2 curated business knowledge
├── _data/ # Curated JSON files (loaded via importlib.resources)
│ ├── free_zones.json
│ ├── visas.json
│ ├── banks.json
│ ├── founder_essentials.json
│ ├── tax_compliance.json
│ └── loader.py
├── banking/
├── founder_essentials/
├── free_zones/
├── setup_advisor/
├── tax_compliance/
└── visas/
Conventions every feature follows:
__init__.pyexports aFEATURE_METAdict with name, description, tier, requires_auth, source URL.tools.pyholds pure async functions with no FastMCP imports, so unit tests hit the real logic without going through the MCP wrapping layer.server.pydefines aFastMCP("feature_name")instance, decorates wrappers, and registersToolMetarecords with the shared discovery on import.biz/*features additionally expose a per-domainKNOWLEDGE = KnowledgeMetadata(...)constant and callregister_domain_knowledge(domain, KNOWLEDGE)soget_knowledge_status()reflects current freshness automatically.data/*features that need OAuth or a free API key use the graceful credential degradation pattern: tools never crash when env vars are missing. They callavailability()and return a structuredToolResponse.fail({status, reason, docs})so the MCP client renders a help message instead of a stack trace. This is what letspython -m mcp_dubaistart cleanly on a fresh machine with no env file.- Curated JSON files use the Pattern 3 envelope: top-level
domain,knowledge_date,volatility,verify_at,source_brief_section,disclaimer. The shared loader'sextract_knowledge()builds theKnowledgeMetadatadirectly from these fields, so a single update in a JSON file flows through to every tool that uses it.
💬 Example Queries
Ask your AI assistant any of these. The agent will route to the right tool via recommend_tools and return a grounded answer:
Daily life:
- "What time is Fajr prayer tomorrow in Dubai Marina?"
- "Convert 10 Ramadan 1447 to Gregorian."
- "What's the current AED to USD exchange rate?"
- "Find restaurants within 500m of these coordinates."
- "Is 2 December 2026 a UAE public holiday?"
- "What's today's air quality in Karama?"
Schools:
- "Find Outstanding rated schools in Jumeirah with British curriculum."
- "Which Indian / CBSE schools are under AED 20,000/year?"
Founder questions (the headline value):
- "Where should I set up my SaaS company in Dubai with a 25K AED budget?"
- "Compare DMCC and IFZA for a 2-visa consultancy."
- "What visa should I get if I'm a freelance developer earning AED 400,000/year?"
- "Estimate my corporate tax if my free zone SaaS makes AED 1.5M revenue."
- "Do I qualify for the Golden Visa with a 32K monthly basic salary?"
- "Open a UAE business bank account fast for a solo founder."
- "Am I eligible for the Dubai Unified Licence fast-track with Emirates NBD and DMCC?"
- "How do I attest my degree certificate from India for use in Dubai?"
- "How much do PRO services cost per year for 3 visas?"
- "What are the most common mistakes founders make in Dubai?"
🗺️ Roadmap
| Phase | Status | Scope |
|---|---|---|
| Phase 1: Scaffold + Shared | ✅ Complete | _shared/ (auth, http, schemas, discovery, knowledge), root server, conftest. |
| Phase 2: Tier 0 features | ✅ Complete | 9 anonymous APIs: al_adhan, quran_cloud, cbuae, fcsc_ckan, khda, aviation_weather, air_quality, osm_overpass, holidays. |
| Phase 3: Tier 2 priority biz | ✅ Complete | setup_advisor, free_zones, visas, banking, founder_essentials, tax_compliance. |
| Phase 3b: Tier 2 deferred biz | ✅ Complete | compliance, funding, gov_portals, dcde, events, parkin, ip_trademark, halal, createapps. |
| Phase 4: Tier 1 Dubai Pulse scaffolding | ✅ Complete | dubai_pulse base client + dld + rta example features with credential-missing pattern. Ready to wire more features when credentials arrive. |
| Phase 5: Polish | ✅ Complete | README, CONTRIBUTING, CI, PyPI publish workflow, issue templates. |
| Phase 6: Agent skills | ✅ Complete | arabic_writer (bilingual letter templates) + data_analyst (cross-tool plans + Markdown report synthesis with knowledge-freshness footer). |
| Phase 7: More Tier 1 features | 🔐 Blocked on credentials | dha, dewa, det, dtcm, dm_food, dm_permits, dubai_customs, dubai_airports. The dubai_pulse base client and dld + rta examples are ready as the template. |
| Phase 8: Quarterly knowledge refresh | ♻️ Ongoing | Re-verify the 17 curated knowledge domains every quarter, bump knowledge_date in the JSON files. Tax rules and visa thresholds move fastest. |
🤝 Contributing
We welcome contributions. Priority areas right now:
- Ship the deferred Tier 2 features (
funding,events,parkin,ip_trademark,halal, etc.). They follow the same pattern as the existing 6, just need curated JSON + thin tools/server modules + tests. - Wire up Tier 1 Dubai Pulse features once credentials are obtained. Auth and base client are already in
_shared/auth.pyand theDubaiPulseAuthgraceful-degradation contract is the canonical pattern. - Refresh business knowledge quarterly. Each curated JSON file has a
knowledge_dateandverify_atURL. Tax rules, visa thresholds, and free zone pricing change frequently. - Improve
recommend_toolsBM25 quality by tuning tags. Current quirk: in small sub-corpora, BM25 length normalization can favour shorter tools when queries collide on common tokens.
Read CONTRIBUTING.md for the dev setup, test/lint commands, and PR checklist.
git clone https://github.com/mahdi-salmanzade/MCP-Dubai.git
cd MCP-Dubai
make dev # editable install with dev + data extras
make check # ruff + mypy + pytest
⚠️ Disclaimer
This project is not affiliated with, endorsed by, or sponsored by the Government of Dubai, the United Arab Emirates, or any specific authority (DLD, RTA, KHDA, DSC, DHA, DET, DEWA, CBUAE, Dubai Pulse, MOET, MOIAT, or any other). All data is the property of its respective publisher. We provide a unified interface, nothing more.
Upstream APIs change without warning. If a tool returns wrong, empty, or error results, please open a GitHub issue instead of assuming malice. We rely on the community to keep integrations fresh.
Read the full DISCLAIMER.md for nature of project, trademarks, compliance responsibilities, removal requests, and personal data handling.
🌟 Acknowledgments
- Inspired by mcp-brasil, which proved the pattern for a country-specific public-data MCP server.
- Built on FastMCP 3.x, the standalone Pythonic MCP framework maintained by Prefect.
- Thanks to the UAE government agencies that publish open data, especially the Federal Competitiveness and Statistics Centre (FCSC) for the truly anonymous CKAN portal.
- Built for the Dubai developer community.
📬 Contact
- Maintainer: Mahdi Salmanzade, Software Developer, Dubai
- Email: mahdi@clrtstudio.com
- Issues: https://github.com/mahdi-salmanzade/MCP-Dubai/issues
- Pull requests welcome: see CONTRIBUTING.md
📜 License
MIT. Use it, fork it, ship it. Just keep the attribution and the disclaimer.
Made with ❤️ in Dubai by Mahdi Salmanzade
📧 mahdi@clrtstudio.com · 📅 April 2026
هذا المشروع مبادرة مجتمعية مفتوحة المصدر، مرحبًا بمساهماتكم
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mcp_dubai-0.2.0.tar.gz.
File metadata
- Download URL: mcp_dubai-0.2.0.tar.gz
- Upload date:
- Size: 145.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a3a70ae2f567d58e2d671c207df5f55b86ceb90615a5f1bc62a4eb0ef2d6c28c
|
|
| MD5 |
912ab39a46c01f14ca100034e63870cc
|
|
| BLAKE2b-256 |
6e622201fd845cff20927b03acdd9aef012d65b6d4c38aad9cb4379d9a407b96
|
Provenance
The following attestation bundles were made for mcp_dubai-0.2.0.tar.gz:
Publisher:
publish.yml on mahdi-salmanzade/MCP-Dubai
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mcp_dubai-0.2.0.tar.gz -
Subject digest:
a3a70ae2f567d58e2d671c207df5f55b86ceb90615a5f1bc62a4eb0ef2d6c28c - Sigstore transparency entry: 1301711475
- Sigstore integration time:
-
Permalink:
mahdi-salmanzade/MCP-Dubai@bddfb443979dc1eec793a18e01c970a78c9dc2a5 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/mahdi-salmanzade
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@bddfb443979dc1eec793a18e01c970a78c9dc2a5 -
Trigger Event:
release
-
Statement type:
File details
Details for the file mcp_dubai-0.2.0-py3-none-any.whl.
File metadata
- Download URL: mcp_dubai-0.2.0-py3-none-any.whl
- Upload date:
- Size: 201.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c5ba65d1f04f6ebea53793398c909b0ec3e66850b5d659bfc48f3bd3c28d5852
|
|
| MD5 |
a8a102fede8bbe5a1862ef72a5dc7f02
|
|
| BLAKE2b-256 |
6f81061b86de64db6203674a6ae07c31e526d5d87873d71f379dd36b3ec24ef0
|
Provenance
The following attestation bundles were made for mcp_dubai-0.2.0-py3-none-any.whl:
Publisher:
publish.yml on mahdi-salmanzade/MCP-Dubai
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mcp_dubai-0.2.0-py3-none-any.whl -
Subject digest:
c5ba65d1f04f6ebea53793398c909b0ec3e66850b5d659bfc48f3bd3c28d5852 - Sigstore transparency entry: 1301711585
- Sigstore integration time:
-
Permalink:
mahdi-salmanzade/MCP-Dubai@bddfb443979dc1eec793a18e01c970a78c9dc2a5 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/mahdi-salmanzade
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@bddfb443979dc1eec793a18e01c970a78c9dc2a5 -
Trigger Event:
release
-
Statement type: