mcp-uae-property
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-uae-propertyCalculate DLD fees and net rental yield for a 2.5M AED apartment in Dubai Marina."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
mcp-uae-property: Model Context Protocol Server for UAE Real Estate Intelligence
Production-ready Model Context Protocol (MCP) server providing Dubai Land Department (DLD) transaction fee calculations, rental yield formulas, off-plan property search, and mortgage affordability modeling for AI agents.
flowchart LR
Client["AI Agent Client\n(Claude / Cursor / Antigravity)"]
Transport["StdioServerTransport\n(JSON-RPC 2.0)"]
Router["MCP Request Router\n(mcp-uae-property)"]
Tools["Tools Engine\n• calculate_rental_yield\n• calculate_dubai_fees\n• calculate_mortgage_eligibility\n• search_offplan_developments\n• get_dld_area_analytics"]
Resources["Resources\n• property://districts\n• property://golden-visa-rules"]
Data["Curated UAE Datastore\n(DLD benchmarks & Emaar/Nakheel data)"]
Client <-->|stdio| Transport
Transport <--> Router
Router --> Tools
Router --> Resources
Tools --> Data
Resources --> DataWhy it exists
AI agents frequently produce hallucinations when answering questions about the UAE property market because transaction fee structures (DLD 4% transfer fees, registration trustee fees, Oqood), Central Bank LTV limits, and net rental yields follow strict local regulations. mcp-uae-property gives agents verified deterministic tools and structured resources to model Dubai property acquisitions with institutional rigor.
Related MCP server: MCP-Dubai
Features
Calculates gross and net rental yields: Computes developer service charges per sq.ft, maintenance reserves, vacancy buffers, and 5-year cumulative cash flow forecasts.
Audits Dubai Land Department transaction fees: Details the 4% transfer fee, AED 580 administrative cost, 2% broker commission (+ VAT), and trustee registration fees.
Evaluates UAE Golden Visa eligibility: Automatically flags whether a property valuation meets the AED 2,000,000 threshold for the 10-year investor residency visa.
Simulates Central Bank mortgage limits: Computes LTV caps (80% for expats up to AED 5M; 85% for UAE nationals), monthly amortization, stress-test interest buffers (+2%), and the 50% Debt-Burden Ratio (DBR) ceiling.
Queries curated off-plan developments: Filters premier off-plan launches across Downtown Dubai, Palm Jumeirah, Dubai Hills Estate, and Dubai Creek Harbour by developer, completion year, and payment plan.
Serves real-time district benchmarks: Returns average price per sq.ft, median 1-bed rentals, and 5-year historical capital appreciation across Dubai sub-markets.
Architecture
The server implements the Model Context Protocol over the standard input/output transport (StdioServerTransport), exposing:
Tools: Callable functions backed by Zod runtime input validation schemas.
Resources: Direct JSON and Markdown payloads accessible at
property://districtsandproperty://golden-visa-rules.Prompts: Reusable agent templates including
dubai-investment-memofor automated memo generation.
Tech stack
Component | Technology | Rationale |
Protocol SDK |
| Official Anthropic & Linux Foundation MCP specification standard |
Language | TypeScript 5.7 (ES2022 / NodeNext) | Type safety with strict null checking and declaration maps |
Validation | Zod 3.24 | Runtime schema parsing and descriptive JSON-RPC error generation |
Test Framework | Vitest 3.0 | Fast, concurrent unit and integration test runner |
Transport | Stdio (Standard I/O) | Universally supported across Claude Desktop, Cursor, and Antigravity |
Quick start
1. Installation & Local Build
git clone https://github.com/vikramwish/mcp-uae-property.git
cd mcp-uae-property
npm install
npm run build2. Connect to Claude Desktop
Add this to your Claude Desktop configuration (~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"uae-property": {
"command": "node",
"args": ["/ABSOLUTE/PATH/TO/mcp-uae-property/dist/index.js"]
}
}
}3. Connect to Cursor / Antigravity
Add this to your project .cursor/mcp.json or Antigravity configuration:
{
"mcpServers": {
"uae-property": {
"command": "node",
"args": ["/ABSOLUTE/PATH/TO/mcp-uae-property/dist/index.js"]
}
}
}Testing
The suite covers calculation edge cases, Central Bank LTV boundary conditions, Zod rejection of invalid types, and MCP JSON-RPC protocol round-trips.
npm test✓ tests/calculations.test.ts (6 tests)
✓ tests/tools.test.ts (5 tests)
✓ tests/mcp-server.test.ts (3 tests)
Test Files 3 passed (3)
Tests 14 passed (14)Roadmap
Direct integration with Dubai Pulse Open Data API for weekly transaction volume updates.
Multi-currency conversion tool (AED, USD, EUR, GBP, AUD) with live forex parity.
Support for Abu Dhabi (DMT) registration fee variants.
Standalone SSE / HTTP streaming transport for remote cloud agent access.
What I learned
Designed deterministic financial models under the Model Context Protocol standard, allowing LLMs to ground complex decisions in verified calculations.
Implemented comprehensive Central Bank of the UAE regulatory logic (stress testing, DBR caps, LTV tiers) in clean, modular TypeScript with 100% test coverage.
Structured agent prompts and resources to bridge real-world real estate domain knowledge directly into conversational AI environments.
Available Tools
5 toolscalculate_dubai_feesA
Calculates all official upfront purchase fees: Dubai Land Department (DLD) 4% transfer fee, administration fees, agency commission (2% + VAT), registration trustee fees, mortgage registration fees, and checks 10-year Golden Visa eligibility (>= 2,000,000 AED).
| Name | Required | Description | Default |
|---|---|---|---|
| isOffPlan | No | True if buying off-plan from developer; false for secondary market ready property | |
| hasMortgage | No | True if financing via mortgage | |
| purchasePriceAED | Yes | Agreed purchase price in AED | |
| mortgageAmountAED | No | Mortgage loan principal in AED |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does usefully disclose conditional logic (Golden Visa eligibility at >= 2,000,000 AED) and the composition of the fee calculation, but it never states that this is a pure read-only computation with no side effects, nor how conditions like hasMortgage change which fees appear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence that front-loads the core purpose and then lists components. Every clause maps to a real output of the tool; the only minor cost is the long enumeration, which is dense but not wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description must convey what is returned, and the fee enumeration plus the Golden Visa flag effectively does that. It falls short of describing the return structure (a breakdown object, currency, totals) but covers the substantive content an agent needs to select the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the four parameters are already fully documented and the baseline is 3. The description adds limited incremental meaning: it implies mortgage registration fees depend on the mortgage parameters, but adds no format, unit, or interaction detail beyond what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb (calculates) and enumerates the exact fee components produced: DLD 4% transfer fee, admin fees, agency commission, trustee fees, mortgage registration fees, plus a Golden Visa eligibility check. This is far more specific than its siblings (calculate_rental_yield, calculate_mortgage_eligibility), though it never explicitly contrasts itself with them, so an agent must infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It is clearly implied the tool applies to upfront purchase-fee scenarios, and the Golden Visa threshold hints at a secondary use case, but there is no statement of when to use this versus calculate_mortgage_eligibility or calculate_rental_yield. Usage must be inferred from the fee list rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_mortgage_eligibilityA
Calculates mortgage affordability per UAE Central Bank regulations: LTV caps for expats (80% / 70%) and UAE nationals (85% / 75%), monthly payment, stress-test interest rate buffer (+2%), and 50% Debt-Burden Ratio (DBR) cap.
| Name | Required | Description | Default |
|---|---|---|---|
| isUAENational | No | True if borrower is UAE National; false for expats | |
| loanTermYears | Yes | Loan tenor in years (max 25) | |
| isFirstProperty | No | True if first residential property in UAE | |
| monthlyIncomeAED | Yes | Monthly salary/income in AED | |
| propertyPriceAED | Yes | Property valuation/price in AED | |
| otherMonthlyDebtsAED | No | Existing monthly debt commitments in AED | |
| annualInterestRatePercent | Yes | Annual interest rate (e.g. 4.5) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does substantial work: it discloses the specific rules applied (LTV caps by nationality/first-property status, +2% stress-test buffer, 50% DBR cap). It does not explicitly state that the tool is a pure, side-effect-free computation, but 'Calculates' plus the regulatory detail makes the behavior largely transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence that front-loads the purpose and enumerates the rules computed; nothing is wasted. It is slightly packed for one sentence, but every clause carries regulatory information the agent cannot get from the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter computation tool with no output schema and no annotations, the description supplies the regulatory model needed to understand the inputs and infer the outputs (eligibility, monthly payment, DBR). It stops short of describing the return shape or edge-case handling, but is largely complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameter meaning is already documented. The description adds domain context by tying nationality and first-property status to LTV cap tiers, but it does not explain how each input (e.g. otherMonthlyDebtsAED) feeds the DBR or stress-test computation, so it stays at the baseline for fully-covered schemas.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Calculates) and resource (mortgage affordability/eligibility) and names the regulatory regime it implements. It is clearly distinguishable from siblings like calculate_rental_yield and calculate_dubai_fees, which address different financial questions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use or when-not-to-use guidance and no mention of alternative tools. The regulatory framing implies a use case, but the agent is given no routing criteria or prerequisites (e.g. that this is for new mortgage eligibility rather than refinancing).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_rental_yieldA
Calculates Dubai gross and net rental yield percentages, accounting for developer service charges (AED/sq.ft), vacancy allowance, maintenance, and a 5-year cashflow projection.
| Name | Required | Description | Default |
|---|---|---|---|
| propertySizeSqFt | No | Property built-up area in sq.ft (default: 850) | |
| purchasePriceAED | Yes | Total property purchase price in AED | |
| vacancyWeeksPerYear | No | Estimated vacancy allowance in weeks per year (default: 2) | |
| annualMaintenanceAED | No | Annual maintenance budget in AED (default: 2000) | |
| managementFeePercent | No | Property management fee percentage (default: 5%) | |
| expectedAnnualRentAED | Yes | Projected annual gross rent in AED | |
| serviceChargePerSqFtAED | No | Annual service charge in AED per sq.ft (default: 16) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose the computational scope: it accounts for service charges, vacancy allowance, maintenance, and produces a 5-year cashflow projection in addition to gross/net yields. It does not discuss assumptions or edge cases (e.g., how defaults interact), but for a stateless calculator the behavior is well communicated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence that states the computation before listing the inputs it accounts for. Every clause earns its place; there is no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description usefully names the returns (gross and net yield percentages plus a 5-year cashflow projection). With 7 params fully covered by the schema and no annotations to compensate for, this is nearly complete; only assumption or edge-case detail is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all seven parameters including defaults are already documented in the schema. The description echoes the same concepts (service charges AED/sq.ft, vacancy, maintenance) without adding format, range, or unit nuance beyond what the schema provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource: 'Calculates Dubai gross and net rental yield percentages,' and enumerates the cost components it factors in. It is clearly distinct in domain from the other calculators (fees, mortgage eligibility), but it never names or contrasts those siblings explicitly, so it falls just short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool versus calculate_dubai_fees, calculate_mortgage_eligibility, or get_dld_area_analytics, and no prerequisites or exclusions. The only usage signal is implied by the subject matter (Dubai property investment analysis), which is weak guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_dld_area_analyticsA
Retrieves district-level investment metrics including average price per sq.ft, median 1-bedroom rents, typical gross yields, and 5-year capital appreciation for Dubai sub-markets.
| Name | Required | Description | Default |
|---|---|---|---|
| district | Yes | District name or ID (e.g. "downtown-dubai", "Dubai Marina", "palm-jumeirah") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. The verb 'Retrieves' implies a read-only lookup, which is useful, but nothing is said about data currency, coverage limits, behavior for an unrecognized district, authentication, or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence with the verb front-loaded and every clause carrying distinct content (the four metric families plus the geographic scope). Nothing is wasted, though the 'Dubai sub-markets' tail is close to redundant with the rest of the sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and only one parameter, the description correctly spends its words enumerating the returned metrics, which is the main thing an agent would otherwise lack. It is close to sufficient, missing only edge behavior for invalid districts and the granularity of the metrics returned.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the district parameter documented and exemplified ('downtown-dubai', 'Dubai Marina', 'palm-jumeirah'), so the baseline is 3. The description adds 'district-level' scoping but no extra parameter syntax or format detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb (Retrieves) and resource (district-level investment metrics), and enumerates the exact metrics returned (price per sq.ft, 1-bed rents, gross yields, 5-year appreciation). It implicitly separates itself from the calculation siblings by being a retrieval/lookup tool, but it never names an alternative, so sibling differentiation is left to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the presence of a district parameter and the phrase 'for Dubai sub-markets' signals you call it to look up already-computed district analytics. There is no explicit when-to-use or when-not guidance, and no routing to or from siblings like calculate_rental_yield, which also concerns yields.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_offplan_developmentsC
Searches curated premier Dubai off-plan developments by budget, district, developer (Emaar, Nakheel, Damac, Sobha, Ellington), and Golden Visa status.
| Name | Required | Description | Default |
|---|---|---|---|
| district | No | District name (e.g. Marina, Downtown, Palm) | |
| developer | No | Developer name (e.g. Emaar, Damac) | |
| maxBudgetAED | No | Maximum budget in AED | |
| minBudgetAED | No | Minimum price in AED | |
| goldenVisaOnly | No | Filter only projects >= 2M AED |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It hints at a curated read-only catalog but says nothing about result count, pagination, sort order, whether all filters are optional, or what happens with no filters — meaningful gaps for a search endpoint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence that names the resource and its filterable facets with no filler. Efficient, though slightly dense with an enumerated developer list.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a five-parameter, all-optional search with no output schema, the description should at least gesture at the shape or volume of returned results. It covers the input facets well but leaves the output side entirely to inference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all five parameters are already documented in the schema, establishing a baseline of 3. The description adds only marginal value by naming specific developers (Emaar, Nakheel, Damac, Sobha, Ellington), which slightly clarifies the valid developer domain, but adds nothing beyond what the schema describes.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('searches') and resource ('curated premier Dubai off-plan developments') and enumerates the filterable dimensions, so the purpose is unmistakable. It doesn't explicitly contrast itself with the sibling calculators/analytics tools, but the search-vs-compute distinction is inferable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus siblings like get_dld_area_analytics, nor any prerequisites or exclusions. Usage is only implied by the word 'searches'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
5 tool updates
v1.0.0- First observed
calculate_dubai_fees - First observed
calculate_mortgage_eligibility - First observed
calculate_rental_yield - First observed
get_dld_area_analytics - First observed
search_offplan_developments
TDQS
Scored across 5 tools
Each tool targets a clearly distinct purpose: yield calculation, upfront fee calculation, mortgage eligibility, off-plan search, and district analytics. There is no meaningful overlap that could cause misselection.
All five tools follow a strict snake_case verb_noun pattern (calculate_*, search_*, get_*). The convention is applied uniformly with no deviations.
Five focused tools map neatly onto the discrete decision points of Dubai property investment (yield, fees, financing, discovery, market data). Each tool earns its place with no redundancy.
The surface covers the core investment decision workflow well, but lacks operations like comparing two developments, retrieving a specific property/unit's details, or saving/exporting results. These are minor gaps an agent can work around with repeated tool calls.
Related MCP Connectors
Singapore property & financial data APIs for AI agents. 27 MCP tools. x402 micropayments.
Agent-native MCP over US public + government records, entity- and parcel-keyed.
Deterministic reasoning stack for AI agents: simulate, decide & compute, plus cross-domain tools.
Pay-per-call DeFi and macro intel for AI agents. x402 USDC tools via streamable HTTP /api/mcp.
Related MCP Servers
- AlicenseAqualityDmaintenanceOpen-source MCP server providing real estate regulatory intelligence (zoning, permits, entitlements, deal scoring) for US properties, enabling AI agents to access 10 callable tools.129 npmMIT
- AlicenseAqualityBmaintenanceAn MCP server that provides AI agents with access to Dubai and UAE public data (prayer times, exchange rates, school ratings, etc.) and curated business setup knowledge for entrepreneurs.10033 PyPI6MIT
- AlicenseNot gradedqualityDmaintenanceProvides comprehensive real estate market intelligence, property valuation, and investment analysis for AI agents. Unifies data from multiple sources like Zillow, Redfin, and public records into a single MCP interface.MIT
- FlicenseAqualityCmaintenanceVerified Singapore property, tax, affordability, salary, and location data for AI agents. 17 MCP tools, x402 micropayments, source provenance on every response. Singapore live now, more markets coming. Categories: Finance, Real Estate, Data, Singapore, x402, Payments, Government Data17-