关于 Sverige Begagnad
Sverige Begagnad 是面向二手商品买家和转售者的 MCP 服务,可搜索瑞典的二手市场。它汇总 Blocket、Tradera、Klaravik 和 Vinted 的商品信息,并支持筛选和位置数据。
主要功能
- 01搜索四个二手市场
- 02合并搜索或单站搜索
- 03价格和类别筛选
- 04地区和县筛选
- 05商品坐标与距离信息
- 06市场类别查询
适用场景
- 01查找瑞典指定地区的二手商品
- 02比较多个市场的商品信息
- 03寻找适合修复和转售的商品
MCP 相关
向 MCP 客户端提供市场搜索、类别与地点查询,以及数据源健康检查工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
uvx sverige-begagnad-mcpTRADERA_APP_IDNumeric Tradera App ID from api.tradera.com/register.TRADERA_APP_KEY密钥Tradera App Key (GUID secret) from api.tradera.com/register.BLOCKET_LOCATIONSOptional comma-separated Blocket region (län) names to scope searches; empty = all of Sweden.本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
11收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| query | string | 是 | 自由文本搜索查询。使用瑞典语词汇效果最佳(例如 'String hylla'、'Festool'、'Fjällräven')。 |
| category | any | 否 | 可选的 Blocket 类别名称,用于筛选结果。必须是 list_blocket_categories() 返回的值;未知值将被忽略,并在 `warning` 中标记。 |
| locations | any | 否 | 用于搜索的可选地区(län)名称列表,例如 ['KRONOBERG','KALMAR']。有效名称来自 list_blocket_locations()。如果省略,则依次使用 BLOCKET_LOCATIONS 环境变量默认值,或搜索整个瑞典。 |
| max_pages | integer | 否 | 要获取的结果页数(每页约 60 条广告)。负载较小,请保持在 1–3 页。 |
详细介绍
🇸🇪 瑞典二手 MCP
通过 AI 助手,直接在瑞典各地寻找优质二手好物。
一个 MCP 服务,可让 Claude(或任何 MCP 客户端)搜索 Blocket、Tradera、 Klaravik 和 Vinted(还可选用本地 Facebook Marketplace),找到值得购买、修复和转售的二手物品。
💬 可以向 Claude 提出什么请求
连接后,直接告诉它:
🪑 “在 Växjö 附近寻找 1000 SEK 以下的 String 搁架(String hylla)。”
🛠️ “在 Blocket 和 Tradera 上搜索 Festool 或 Makita 工具,看看哪些可以转卖获利。”
🔊 “Tradera 上有哪些价格在 500 至 3000 SEK 之间的 Bang & Olufsen 扬声器?”
🚲 “列出 Blocket 类别,然后在 Skåne 寻找优质自行车(Kronan、Crescent)。”
📈 “本周在 Kronoberg 及邻近县搜寻斯堪的纳维亚设计商品,并按预估利润排序。”
Claude 会选择合适的工具、应用你的筛选条件,并一次性返回来自两个市场的标题、价格、地点、链接和图片。
✨ 功能
| 🔎 四个市场 | 同时或分别搜索 Blocket、Tradera、Klaravik 和 Vinted,并统一结果格式 |
| 🎯 丰富的筛选条件 | 最高/最低价格、类别、县(Tradera)·地区和类别(Blocket) |
| 📍 位置感知 | 每条 Blocket 结果都包含 coordinates + distance,便于精确按半径筛选 |
| 🌍 默认面向全瑞典 | 搜索范围覆盖瑞典全境;可通过配置或单次搜索将范围限定为所在地区 |
| 🧭 发现工具 | 列出类别、地区和县,帮助 Agent 智能筛选 |
| 🧩 易于安装 | 可通过一条命令安装 Claude Code 插件、uvx 或从源码安装;每位用户使用自己的密钥 |
| ✅ 经过实时测试 | 已针对实际 API 对每个来源进行端到端验证 |
📊 来源状态
| 来源 | 方式 | 稳定性 |
|---|---|---|
| Tradera | 官方 REST API(v4) | 🟢 稳定 — 已通过实时测试;需要免费注册 |
| Blocket | 社区软件包(blocket-api) | 🟡 稳定性一般,非官方 — 已通过实时测试 |
| Klaravik | 内部 JSON 端点 | 🟡 非官方 — 已通过实时测试;拍卖当前出价 |
| Vinted | 内部 API(受机器人防护) | 🟠 非官方,最不稳定 — 使用住宅 IP 效果最佳 |
| Facebook Marketplace | 默认禁用 | 🔴 风险较高,仅限本地 — 请参阅 facebook_client.py |
🔑 获取 Tradera 凭据(所有安装方式均需要)
- 在 https://api.tradera.com/register 免费注册。
- 接受使用条款和徽标使用条款。
- 创建应用并复制数字 App ID 和 App Key
(GUID 密钥)。请将它们设为
TRADERA_APP_ID/TRADERA_APP_KEY。
Blocket 不需要凭据。Facebook Marketplace 默认关闭。
📦 安装
每位用户都使用自己的 Tradera 密钥运行自己的副本 — 根据你的客户端选择合适的方式。基于 uvx 的安装方式需要先安装 uv
(在 Windows 上运行 curl -LsSf https://astral.sh/uv/install.sh | sh,或
winget install astral-sh.uv)— 无需克隆仓库或创建虚拟环境。
选项 1 — Claude Code 插件(最简单)
claude plugin marketplace add tudorgrigoriu90/sverige-begagnad-mcp
claude plugin install sverige-begagnad@sverige-begagnad-marketplace
然后导出你的密钥(插件会将它们传递给服务):
export TRADERA_APP_ID=... # Windows PowerShell: $env:TRADERA_APP_ID="..."
export TRADERA_APP_KEY=...
export BLOCKET_LOCATIONS= # optional; empty = all of Sweden
重启 Claude Code — 你将获得 search_blocket、search_tradera、search_all,
以及更多工具。该插件会通过 uvx 直接从 GitHub 运行服务。
选项 2 — uvx(Claude Desktop 或任何 MCP 客户端)
添加到客户端的 MCP 配置中(Claude Desktop:设置 → 开发者 → 编辑配置):
{
"mcpServers": {
"sverige-begagnad": {
"command": "uvx",
"args": ["sverige-begagnad-mcp"],
"env": {
"TRADERA_APP_ID": "...",
"TRADERA_APP_KEY": "...",
"BLOCKET_LOCATIONS": ""
}
}
}
}
uvx 会在首次运行时从 PyPI 获取已发布的软件包并缓存。重启客户端。
选项 3 — 从源代码运行(开发)
git clone https://github.com/tudorgrigoriu90/sverige-begagnad-mcp
cd sverige-begagnad-mcp
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -e .
cp .env.example .env # then fill in your keys
将客户端指向虚拟环境中的 sverige-begagnad-mcp 命令(或
python -m sverige_begagnad_mcp.server),并将 cwd 设为仓库目录。
✅ 验证是否正常运行(可选)
从已设置密钥的源代码检出目录运行(在 .env 或环境变量中设置):
# Tradera — official REST API v4 (https://api.tradera.com/v4, header auth)
python -m sverige_begagnad_mcp.tradera_client
# Blocket — unofficial community API
python -c "import asyncio; from sverige_begagnad_mcp.blocket_client import search_blocket; print(asyncio.run(search_blocket('String hylla')))"
这两项都经过实时测试。如果 Tradera 的结构发生变化,OpenAPI 规范位于
https://api.tradera.com/openapi.json。
🧰 工具
| 工具 | 用途 |
|---|---|
search_blocket(query, category?, locations?, max_pages?) | 搜索 Blocket |
list_blocket_categories() | 有效的类别名称 |
list_blocket_locations() | 有效的地区(län)名称 |
search_tradera(query, category_id?, price_min?, price_max?, county_id?) | 搜索 Tradera |
list_tradera_categories() | 类别树 → category_id |
list_tradera_counties() | 可用于可选 county_id 筛选条件的郡 ID |
search_klaravik(query) | 搜索 Klaravik 拍卖(当前出价) |
search_vinted(query, price_min?, price_max?) | 搜索 Vinted 时尚商品信息 |
search_facebook_marketplace(...) | 默认禁用(仅限本地) |
search_all(query, blocket_category?, blocket_locations?, tradera_category_id?, price_min?, price_max?) | 一次调用搜索 Blocket、Tradera、Klaravik 和 Vinted |
health_check() | 检查每个来源并报告哪些仍在获取数据 |
📍 地理范围
搜索范围默认为整个瑞典。设置区域有三种方式,按优先级排序:
- 单次搜索 — 将
locations传给search_blocket(或将blocket_locations传给search_all),例如["KRONOBERG", "KALMAR"]。使用list_blocket_locations()获取有效名称。 - 个人默认值 — 在
.env中将BLOCKET_LOCATIONS设为以逗号分隔的地区名称列表。 - 未设置 — 整个瑞典。
Blocket 的筛选条件基于地区(län),而不是精确的公里半径。若要严格筛选“驾车 X 分钟以内”的结果,请让 Claude 对每条商品信息进行最终检查 — 每个结果都包含广告中提到的位置,以及 coordinates(纬度/经度)和 Blocket 自身提供的
distance。Tradera 面向全国并支持配送,因此没有半径概念(可选的 county_id 筛选条件很少用到)。
🗺️ 示例:我自己的 Växjö / Älmhult 设置
个人范围仅保存在 .env 中(已加入 gitignore — 不会作为默认设置发布):
BLOCKET_LOCATIONS=KRONOBERG,KALMAR,JONKOPING,HALLAND,SKANE
🤖 高级用户:完整的每周“寻源 Agent”提示词
将其粘贴为你的指令,即可把这些工具变成按利润排序的每周搜索流程。 它会运行多项有针对性的瑞典语搜索,按半径/质量筛选,估算利润, 并返回排序后的候选清单。可根据喜好调整品牌、地区和阈值。
ROLE: You are a sourcing assistant for a personal, quality-focused loppis (flip).
Each week, search Blocket and Tradera for second-hand items to buy, minimally
restore, and resell at a profit.
METHOD: Search with SWEDISH terms. Run MANY targeted searches — by BRAND and by
CATEGORY — across both sources; deduplicate. Prices are in SEK.
AREA: within ~35 km straight-line of Växjö (56.88, 14.81) or Älmhult (56.55, 14.14),
computed from each Blocket result's `coordinates`. Tradera ships nationally, so
include shippable Tradera items too.
QUALITY: recognized brand or top craftsmanship (String, Artek, Fritz Hansen, Louis
Poulsen, Iittala, Orrefors, Bang & Olufsen, Braun, Marantz, Bahco, Hilti, Festool,
Makita, Kronan, Crescent…); "bra skick"/"nyskick" or minor cosmetic wear; asking
price clearly below market; only minimal restoration (clean, polish, light sand,
small off-the-shelf parts).
PROFIT: estimate resale value (use web search for comparables if available — do NOT
invent sold prices). Net = resale − (purchase + restoration + pickup/courier), with
stated assumptions (~80 SEK pickup fuel, ~70 SEK courier, 0–150 SEK materials).
Include only items with estimated net profit ≥ 300 SEK. Note that Tradera auction
prices may rise before close.
OUTPUT: ranked by net profit descending, max 15. For each: title + link + location
(distance from Växjö or "ships nationally"), asking vs. estimated market price, net
profit with assumptions, 2–3 restoration steps, and a risk note. End with a 2–3
sentence read on the week's trends. Don't pad with weak candidates.
🚫 Facebook Marketplace — 禁用原因
Facebook Marketplace 没有公共 API。已知的唯一方法(会话 Cookie 或无头浏览器抓取)都明确违反 Facebook 的服务条款。
src/sverige_begagnad_mcp/facebook_client.py 模块被有意保留为存根,其中解释了如何自行实现,但风险自负。
🛠️ 维护与发布
维护者备注
- 如果某个数据源失效: Blocket → 查看 https://pypi.org/project/blocket-api/ 是否有更新版本;Tradera → 查看 https://api.tradera.com/openapi.json 上的 OpenAPI 规范。
- PyPI(支持使用简短命令
uvx sverige-begagnad-mcp):先运行python -m build,再运行twine upload dist/*。请先更新pyproject.toml和src/sverige_begagnad_mcp/__init__.py中的version。 - 插件市场:
.claude-plugin/marketplace.json和plugins/目录使本仓库本身就成为插件市场,无需额外托管。 - MCP Registry:
server.json已准备就绪;发布 PyPI 版本后,使用mcp-publisherCLI 发布(参见 Registry 发布指南)。
📄 许可证
MIT — 每位用户都使用自己的凭据运行自己的副本。请注意,Blocket 没有官方 API;此项目使用的是非官方社区软件包,因此请谨慎使用 Blocket 部分。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。