内容
<p align="center">
<img src="https://raw.githubusercontent.com/jasp-nerd/marktplaats-mcp/main/assets/banner.svg" alt="marktplaats-mcp: 搜索市场广场和2dehands的AI代理" width="760">
</p>
<p align="center">
<b>简体中文</b> | <a href="https://github.com/jasp-nerd/marktplaats-mcp/blob/main/README.nl.md">Nederlands</a> | <a href="https://github.com/jasp-nerd/marktplaats-mcp/blob/main/README.fr.md">Français</a>
</p>
# 市场广场MCP
**市场广场MCP** 是一个MCP服务器,允许Claude、Cursor、Codex、opencode等MCP客户端搜索荷兰和比利时的二手分类广告市场 - 市场广场(Marktplaats)和2dehands。通过自然语言查找优惠、检查卖家、浏览类别和监控新列表。
[](https://pypi.org/project/marktplaats-mcp/)
[](https://pypi.org/project/marktplaats-mcp/)
[](https://github.com/jasp-nerd/marktplaats-mcp/blob/main/LICENSE)
[](https://github.com/jasp-nerd/marktplaats-mcp/actions/workflows/ci.yml)
[](https://pypi.org/project/marktplaats-mcp/)
[](https://github.com/astral-sh/ruff)
## ✨ 功能
- 🔍 **强大的搜索**:自由文本、类别、价格范围、条件、距离邮政编码、最近程度、排序
- 🇳🇱🇧🇪 **两个市场,一个服务器**:marktplaats.nl(荷兰)和2dehands.be(比利时)通过`site`参数
- 📄 **完整的列表详情**:完整的描述、所有照片、浏览和收藏次数、列表年龄
- 🛡️ **卖家审查**:验证的银行账户、身份和电话、评论评分
- 🔔 **新列表监控**:通过无状态游标轮询在时间戳后发布的广告
- 🧠 **为LLM构建**:紧凑的token高效输出、过滤掉付费推广、结构化结果、分页提示
- 🔁 **有弹性**:指数退避、抖动和`Retry-After`处理
- 🔓 **无需账户,无需API密钥**
## 🚀 快速开始
唯一的先决条件是 [uv](https://docs.astral.sh/uv/) (`brew install uv` 或 `curl -LsSf https://astral.sh/uv/install.sh | sh`)。
**Claude Code**,一条命令:
```bash
claude mcp add marktplaats -- uvx marktplaats-mcp
```
然后询问: *"在3011 AB附近搜索市场广场上的OLED电视,价格不超过€400。*
<p align="center">
<img src="https://raw.githubusercontent.com/jasp-nerd/marktplaats-mcp/main/assets/demo.gif" alt="Claude Code通过marktplaats-mcp搜索市场广场上的二手赛车自行车" width="860">
</p>
## 📦 在您喜欢的客户端中安装
每个配置都通过 `uvx marktplaats-mcp` 运行相同的stdio服务器。
<details>
<summary><b>Claude Desktop</b></summary>
添加到 `claude_desktop_config.json` (macOS:`~/Library/Application Support/Claude/`,Windows:`%APPDATA%\Claude\`),然后完全重启Claude Desktop:
```json
{
"mcpServers": {
"marktplaats": {
"command": "uvx",
"args": ["marktplaats-mcp"]
}
}
}
```
如果Claude Desktop找不到 `uvx`,请使用绝对路径(`which uvx`,例如 `/Users/you/.local/bin/uvx`)。
</details>
<details>
<summary><b>OpenAI Codex CLI</b></summary>
添加到 `~/.codex/config.toml`:
```toml
[mcp_servers.marktplaats]
command = "uvx"
args = ["marktplaats-mcp"]
```
或: `codex mcp add marktplaats -- uvx marktplaats-mcp`
</details>
<details>
<summary><b>opencode</b></summary>
添加到 `opencode.json`:
```json
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"marktplaats": {
"type": "local",
"command": ["uvx", "marktplaats-mcp"],
"enabled": true
}
}
}
```
</details>
<details>
<summary><b>Cursor</b></summary>
添加到 `~/.cursor/mcp.json` (全局)或 `.cursor/mcp.json` (项目):
```json
{
"mcpServers": {
"marktplaats": {
"command": "uvx",
"args": ["marktplaats-mcp"]
}
}
}
```
</details>
<details>
<summary><b>VS Code / GitHub Copilot</b></summary>
添加到 `.vscode/mcp.json` (注意 `servers` 键和显式 `type`):
```json
{
"servers": {
"marktplaats": {
"type": "stdio",
"command": "uvx",
"args": ["marktplaats-mcp"]
}
}
}
```
</details>
<details>
<summary><b>Windsurf</b></summary>
添加到 `~/.codeium/windsurf/mcp_config.json`:
```json
{
"mcpServers": {
"marktplaats": {
"command": "uvx",
"args": ["marktplaats-mcp"]
}
}
}
```
</details>
<details>
<summary><b>Gemini CLI</b></summary>
添加到 `~/.gemini/settings.json`:
```json
{
"mcpServers": {
"marktplaats": {
"command": "uvx",
"args": ["marktplaats-mcp"]
}
}
}
```
</details>
<details>
<summary><b>JetBrains IDEs(AI Assistant / Junie)</b></summary>
设置 → 工具 → AI Assistant → 模型上下文协议(MCP)→ 添加:
```json
{
"mcpServers": {
"marktplaats": {
"command": "uvx",
"args": ["marktplaats-mcp"]
}
}
}
```
</details>
## 🧰 工具
| 工具 | 功能 |
|---|---|
| `search_listings` | 使用查询、类别、价格范围、条件、距离、最近程度、排序和分页搜索 |
| `get_listing_details` | 完整的广告:完整的描述、所有图片、浏览和收藏次数、列表年龄 |
| `get_seller_profile` | 信任信号:验证的银行、身份和电话、评论评分和数量 |
| `list_categories` | 浏览用于过滤的类别树(名称 + id) |
| `check_new_listings` | 最新优先监控,带有无状态游标:仅返回在`since`之后发布的广告 |
所有五个工具都是只读的,并带有匹配的MCP注释,因此客户端会跳过确认提示。
### 示例提示
- *"在3011 AB附近搜索市场广场上的OLED电视,价格不超过€400。*
- *"在2dehands上搜索距安特卫普2000邮政编码20公里范围内的bakfiets。*
- *"卖家12345是否值得信赖?检查他们的资料。*
- *"自上次检查以来,检查新的'复古灯'列表,并总结有趣的列表。*
## ❓ 常见问题
**是否需要市场广场账户或API密钥?**
不,它使用网站本身使用的相同的公共JSON端点。
**这是市场广场的官方产品吗?**
不,这是一个独立的开源项目,与市场广场或Adevinta没有任何联系。底层API是未文档化的,可能会更改。服务器在速率限制时礼貌地退避;请保持您自己的使用合理。
**为什么有时候看到的结果比限制的少?**
付费推广(DAGTOPPER/TOPADVERTENTIE)默认被过滤掉。如果您想要,可以传递`include_sponsored=true`。
**支持哪些Python版本?**
3.10 及以上。CI测试 3.11 到 3.13 在 Linux、macOS 和 Windows 上。
## 🗺️ 路线图
- 具有价格下降检测的持久保存搜索
- 通知(Discord/Telegram/ntfy via Apprise)
- 身份验证工具(您的消息、收藏和出价)
- Docker镜像 + Docker MCP目录
## 🤝 贡献
欢迎PR。参见 [CONTRIBUTING.md](https://github.com/jasp-nerd/marktplaats-mcp/blob/main/.github/CONTRIBUTING.md) 获取开发设置:`uv sync --all-groups`,然后 `uv run pytest`。
该项目重用了 [marktplaats-py](https://github.com/jensjeflensje/marktplaats-py)、[marktplaats-monitor](https://github.com/jasp-nerd/marktplaats-monitor)、[marktplaats-2dehands-mcp](https://github.com/gjoris/marktplaats-2dehands-mcp) 和 [PonClick/marktplaats-mcp](https://github.com/PonClick/marktplaats-mcp) 中的成熟想法。详情参见 [THIRD_PARTY_NOTICES.md](https://github.com/jasp-nerd/marktplaats-mcp/blob/main/THIRD_PARTY_NOTICES.md)。
## 📄 许可证
[MIT](https://github.com/jasp-nerd/marktplaats-mcp/blob/main/LICENSE) 2026 jasp-nerd
<sub>mcp-name: io.github.jasp-nerd/marktplaats-mcp</sub>