分类广告搜索服务

为瑞士法语区领先的分类广告平台Joomil.ch提供搜索和浏览45,000+活跃列表的MCP服务,涵盖房地产、车辆、工作、动物、电子产品和时尚等34个类别。

  • by Valmo-Sarl
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 Valmo-Sarl/joomil-mcp

使用说明

乔米尔·麦克普

MCP服务器 Joomil.ch --瑞士领先的法语分类广告市场,自2007年以来一直活跃。

浏览和搜索34个类别的45000多个活跃房源:房地产、汽车、工作、动物、电子、时尚等,全部来自瑞士的法语区(罗曼迪)。

工具

工具 说明
suggest_filters 地狱 search_classifieds 从自然语言查询中筛选
search_classifieds 使用过滤器搜索列表:关键字、类别、州(严格枚举)、位置、价格范围、排序、分页
get_classified 按ID获取列表的完整详细信息:描述、图像、供应商、到期日期
get_categories 通过以下方式列出具有层次结构的活动类别 parent_id
get_cantons 列出支持的州值 canton 过滤器(特定于API的拼写)

快速开始

这是一个 远程MCP服务器 --无需本地安装。

端点: https://joomil-mcp.snowy-surf-deec.workers.dev/mcp

克劳德桌面

添加 ~/.claude/claude_desktop_config.json:

{
  "mcpServers": {
    "joomil": {
      "command": "npx",
      "args": ["mcp-remote", "https://joomil-mcp.snowy-surf-deec.workers.dev/mcp"]
    }
  }
}

光标

添加到MCP设置中:

{
  "joomil": {
    "url": "https://joomil-mcp.snowy-surf-deec.workers.dev/mcp"
  }
}

示例提示

  • “在沃州给我找一辆不到10000瑞士法郎的自动驾驶汽车。”
  • “在锡安找一套三房公寓。”
  • “Joomil提供哪些类别的电子产品?”
  • “给我看看瓦莱斯的古董沙发广告。”
  • “在Neuchâtel的酒店业寻找工作。”

给代理商的提示:呼叫 get_cantons 在按州过滤之前-API使用 不明显的拼写(例如。 Bern 不 Berne, Geneve 不 Genève/Geneva). 对于免费文本用户请求,请致电 suggest_filters 首先,然后通过返回 filters 反对 search_classifieds.

API 参考

suggest_filters

参数 类型 说明
query string 自然语言搜索请求,例如。 appartement 3 pièces à Sion

返回一个即用型 filters 对象为 search_classifieds,加上类别置信度得分和匹配不确定时的警告。MCP层会短暂缓存类别元数据,以避免为每个建议重新引用类别树。

有用的例子:

用户请求 典型的建议过滤器
Tesla Model 3 moins de 25'000 CHF q: "Tesla Model 3", cat_id: 101, price_max: 25000, sort: "price_asc"
vélo budget 1.5k CHF q: null,体育/休闲类别, price_max: 1500, sort: "price_asc"
appartement 3 pièces à Sion q: "3 pièces", cat_id: 10255, location: "Sion"
voiture entre 10'000 et 20'000 CHF cat_id: 101, price_min: 10000, price_max: 20000
Golf GTI dans le canton de Vaud q: "Golf GTI", cat_id: 101, canton: "Vaud"
canapé vintage à Lausanne q: "vintage", cat_id: 10022, location: "Lausanne"
iPhone 14 à Genève q: "iPhone 14", cat_id: 10127, location: "Genève"
{
  "query": "appartement 3 pièces à Sion",
  "filters": {
    "q": "3 pièces",
    "cat_id": 10255,
    "canton": null,
    "location": "Sion",
    "price_min": null,
    "price_max": null,
    "sort": "recent",
    "limit": 20
  },
  "category": {
    "id": 10255,
    "name": "Appartements",
    "url": "https://www.joomil.ch/annonces/immobilier/locations/appartements/10255",
    "parent_id": 339,
    "confidence": 0.82,
    "reason": "requête immobilière appartement"
  },
  "confidence": 0.74,
  "warnings": [],
  "next_step": "Call search_classifieds with the filters object. Adjust q or cat_id if the result set is too broad."
}

search_classifieds

参数 类型 说明
q string 全文搜索(标题+描述)
cat_id number 类别ID--包括子类别
canton enum 严格枚举--请参阅 get_cantons. Geneve, Vaud, Valais, Fribourg, Neuchatel, Jura, Bern, Argovie, Zurich, Lucerne, Bale-Ville, Etranger
location string 城市名称或邮政编码(部分匹配)
price_min number 最低价格(瑞士法郎)
price_max number 最高价格(瑞士法郎)
sort enum recent (默认,最新优先), price_asc, price_desc, views (浏览次数最多)
limit number 每页结果数(1-50,默认20)
offset number 分页偏移量--使用 next_offset 来自之前的回复

工具响应包括一个简短的人类可读摘要,后面是紧凑的序列化JSON content 用于MCP向后兼容性。完整数据也会返回 structuredContent 随着 results, total, limit, offset, has_more, next_offset,以及 filtered_out (MCP侧类别限制从当前页面中删除的项目)。

结果形状 (每个项目):

{
  "id": 366872, "title": "Maison avec étangs",
  "price": { "amount": 237977.5, "currency": "CHF" },
  "location": { "city": "Saint Eugène", "postal_code": "71320", "canton": "Geneve", "country": "FR" },
  "category": { "id": 10261, "name": "Maisons & Villas", "url": "https://..." },
  "url": "https://www.joomil.ch/annonce/.../366872",
  "created_at": "2026-06-26T22:17:11+02:00",
  "has_picture": true,
  "seller": { "name": "jpclair", "certified": false }
}

get_classified

参数 类型 说明
id number 列表ID(来自搜索结果或列表URL)

返回完整的列表详细信息,包括完整的描述、图像、类别路径、到期日期、升级级别和卖家详细信息。

get_categories

参数 类型 说明
parent_id number 可选--全部省略, 0 对于根类别,或其子类别的任何类别ID

get_cantons

没有参数。返回接受的canton值 search_classifieds' canton 过滤器,带有法语标签:

{
  "cantons": [
    { "name": "Geneve", "label_fr": "Genève", "code": "GE", "region": "Romandie" },
    { "name": "Bern", "label_fr": "Berne", "code": "BE", "region": "Suisse alémanique" }
  ],
  "total": 12
}

总是通过 name 字段(非 label_fr 也不 code)到 canton 过滤器。

数据

  • 源:Joomil.ch公共REST API
  • 覆盖:45000多个活跃列表,34个顶级类别,190000多个注册用户
  • 位置:瑞士(法语区----罗曼迪)
  • 语言:法语
  • 更新频率:实时
  • 认证:无需

局限性

此MCP服务器是 只读 并使用 仅限公共数据.

  • 无写入操作:无法创建、编辑或删除列表;无法联系卖家。
  • 无身份验证:没有用户帐户,没有消息,没有收藏夹,没有保存的搜索。
  • 没有卖家联系:电话号码和电子邮件地址不会公开——请使用列表 url 直接打开Joomil.ch。
  • 没有发布:必须在joomil.ch上发布广告。
  • 受限类别:Erotique(28)、Rencontres&Amitié(14000)、Voyance&Astrologie(651)及其后代将根据内容策略被MCP层过滤掉。底层的PHP API仍然可以直接使用。
  • 广州过滤器严格:仅返回以下值 get_cantons 被接受。其他拼写(Berne, Genève, Geneva, GE, VD…)被上游API静默忽略,并将返回所有列表而不是过滤集-这里的严格枚举防止了这种情况。
  • 货币:所有价格均为瑞士法郎。列表可能有 price.amount: null (根据要求提供价格)或 0 (免费)。
  • 上游错误:Joomil API故障作为MCP工具错误返回,带有 isError: true.

部署您自己的

git clone https://github.com/Valmo-Sarl/joomil-mcp
cd joomil-mcp
npm install
npx wrangler login
npm run deploy

许可证

麻省理工学院