Token导航 LogoToken导航

MCP Server · 搜索检索

MCP Bayut Crawler

Bayut MCP Server 是一个生产就绪的模型上下文协议服务器,将 Bayut.com 的房产搜索功能暴露为智能工具,适用于LLM代理和工作流自动化平台。

stdio官方级别未说明来源级核验工具 3
PythonClaude工作流自动化Claude Desktop

快速开始

作者 / 组织
Rezasz
提供方
Rezasz
运行时
Python

工具数量

3

来源目录标注

资源数量

0

来源目录标注

提示词数量

0

来源目录标注

GitHub Star

0

仓库热度

收录来源

1 个

MCP World

选型结论

MCP Bayut Crawler 属于搜索检索类 MCP Server,公开资料标注 3 个工具,通过stdio 本地进程接入,适配 Claude Desktop、Claude,有可以直接复制的安装命令;接入前要先准备 会话凭据。

分类

搜索检索

传输方式

stdio

认证方式

会话凭据

部署方式

公开资料未说明

安装与配置

安装命令

python3 -m venv venv

公开命令不是通用的启动方式,拼不出可靠配置示例;请在客户端 MCP 配置里按官方文档填写 command 和 args。

上手步骤

  1. 1

    准备运行环境

    stdio 服务在本地起进程,需要先装好 Python,再按安装命令拉取依赖。

  2. 2

    安装服务

    复制下面的安装命令执行;命令里带占位符的位置换成自己的密钥或路径。

  3. 3

    写入客户端配置

    在客户端的 MCP 配置里填启动命令和参数,保存后完全退出客户端再打开,让新配置生效。

  4. 4

    验证是否可用

    连接成功后客户端会列出 3 个工具,随便调一个只读工具确认能返回结果。

接入前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

详细介绍

Bayut MCP服务器

生产准备就绪 模型上下文协议(MCP) 暴露的服务器 Bayut.com 属性搜索功能是LLM代理和n8n等工作流自动化平台的智能工具。

🎯 概述

该MCP服务器将自然语言查询转换为阿联酋领先的房地产平台Bayut上的结构化房产搜索。非常适合构建人工智能驱动的房地产经纪人、聊天机器人或自动化的房产搜索工作流程。

主要特点

  • 🔍 智能搜索:使用自然语言或结构化过滤器按位置、价格、卧室搜索房产
  • 📊 详细列表:获取全面的物业详细信息,包括设施、图片和代理联系人
  • 🧠 NLP解析器:将自然语言查询转换为 *“JBR 2间卧室,2M以下”* 进入搜索参数
  • ⚡ 异步优先:基于async/await模式构建,实现最佳性能
  • 🔒 类型安全:对输入和输出进行完整的Pydantic验证
  • 📝 综合录井:调试和监控的详细日志记录
  • 🔄 错误处理:强大的重试逻辑和优雅的降级

📦 安装

先决条件

  • Python 3.10或更高版本
  • Playwright浏览器(自动安装)

设置

  1. 克隆存储库
git clone 
cd MCP-Bayut-Crawler
  1. 创建虚拟环境
python3 -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate
  1. 安装依赖项
pip install -r requirements.txt
  1. 安装Playwright浏览器
playwright install chromium
  1. 配置环境
cp .env.example .env
# Edit .env with your preferred settings

🚀 用法

启动服务器

基本启动:

python main.py

使用调试日志记录:

DEBUG=true python main.py

无头模式(用于生产):

BAYUT_HEADLESS=true python main.py

MCP工具

服务器提供了三个强大的工具:

1. search_bayut_listings

使用过滤器搜索Bayut属性。

输入:

{
  "location": "downtown-dubai",
  "purpose": "sale",
  "beds": "2",
  "price_min": 1500000,
  "price_max": 2500000,
  "max_pages": 3
}

输出:

{
  "status": "success",
  "count": 28,
  "listings": [
    {
      "id": "listing_123456",
      "title": "Modern 2BR Apartment",
      "price": 1800000,
      "location": "Downtown Dubai",
      "beds": 2,
      "baths": 2,
      "area": 1200,
      "agent": "John Doe",
      "brokerage": "Real Estate Co",
      "url": "https://www.bayut.com/property/details/123456/",
      "image_url": "https://..."
    }
  ],
  "query_used": {
    "url": "https://www.bayut.com/for-sale/2-bedroom-property/dubai/downtown-dubai/?price_min=1500000&price_max=2500000",
    "timestamp": "2025-11-15T10:30:00Z"
  }
}
2. get_listing_details

获取特定列表的全面详细信息。

输入:

{
  "listing_id": "listing_123456"
}

输出:

{
  "status": "success",
  "listing": {
    "id": "listing_123456",
    "title": "Modern 2BR Apartment",
    "price": 1800000,
    "description": "Spacious modern apartment with...",
    "amenities": ["Pool", "Gym", "Parking", "Security"],
    "images": ["https://...", "https://..."],
    "breadcrumb": {
      "country": "UAE",
      "city": "Dubai",
      "area": "Downtown Dubai",
      "building": "Downtown Views"
    },
    "agent": {
      "name": "John Doe",
      "phone": "+971...",
      "brokerage": "Real Estate Co"
    }
  }
}
3. parse_natural_language_query

将自然语言转换为结构化搜索参数。

输入:

{
  "query": "i want a 2 bedroom with 2m dhs budget in jbr"
}

输出:

{
  "status": "success",
  "parsed": {
    "beds": "2",
    "price_max": 2000000,
    "location": "jumeirah-beach-residence",
    "purpose": "sale",
    "confidence": 0.92
  },
  "raw_query": "i want a 2 bedroom with 2m dhs budget in jbr"
}

🔗 集成示例

n8n工作流

步骤1:添加执行命令节点

{
  "command": "python /path/to/MCP-Bayut-Crawler/main.py"
}

步骤2:添加HTTP请求节点(与MCP服务器通信)

{
  "method": "POST",
  "url": "http://localhost:8000/tools/search_bayut_listings",
  "body": {
    "location": "{{ $json['location'] }}",
    "purpose": "sale",
    "beds": "{{ $json['beds'] }}",
    "price_max": "{{ $json['budget'] }}"
  }
}

步骤3:流程结果

使用n8n的内置节点过滤、转换和路由列表数据。

Claude桌面集成

添加到您的Claude Desktop配置(~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "bayut": {
      "command": "python",
      "args": ["/path/to/MCP-Bayut-Crawler/main.py"],
      "env": {
        "BAYUT_HEADLESS": "true",
        "BAYUT_CRAWLER_MAX_PAGES": "5"
      }
    }
  }
}

现在你可以问克劳德:

“在迪拜码头找到300万迪拉姆以下的三居室公寓”

Claude将自动使用MCP工具搜索Bayut并显示结果。

Python客户端示例

import asyncio
from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client

async def search_properties():
    server_params = StdioServerParameters(
        command="python",
        args=["main.py"],
        env={"BAYUT_HEADLESS": "true"}
    )

    async with stdio_client(server_params) as (read, write):
        async with ClientSession(read, write) as session:
            await session.initialize()

            # Call search tool
            result = await session.call_tool(
                "search_bayut_listings",
                arguments={
                    "location": "downtown-dubai",
                    "purpose": "sale",
                    "beds": "2",
                    "price_max": 2000000,
                    "max_pages": 3
                }
            )

            print(result)

asyncio.run(search_properties())

🏗️ 项目结构

MCP-Bayut-Crawler/
├── mcp_server/              # MCP server implementation
│   ├── server.py            # Main MCP server
│   ├── schemas.py           # Pydantic models & JSON schemas
│   ├── crawler_wrapper.py   # Sync/async bridge
│   └── tools/               # MCP tool handlers
│       ├── search.py        # Search listings tool
│       ├── details.py       # Get details tool
│       └── nlp.py           # NLP parser tool
├── crawler/                 # Bayut crawler implementation
│   ├── browser.py           # Playwright browser manager
│   ├── search.py            # Search crawler logic
│   ├── listing_parser.py    # HTML parsing
│   ├── pagination.py        # Pagination handler
│   ├── config.py            # Configuration
│   └── utils.py             # Utility functions
├── main.py                  # Server entry point
├── requirements.txt         # Python dependencies
├── .env.example             # Example environment config
└── README.md                # This file

⚙️ 配置

环境变量

变量默认值描述
BAYUT_CRAWLER_MAX_PAGES5每次搜索可抓取的最大页面数
BAYUT_CRAWLER_DELAY_MIN1.0请求之间的最小延迟(秒)
BAYUT_CRAWLER_DELAY_MAX3.0请求之间的最大延迟(秒)
BAYUT_CRAWLER_TIMEOUT30页面加载超时(秒)
BAYUT_HEADLESSfalse在无头模式下运行浏览器
BAYUT_MAX_RETRIES2失败重试次数
DEBUGfalse启用调试日志记录

支持的位置别名

NLP解析器识别公共区域缩写:

  • jbr → 美拉海滩住宅区
  • marina → 迪拜码头
  • downtown → 迪拜市中心
  • jvc → 朱美拉乡村圈
  • jlt → 朱美拉湖塔楼
  • difc → 迪拜国际金融中心
  • 还有更多。..

🧪 测试

运行单元测试

pytest tests/ -v

测试NLP解析器

python -m mcp_server.tools.nlp

测试搜索

python -c "
from mcp_server.crawler_wrapper import get_crawler_wrapper
import asyncio

async def test():
    wrapper = get_crawler_wrapper()
    result = await wrapper.search_async(
        location='downtown-dubai',
        purpose='sale',
        beds='2',
        max_pages=1
    )
    print(result)

asyncio.run(test())
"

📊 日志记录

服务器提供多级结构化日志记录:

  • 信息:工具调用、搜索结果、页数
  • 调试:爬虫内部、HTTP请求、解析详细信息
  • 错误:请求失败、验证错误、崩溃

日志格式:

[2025-11-15 10:30:00] [INFO] [mcp_server.tools.search] Searching Bayut: location=downtown-dubai, purpose=sale
[2025-11-15 10:30:05] [INFO] [crawler.search] Found 28 property cards on page
[2025-11-15 10:30:05] [INFO] [mcp_server.tools.search] Search completed: 28 listings found

🔥 错误处理

服务器优雅地处理各种错误情况:

  • 无效的位置 → 返回区域建议错误
  • 超时 → 重试一次,返回部分结果
  • Cloudflare块 → 返回带有回退消息的错误
  • 缺少列表 → 返回结构化404错误
  • 低置信度NLP解析 → 返回置信度低的解析数据

🚦 速率限制

爬虫实现智能限速:

  • 1-3秒之间的随机延迟(可配置)
  • 尊重Bayut的robots.txt
  • 错误时自动回退
  • 每个请求最多重试2次

🤝 贡献

欢迎投稿!拜托:

  1. 分叉存储库
  2. 创建要素分支(git checkout -b feature/amazing-feature)
  3. 提交您的更改(git commit -m 'Add amazing feature')
  4. 推到分支(git push origin feature/amazing-feature)
  5. 打开拉取请求

📝 许可证

此项目根据MIT许可证获得许可-有关详细信息,请参阅许可证文件。

⚠️ 免责声明

此工具仅用于教育和研究目的。请遵守Bayut的服务条款并负责任地使用。始终在请求之间添加适当的延迟,避免过度抓取。

🆘 支持

对于问题、疑问或功能请求:

  • 在GitHub上打开一个问题
  • 检查现有文档
  • 查看日志 DEBUG=true

🎉 致谢

______________________________________________________________________

由以下材料制成❤️ 面向房地产自动化社区

工具与能力

工具数量

3

资源数量

0

提示词数量

0

能力标签

房产搜索Python本地部署自然语言处理自动化工作流LLM工具房产数据

支持客户端

Claude DesktopClaude

数量来自来源目录的标注,具体工具清单以官方文档为准。

典型使用场景

查资料带出处

把网页、论文和文档的检索结果连同链接一起带回对话。

站内知识检索

在自己的文档库里做语义搜索,比关键词更贴题。

事实核对

交叉多个来源确认一条信息,减少模型凭记忆作答。

选择建议

值得选的地方

  • 只提供 3 个工具,职责集中,接入后不容易误操作。
  • 有现成的安装命令,不用自己找入口,照着跑就能起服务。
  • 已经适配 Claude Desktop、Claude,换客户端不用重新研究配置。

先想清楚的地方

  • stdio 方式要求本地装好 Python,换机器要重新装一遍。
  • 需要自备会话凭据,没有凭据没法直接试。
  • 第三方目录整理,版本更新和行为细节以官方仓库为准。

更适合

  • 需要在搜索检索场景里让模型直接调用外部能力的人。
  • 已经在用 Claude Desktop 的用户,接入路径最短。
  • 想先快速试一下、能接受在本地跑服务的人。

不太适合

  • 完全不想在本地装环境的人。
  • 暂时拿不到会话凭据的人。
  • 需要厂商级 SLA 和技术支持的生产环境。

同类对比

5 个同类
MCP Server工具数传输方式安装命令收录来源最后核验
MCP Bayut Crawler

MCP World · 本页

3stdio有1 个2026-05-17
Baidu Netdisk

MCP World

未标注未说明未标注1 个2026-05-17
Sequentialthinking

MCP.so

1SSE有2 个2026-05-17
Brave Search 433812ff

MCP World

2未说明未标注1 个2026-05-17
mindsdb (430e18)

MCP World

0未说明有1 个2026-05-17

按同分类和工具数量挑出最接近的几条,字段以各自详情页为准。

常见问题

5 条

MCP Bayut Crawler 怎么安装?

公开资料给出的安装命令是 python3 -m venv venv,运行环境为 Python。装完后按客户端要求写进 MCP 配置,重启客户端生效。

MCP Bayut Crawler 怎么在 Claude Desktop、Cursor 里配置?

它是stdio 本地进程,客户端配置里要写启动命令和参数,运行环境是 Python;保存后完全退出客户端再打开,配置才会生效。

MCP Bayut Crawler 收费吗?

本站只整理公开资料,不代收费用,也没有标注具体价格。是否收费取决于服务本身和背后的接口额度,正式使用前按官方说明确认。

MCP Bayut Crawler 需要 API Key 吗?

公开资料标注的认证方式是会话凭据,也就是要先拿到凭据才能连上;凭据只填在自己本地的配置里,不要写进公开仓库。

MCP Bayut Crawler 支持哪些客户端?

公开资料标注支持 Claude Desktop、Claude;其他客户端只要能配置 MCP Server,也能用同样的命令或地址接入。

来源信息

继续浏览同类 MCP