Happy Endpoint

io.github.happyendpointhq由 GitHub 账号 happyendpointhq 发布v0.1.1更新于 Oct 29, 2026

阿联酋房地产、零售和旅游实时数据:房源、交易、租金收益率、产品。

AI 翻译由 AI 模型根据下方的原文描述翻译,可能有误。

原文描述

Real-time UAE property, retail and travel data: listings, transactions, rental yields, products.

已验证STDIO仅桌面位置与生活

概览

Happy Endpoint 的本地 MCP 服务;无需登录;STDIO;10 个工具。

暂无 AI 概览:以下信息来自注册中心条目和服务本身。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Happy Endpoint,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

Happy Endpoint MCP Server

An MCP server that gives Claude, Cursor, and other MCP clients direct access to real-time real estate, retail, and travel data. Ask questions in plain language and the assistant queries the APIs itself.

Beta. This is a 0.x release. Tools and their arguments may change before 1.0.

"What's the rental yield on a 1-bed in JVC versus Dubai Marina?""What did apartments in Business Bay actually sell for this year?""Find off-plan projects in Dubai Hills under 2 million with less than 50% before handover."

Built and maintained by Happy Endpoint.


Install

Add to your MCP client config and restart it. No install step, npx fetches the package on first run.

json
{  "mcpServers": {    "happyendpoint": {      "command": "npx",      "args": ["-y", "happyendpoint-mcp"],      "env": {        "RAPIDAPI_KEY": "your_rapidapi_key"      }    }  }}
ClientConfig path
Claude Desktop (macOS)~/Library/Application Support/Claude/claude_desktop_config.json
Claude Desktop (Windows)%APPDATA%\Claude\claude_desktop_config.json
Cursor~/.cursor/mcp.json
Claude Code.mcp.json in your project root
Windsurf~/.codeium/windsurf/mcp_config.json

Get a key at rapidapi.com/user/happyendpoint. One key works across every API, and each has a free tier, but you subscribe to each one separately.


Tools

ToolWhat it does
search_propertiesProperty listings for sale or rent by area, price, bedrooms, type
get_property_detailsFull record for one property, with amenities and agency
get_transactionsRecorded sale transactions with price per sqm and sale type
compare_rental_yieldsGross yield across several areas at once, computed
search_off_planOff-plan and under-construction developments
find_agentsAgents by area, with agency and performance badges
find_locationsSearch areas, communities, and buildings by name
search_productsRetail product search across beauty and home categories
search_hotelsHotel search by destination and dates
list_available_apisWhat this server can reach, and where to subscribe

Why this rather than a generic API proxy

Some marketplaces expose a generic MCP endpoint that forwards raw REST calls. For simple cases that is fine. This server exists because four things go wrong when an assistant is handed raw endpoints.

1. Location IDs fail silently

Property search endpoints take a numeric location ID. Pass a wrong one and the API returns a different area rather than an error. The answer looks completely plausible and is about the wrong place.

This is not hypothetical. A published ID table for these endpoints had seven of nine areas wrong, with two major communities transposed.

Here, tools take place names. IDs are resolved internally, and every response echoes which area was actually matched:

json
"resolvedLocation": { "name": "Jumeirah Village Circle (JVC)", "id": "5416" }

2. The endpoints disagree with each other

Four different response shapes for closely related data:

EndpointShape
Property search{properties, total}, camelCase, title is {en: "..."}
Property detailsflat object, title is a plain string
Agent searcha bare array, snake_case field names
Transactionssearch-index shaped {hits, nbHits}, numbers as strings

Given three shapes for "title", a model will read the wrong field and state the result confidently. Everything is normalised to one shape here.

3. Some questions are not a single endpoint

"Which area has the better rental yield" needs a sale search and a rent search per area, medians over both, and a division. compare_rental_yields does it in one call across up to eight areas. There is no endpoint for it.

4. Ten tools beats seventeen

Models choose badly among seventeen near-identical endpoint names. This exposes ten task-shaped tools with descriptions that say when to use them, including the distinction that trips up most analysis: listings are asking prices, transactions are what property actually sold for.


Example output

compare_rental_yields across four areas, 1-bed apartments:

AreaGross yieldMedian asking saleMedian annual rent
Jumeirah Village Circle (JVC)7.87%890,00069,999
Business Bay6.06%1,650,000100,000
Dubai Marina6.00%1,500,00090,000
Palm Jumeirah3.78%3,700,000140,000

get_transactions returns a computed summary alongside the rows:

json
{  "totalTransactions": 3421,  "summary": {    "medianPricePerSqm": 15871,    "minPricePerSqm": 7944,    "maxPricePerSqm": 27013,    "saleTypeBreakdown": { "Primary First Sale": 13, "Secondary Resale": 7 }  }}

Data domains

DomainCoverage
Real estateUAE listings, transactions, agents, off-plan developments
Retail, beautyCosmetics and skincare across the US, Canada, France
Retail, homeFurniture and home goods across eight countries
TravelHotels, flights, car rental

Full catalogue at happyendpoint.com/library.


Things worth knowing

Rental prices are annual. These markets quote yearly rent, not monthly. The server labels it so the assistant does not divide by twelve without noticing.

Asking prices are not transaction prices. search_properties returns what sellers want. get_transactions returns what buyers paid. For valuation, use transactions.

get_property_details is slow, routinely over 30 seconds. The server allows for it, but prefer search_properties when its fields suffice.

Gross yield is not net yield. Service charges, management, maintenance, and vacancy typically remove 2 to 3 percentage points. The tool says so in its output.


Local development

bash
git clone https://github.com/happyendpointhq/happyendpoint-mcpcd happyendpoint-mcpnpm installnpm run build
RAPIDAPI_KEY=your_key node test-client.mjs

test-client.mjs connects over stdio, lists the tools, and calls several against the live API.

Point your client at the local build:

json
{  "mcpServers": {    "happyendpoint-dev": {      "command": "node",      "args": ["/absolute/path/to/happyendpoint-mcp/dist/index.js"],      "env": { "RAPIDAPI_KEY": "your_key" }    }  }}

FAQ

Do I need a paid plan?

No. Every API has a free tier, enough to try all the tools. Heavier use needs a paid plan on the specific APIs you use.

Why did a tool return a 403?

You are not subscribed to that particular API, or its quota is exhausted. The error names the API and links its subscription page. list_available_apis shows all of them.

Does it cover countries outside the UAE?

Property tools are UAE-focused today. The wider catalogue covers the UK, Spain, Turkey, Singapore, Japan, and the US, and those will be added as tools. See happyendpoint.com/library.

Is my API key sent anywhere except the data provider?

No. It stays in your MCP client config, is read from the environment, and is sent only as an authentication header to the upstream API gateway.

Can I use this without an MCP client?

Yes, through the language SDKs: happyendpoint on PyPI and happyendpoint-js.


Status

Beta, 0.x. Tool names and arguments may change before 1.0. Pin a version if you need stability.


Disclaimer

Happy Endpoint is an independent provider. This package is not affiliated with, endorsed by, sponsored by, or connected to any of the websites, platforms, retailers, or marketplaces whose data may be accessible through the underlying APIs.

All product names, brands, trademarks, and registered trademarks are the property of their respective owners. Any reference to them is descriptive only, to identify the subject matter of the data, and does not imply any association or endorsement.

Users are responsible for ensuring their use of any data complies with applicable laws and the terms of service of the relevant source.


Related


About Happy Endpoint

Happy Endpoint builds and maintains real-time data APIs across real estate, ecommerce, retail, and travel.

Licence

MIT. See LICENSE.

来源:README.md,提交 577f128

工具

10

find_locations

Find property locations

Search UAE property locations by name. Returns matching areas, communities, and individual buildings with how many listings each has. Use this when a place name is ambiguous, or to discover what areas exist. Other property tools accept place names directly and resolve them for you, so you usually do not need to call this first.

输入参数limitquery必填

search_properties

Search property listings

Search UAE property listings for sale or rent by area, price, bedrooms, and type. Takes a place name, not an ID. Prices are AED; for rentals the price is the ANNUAL rent. Returns asking prices from current listings, which run higher than actual sale prices, so use get_transactions for what property really sold for.

输入参数pagepurposebedroomslocation必填priceMaxpriceMinpropertyType

get_property_details

Get full property details

Full record for one property: specification, amenities, agency, and location hierarchy. Needs an id from search_properties. This endpoint is slow, often over 30 seconds, so prefer search_properties when its fields are enough.

输入参数propertyId必填

search_off_plan

Search off-plan developments

Search off-plan and under-construction property projects in the UAE. Off-plan means not yet built, usually bought on a payment plan. Useful for questions about new developments, launches, and pre-handover payment terms.

输入参数pagelocation必填priceMaxmaxPreHandoverPayment

get_transactions

Get historical property transactions

Actual recorded sale and rental transactions for a UAE area, with price per sqm and whether each was a first sale from the developer or a resale. This is what property really sold for, unlike search_properties which returns asking prices. Use this for valuation, market trends, and price-per-sqm questions.

输入参数pagepurposelocation必填timePeriod

compare_rental_yields

Compare rental yields across areas

Calculate and compare gross rental yield for several UAE areas at once. Yield is annual rent divided by purchase price, the headline metric for buy-to-let investors. This is computed from live listings, not available as a single API call. Uses median asking prices, so treat it as a screening tool rather than a valuation.

输入参数bedroomslocations必填propertyType

find_agents

Find real estate agents

Find real estate agents active in a UAE area, with their agency and performance badges such as TruBroker. Useful for agent directories and for finding who is most active in a given community.

输入参数purposelocation必填

search_products

Search retail products

Search live retail product data by category. "beauty" covers cosmetics and skincare across the US, Canada, and France. "home" covers furniture and home goods across eight countries, and supports cross-country price comparison via countryCode.

输入参数query必填category必填countryCode

search_hotels

Search hotels

Search hotels by destination and dates, with prices and availability. Give dates as YYYY-MM-DD; they are converted to the format the API expects. The destination is resolved to an internal id automatically.

输入参数roomsadultscheckIn必填checkOut必填currencydestination必填

list_available_apis

List available Happy Endpoint APIs

List the data sources this server can reach, and where to subscribe to each. Useful when a call fails because of a missing subscription, or to see what data is available.

无需输入参数。

版本历史

1
  1. v0.1.1最新Oct 20, 2026

评分

已满足适用检查项的 90%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分
  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具必需15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分