kamernet-mcp

kamernet-mcp

Enables AI agents to search Dutch housing listings on Kamernet.nl, retrieve full listing details, and optionally reply to landlords; designed for personal use in finding rooms, studios, and apartments.

Category
访问服务器

README

<div align="center">

<picture> <source media="(prefers-color-scheme: dark)" srcset="assets/banner-dark.svg"> <img alt="kamernet-mcp: find Dutch rooms, studios and apartments from any AI agent" src="assets/banner-light.svg" width="800"> </picture>

MCP server for Kamernet.nl: search Dutch rooms, studios and apartments from Claude, Cursor, Codex and any AI agent.

CI PyPI Python License: MIT

English | Nederlands

</div>


Finding a room in the Netherlands is brutal: good listings get 60+ replies within the hour. kamernet-mcp puts Kamernet, the largest Dutch platform for rooms, studios and apartments, inside your AI agent. The agent searches with your criteria, reads full listings in English and Dutch, ranks them against your budget, and tells you when something new appears.

<div align="center">

kamernet-mcp searching Kamernet live

</div>

You:    Find me a furnished room in Utrecht under €900, at least 15 m², and rank
        the top 3 by value for a working professional who needs registration.

Agent:  → search_listings(city="Utrecht", max_rent=900, min_size=15, ...)
        → get_listing(...) ×3
        → score-listing prompt
        Here are the top 3, with deposits, energy labels and red flags…

Quickstart

Requires uv (or plain pip). One command:

claude mcp add kamernet -- uvx kamernet-mcp

Then ask Claude to find you a room. For other clients, use an install badge or unfold yours below.

Install in Cursor Install in VS Code

<details> <summary><b>Claude Code</b></summary>

claude mcp add kamernet -- uvx kamernet-mcp

Or per project, committed to git, in .mcp.json:

{
  "mcpServers": {
    "kamernet": { "command": "uvx", "args": ["kamernet-mcp"] }
  }
}

</details>

<details> <summary><b>Claude Desktop</b></summary>

Add to claude_desktop_config.json (Settings → Developer → Edit Config):

{
  "mcpServers": {
    "kamernet": { "command": "uvx", "args": ["kamernet-mcp"] }
  }
}

</details>

<details> <summary><b>Cursor</b></summary>

Use the install badge above, or add to ~/.cursor/mcp.json (or .cursor/mcp.json in a project):

{
  "mcpServers": {
    "kamernet": { "command": "uvx", "args": ["kamernet-mcp"] }
  }
}

</details>

<details> <summary><b>OpenAI Codex</b></summary>

codex mcp add kamernet -- uvx kamernet-mcp

Or add to ~/.codex/config.toml:

[mcp_servers.kamernet]
command = "uvx"
args = ["kamernet-mcp"]

</details>

<details> <summary><b>OpenCode</b></summary>

Add to opencode.json (note OpenCode uses an mcp key, not mcpServers):

{
  "mcp": {
    "kamernet": {
      "type": "local",
      "command": ["uvx", "kamernet-mcp"],
      "enabled": true
    }
  }
}

</details>

<details> <summary><b>VS Code (Copilot)</b></summary>

Use the install badge above, or add to .vscode/mcp.json (note VS Code uses a servers key):

{
  "servers": {
    "kamernet": { "type": "stdio", "command": "uvx", "args": ["kamernet-mcp"] }
  }
}

</details>

<details> <summary><b>Windsurf</b></summary>

Add to ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "kamernet": { "command": "uvx", "args": ["kamernet-mcp"] }
  }
}

</details>

<details> <summary><b>Gemini CLI</b></summary>

Add to ~/.gemini/settings.json:

{
  "mcpServers": {
    "kamernet": { "command": "uvx", "args": ["kamernet-mcp"] }
  }
}

</details>

<details> <summary><b>Zed</b></summary>

Add to Zed settings.json:

{
  "context_servers": {
    "kamernet": { "command": { "path": "uvx", "args": ["kamernet-mcp"] } }
  }
}

</details>

<details> <summary><b>Without uv (plain pip)</b></summary>

pip install kamernet-mcp

Then use kamernet-mcp as the command in any of the configs above.

</details>

Tools

Tool What it does
search_listings Search by city with filters: max rent (€), min size (m²), radius (km), property type (room / apartment / studio / anti-squat / student housing), sort order, pagination.
get_listing Full details of one listing: bilingual description, rent + deposit, energy label, registration ("inschrijving") possibility, landlord stats (response rate, member since, verified badges), photos, coordinates.
get_new_listings Stateless monitoring: "what appeared since my last check?" Lets your agent poll without hammering the site.
account_status* Verify the configured Kamernet account can log in.
reply_to_listing* Experimental: sends a reply to a landlord from your account, including Kamernet's applicant questions.

* Only registered when KAMERNET_EMAIL / KAMERNET_PASSWORD are set; see Authenticated tools.

There is also a kamernet://filters resource listing all valid filter values, and a score-listing prompt: a weighted rubric (price, location, quality, privacy, long-term fit) with bilingual deal-breaker detection ("no internationals" / "geen internationals") that your agent uses to rank listings for you.

Configuration

Everything works with zero config. Optional environment variables:

Variable Default Purpose
KAMERNET_EMAIL Enables authenticated tools.
KAMERNET_PASSWORD Enables authenticated tools.
KAMERNET_REQUEST_DELAY 1.0 Minimum seconds between requests to kamernet.nl. Values below 1.0 are ignored.
KAMERNET_MAX_REPLIES_PER_SESSION 50 Hard cap on automated replies per server session.
KAMERNET_USER_AGENT transparent UA Identifies this tool to Kamernet, with a link to this repo.

Authenticated tools (experimental)

Searching needs no account. Replying to landlords requires a paid Kamernet premium account (that's Kamernet's paywall, not ours) and browser automation:

uvx --with 'kamernet-mcp[auth]' kamernet-mcp   # or: pip install 'kamernet-mcp[auth]'
playwright install chromium

Set KAMERNET_EMAIL and KAMERNET_PASSWORD in your MCP client's env block. Cookies are cached locally so login happens rarely.

[!WARNING] Automated replying violates Kamernet's terms of service and can get your account banned. Replies are hard-capped per session. Use it for messages you wrote and approved for one specific listing; a generic message sent to 50 landlords floods landlords and hurts your own chances. Use at your own risk.

How it works

Kamernet is a Next.js site. Its CSS class names change on every deploy, which is what killed most earlier Kamernet bots. This server skips them and reads the structured __NEXT_DATA__ JSON embedded in each public page: the same data the site renders from, and stable across frontend redesigns.

Politeness is enforced in code: a transparent User-Agent linking to this repo, a minimum 1-second delay between requests, no robots.txt-disallowed endpoints, and no tricks to evade rate limits. PRs that weaken this are rejected.

Development

git clone https://github.com/jasp-nerd/kamernet-mcp
cd kamernet-mcp
uv sync --all-extras
uv run pytest          # 40+ tests, no network needed
uv run ruff check .

Tests run against sanitized snapshots of real Kamernet pages (tests/fixtures/) plus FastMCP's in-memory client, exercising the full MCP protocol without a browser or network. See CONTRIBUTING.md.

Debug interactively with the MCP Inspector:

npx @modelcontextprotocol/inspector uv run kamernet-mcp

Disclaimer

This is an unofficial, personal-use tool. It is not affiliated with, endorsed by, or connected to Kamernet B.V. in any way.

  • Intended for personal, non-commercial use (finding yourself a home). Scraping personal data at scale can violate the GDPR/AVG; the Dutch DPA (Autoriteit Persoonsgegevens) has published guidance on this. Don't harvest, republish or redistribute listing data.
  • You are responsible for complying with Kamernet's terms of service and applicable law.
  • Listing data can be wrong or stale. Verify on kamernet.nl before you decide anything, and never pay a deposit before viewing the room.

License

MIT © 2026 jasp-nerd

<!-- mcp-name: io.github.jasp-nerd/kamernet-mcp -->

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选