DLD MCP Server
MCP server (local stdio or remote HTTP) for querying Dubai property sales transactions and rental contracts through OfferBrief.
The server uses MCP Python SDK v2 and supports the MCP 2026-07-28 protocol.
Installation
Run the published package directly:
uvx dld-mcp
Setup
Claude Code:
claude mcp add dld -- uvx dld-mcp
Claude Desktop:
{
"mcpServers": {
"dld": {
"command": "uvx",
"args": ["dld-mcp"]
}
}
}
Add that entry to ~/Library/Application Support/Claude/claude_desktop_config.json on macOS.
Remote (no install): add https://offerbrief.com/mcp as a custom connector in Claude or ChatGPT, or
claude mcp add --transport http dld https://offerbrief.com/mcp
Self-hosting the HTTP endpoint:
uvx dld-mcp --http --port 8765 --public-host example.com
It listens on 127.0.0.1 (put a TLS reverse proxy in front), is stateless, and rejects Host and Origin headers other than localhost and --public-host.
Tool
query_dld accepts:
| Parameter | Allowed values | Default |
|---|---|---|
area |
Area or building name, at least 2 non-whitespace characters | Required |
type |
sales, rentals |
sales |
property_type |
all, apartment, villa, townhouse |
all |
bedrooms |
all, studio, 1, 2, 3, 4, 5, 5+ |
all |
date_from |
A real date in YYYY-MM-DD format |
OfferBrief default |
date_to |
A real date in YYYY-MM-DD format |
OfferBrief default |
metric |
stats, count, list |
stats |
limit |
Integer from 1 through 50 | 10 |
bedrooms is supported only for sales: DLD's current rental feed has no bedroom data. date_from cannot be later than date_to. The default window is the last 12 months.
Examples:
query_dld(area="Marina")
query_dld(area="Palm", property_type="villa", date_from="2024-01-01", metric="count")
query_dld(area="Downtown", type="rentals", property_type="apartment")
query_dld(area="JBR", metric="list", limit=10)
Invalid arguments fail before an API request. OfferBrief's own message is passed through for rejected queries and empty results. HTTP, rate limit, timeout, connection, and malformed response failures set MCP isError and return structured errors with a message and status code. Results include both structured content and JSON text for client compatibility. The tool declares read-only, non-destructive, idempotent access to an external data source.
OfferBrief dependency and privacy
Each tool call sends its query parameters to https://offerbrief.com/api/query. No credentials are used. The package does not log query parameters or response bodies.
Results reflect the data available from OfferBrief when the call is made. This package does not claim a refresh schedule or transaction count.
Development
git clone https://github.com/level09/dld-mcp
cd dld-mcp
uv sync --group dev
uv run pytest
uv run ruff check
uv build
License
MIT, OfferBrief
Metadata
Release files for dld-mcp 0.4.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| dld_mcp-0.4.0.tar.gz | 74.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| dld_mcp-0.4.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 80.4 kB
Release files / dld_mcp-0.4.0.tar.gz
| Download URL | dld_mcp-0.4.0.tar.gz |
|---|---|
| Size | 74.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ad849f1b2529df396cde8c361372391dcbaee252288522c2f6ae86594a0af3e3
|
|
BLAKE2b-256 checksum How to use checksums |
001a462eccd923f3eb1c10af6623181dc3df349e55e1d0efb4bac66f04d4415a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.5
|
Release files / dld_mcp-0.4.0-py3-none-any.whl
| Download URL | dld_mcp-0.4.0-py3-none-any.whl |
|---|---|
| Size | 6.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
08e335dccbdf63fea5bc35efce6815e2ad3dda8e4565c33b1a967a2a86e6bb79
|
|
BLAKE2b-256 checksum How to use checksums |
4ea96ca9a74e8f3d901af466a7fc2b818006d7e35d371b3caccd11b180d25fa8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.5
|