内容
<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 服务器,用于 [Kamernet.nl](https://kamernet.nl):从 Claude、Cursor、Codex 和任何 AI 代理搜索荷兰的房间、单间和公寓。**
[](https://github.com/jasp-nerd/kamernet-mcp/actions/workflows/ci.yml)
[](https://pypi.org/project/kamernet-mcp/)
[](https://pypi.org/project/kamernet-mcp/)
[](LICENSE)
**中文** | [荷兰语](README.nl.md)
</div>
---
在荷兰找到一个房间非常困难:好的房源在1小时内会收到60+条回复。`kamernet-mcp` 将 Kamernet(荷兰最大的房间、单间和公寓平台)集成到您的 AI 代理中。代理根据您的标准搜索,阅读英文和荷兰语的完整房源, 根据您的预算对房源进行排名,并在有新房源时通知您。
<div align="center">

</div>
```text
您: 帮我找一个乌特马克的带家具的房间,价格不超过€900,面积至少15平方米,并按对职场人士最有价值的方式排列前3名。
代理: → search_listings(city="乌特马克", max_rent=900, min_size=15, ...)
→ get_listing(...) ×3
→ score-listing prompt
这里是前3名,包括押金、能源标签和红旗……
```
## 快速开始
需要 [uv](https://docs.astral.sh/uv/) (或普通的 `pip`)。只需一条命令:
```bash
claude mcp add kamernet -- uvx kamernet-mcp
```
然后请 Claude 为您找到一个房间。对于其他客户端,请使用安装徽章或展开下面的内容。
[](https://cursor.com/en/install-mcp?name=kamernet&config=eyJjb21tYW5kIjogInV2eCIsICJhcmdzIjogWyJrYW1lcm5ldC1tY3AiXX0%3D)
[](https://insiders.vscode.dev/redirect/mcp/install?name=kamernet&config=%7B%22command%22%3A%22uvx%22%2C%22args%22%3A%5B%22kamernet-mcp%22%5D%7D)
<details>
<summary><b>Claude 代码</b></summary>
```bash
claude mcp add kamernet -- uvx kamernet-mcp
```
或在 `.mcp.json` 中按项目提交到 git 中:
```json
{
"mcpServers": {
"kamernet": { "command": "uvx", "args": ["kamernet-mcp"] }
}
}
```
</details>
<details>
<summary><b>Claude 桌面版</b></summary>
添加到 `claude_desktop_config.json`(设置 → 开发者 → 编辑配置):
```json
{
"mcpServers": {
"kamernet": { "command": "uvx", "args": ["kamernet-mcp"] }
}
}
```
</details>
<details>
<summary><b>Cursor</b></summary>
使用上面的安装徽章,或添加到 `~/.cursor/mcp.json`(或项目中的 `.cursor/mcp.json`):
```json
{
"mcpServers": {
"kamernet": { "command": "uvx", "args": ["kamernet-mcp"] }
}
}
```
</details>
<details>
<summary><b>OpenAI Codex</b></summary>
```bash
codex mcp add kamernet -- uvx kamernet-mcp
```
或添加到 `~/.codex/config.toml`:
```toml
[mcp_servers.kamernet]
command = "uvx"
args = ["kamernet-mcp"]
```
</details>
<details>
<summary><b>OpenCode</b></summary>
添加到 `opencode.json`(注意 OpenCode 使用 `mcp` 键,而不是 `mcpServers`):
```json
{
"mcp": {
"kamernet": {
"type": "local",
"command": ["uvx", "kamernet-mcp"],
"enabled": true
}
}
}
```
</details>
<details>
<summary><b>VS Code(Copilot)</b></summary>
使用上面的安装徽章,或添加到 `.vscode/mcp.json`(注意 VS Code 使用 `servers` 键):
```json
{
"servers": {
"kamernet": { "type": "stdio", "command": "uvx", "args": ["kamernet-mcp"] }
}
}
```
</details>
<details>
<summary><b>Windsurf</b></summary>
添加到 `~/.codeium/windsurf/mcp_config.json`:
```json
{
"mcpServers": {
"kamernet": { "command": "uvx", "args": ["kamernet-mcp"] }
}
}
```
</details>
<details>
<summary><b>Gemini CLI</b></summary>
添加到 `~/.gemini/settings.json`:
```json
{
"mcpServers": {
"kamernet": { "command": "uvx", "args": ["kamernet-mcp"] }
}
}
```
</details>
<details>
<summary><b>Zed</b></summary>
添加到 Zed `settings.json`:
```json
{
"context_servers": {
"kamernet": { "command": { "path": "uvx", "args": ["kamernet-mcp"] } }
}
}
```
</details>
<details>
<summary><b>无 uv(普通 pip)</b></summary>
```bash
pip install kamernet-mcp
```
然后在上面的配置中使用 `kamernet-mcp` 作为命令。
</details>
## 工具
| 工具 | 功能 |
|---|---|
| `search_listings` | 按城市搜索,带有筛选器:最大租金(€),最小面积(m²),半径(公里),房产类型(房间 / 公寓 / 单间 / 反黑 / 学生住房),排序顺序,分页。 |
| `get_listing` | 一个房源的完整详细信息:双语描述,租金 + 押金,能源标签,注册可能性,房东统计数据(响应率,会员时长,验证徽章),照片,坐标。 |
| `get_new_listings` | 无状态监控:“自上次检查以来出现了什么?” 让您的代理 polling 而不轰炸网站。 |
| `account_status`* | 验证配置的 Kamernet 账户是否可以登录。 |
| `reply_to_listing`* | **实验性**:从您的账户向房东发送回复,包括 Kamernet 的申请人问题。 |
\* 仅当设置了 `KAMERNET_EMAIL` / `KAMERNET_PASSWORD` 时注册;参见 [身份验证工具](#身份验证工具-实验性)。
还有一个 `kamernet://filters` 资源,列出了所有有效的筛选值,以及一个 `score-listing` 提示:一个加权评分标准(价格,位置,质量,隐私,长期适合度),具有双语的“不可接受条件”检测(“不欢迎国际人士” / “geen internationals”),您的代理用于为您对房源进行排名。
## 配置
所有功能都无需配置即可使用。可选环境变量:
| 变量 | 默认值 | 用途 |
|---|---|---|
| `KAMERNET_EMAIL` | — | 启用身份验证工具。 |
| `KAMERNET_PASSWORD` | — | 启用身份验证工具。 |
| `KAMERNET_REQUEST_DELAY` | `1.0` | 请求 kamernet.nl 之间的最小秒数。小于 1.0 的值将被忽略。 |
| `KAMERNET_MAX_REPLIES_PER_SESSION` | `50` | 自动回复每个服务器会话的硬上限。 |
| `KAMERNET_USER_AGENT` | 透明 UA | 将此工具标识为 Kamernet,并附上此仓库的链接。 |
## 身份验证工具(实验性)
搜索不需要账户。**回复房东需要付费的 Kamernet 高级账户** (这是 Kamernet 的付费墙,不是我们的)和浏览器自动化:
```bash
uvx --with 'kamernet-mcp[auth]' kamernet-mcp # 或:pip install 'kamernet-mcp[auth]'
playwright install chromium
```
在您的 MCP 客户端的 `env` 块中设置 `KAMERNET_EMAIL` 和 `KAMERNET_PASSWORD`。Cookie 缓存本地,因此登录很少发生。
> [!WARNING]
> 自动回复违反 Kamernet 的服务条款,可能导致您的账户被封禁。回复在每个会话中都有硬上限。请仅用于您为特定房源撰写并批准的消息;向 50 位房东发送通用消息会淹没房东并损害您的机会。请自担风险。
## 工作原理
Kamernet 是一个 Next.js 网站。其 CSS 类名在每次部署时都会更改,这也是大多数早期的 Kamernet 机器人失效的原因。该服务器跳过了它们,并读取了每个公共页面中嵌入的结构化 `__NEXT_DATA__` JSON:网站从中渲染的相同数据,并且在前端重新设计时保持稳定。
代码中强制执行礼貌:透明的 User-Agent 链接到此仓库,请求之间至少间隔 1 秒,无 robots.txt 禁止的端点,无逃避速率限制的技巧。拒绝削弱此功能的 PR。
## 开发
```bash
git clone https://github.com/jasp-nerd/kamernet-mcp
cd kamernet-mcp
uv sync --all-extras
uv run pytest # 40+ 测试,无需网络
uv run ruff check .
```
测试在真实 Kamernet 页面的净化快照(`tests/fixtures/`)和 FastMCP 的内存客户端上运行,锻炼完整的 MCP 协议,无需浏览器或网络。参见 [CONTRIBUTING.md](CONTRIBUTING.md)。
使用 MCP Inspector 进行交互式调试:
```bash
npx @modelcontextprotocol/inspector uv run kamernet-mcp
```
## 免责声明
这是一个非官方的、仅供个人使用的工具。 **它与 Kamernet B.V. 无任何关联、认可或联系**。
- 仅限 **个人,非商业使用** (为您自己找房子)。大规模抓取个人数据可能违反 GDPR/AVG;荷兰 DPA ([Autoriteit Persoonsgegevens](https://www.autoriteitpersoonsgegevens.nl/)) 已发布相关指导。不要收集、重新发布或重新分发房源数据。
- 您负责遵守 [Kamernet 的服务条款](https://kamernet.nl/en/terms-and-conditions) 和适用法律。
- 房源数据可能不正确或已过时。在做出任何决定之前,请在 kamernet.nl 上验证,并在支付押金之前永远不要在未查看房间的情况下支付。
## 许可证
[MIT](LICENSE) © 2026 jasp-nerd
<!-- mcp-name: io.github.jasp-nerd/kamernet-mcp -->