Sverige Begagnad

io.github.tudorgrigoriu90由 GitHub 账号 tudorgrigoriu90 发布v0.3.1更新于 Oct 24, 2026

Search Swedish second-hand marketplaces (Blocket, Tradera, Klaravik, Vinted) for used items.

概览

AI 生成的概览

搜索瑞典二手交易平台(Blocket、Tradera、Klaravik、Vinted),让助手查找二手商品、价格与所在地。

可以做什么
  • 按关键词、分类和地区搜索 Blocket 商品,结果含坐标与距离
  • 按关键词、分类、价格区间和县搜索 Tradera
  • 搜索 Klaravik 拍卖和 Vinted 时尚类商品
  • 一次调用同时检索 Blocket、Tradera、Klaravik 与 Vinted
  • 列出 Blocket 有效分类与地区,以及 Tradera 分类与县
  • 通过健康检查逐个探测各来源是否仍能返回数据
适用场景
适合在瑞典淘二手货时使用,例如家具、工具、音响、自行车、服饰,希望助手一次扫遍多个平台、按价格和区域筛选,并返回标题、价格、地点和链接。
运行要求
以 stdio 方式在本机运行,通常通过 PyPI 的 uvx 启动(需安装 uv),或从源码以 Python 运行。需要免费注册 Tradera,提供 TRADERA_APP_ID 与 TRADERA_APP_KEY。可选 BLOCKET_LOCATIONS 设置默认地区。需要能访问各平台接口的网络;Blocket 无需凭据。
安装前请注意
TRADERA_APP_KEY 是密钥,需自行提供,每位用户用自己的密钥运行自己的副本。Blocket、Klaravik 和 Vinted 均为非官方接入,可能失效或被拦截,Vinted 在住宅 IP 下效果最好。Facebook Marketplace 因抓取违反其条款而默认关闭。服务器只返回商品信息,购买、出价和付款都在服务器之外进行。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Sverige Begagnad,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

🇸🇪 Sverige Begagnad MCP

Find quality second-hand deals across Sweden — straight from your AI assistant.

An MCP server that lets Claude (or any MCP client) search Blocket, Tradera, Klaravik, and Vinted (plus optional local Facebook Marketplace) for used items worth buying, restoring, and reselling.

[PyPI] [MCP Registry] [License: MIT] [Python 3.10+] [Tradera API v4] [Blocket]


💬 What you can ask Claude

Once connected, just talk to it:

🪑 "Find String shelves (String hylla) near Växjö under 1000 SEK."

🛠️ "Search Blocket and Tradera for Festool or Makita tools I could flip for profit."

🔊 "What Bang & Olufsen speakers are on Tradera between 500 and 3000 SEK?"

🚲 "List Blocket categories, then look for quality bikes (Kronan, Crescent) in Skåne."

📈 "Do this week's sourcing sweep for Scandinavian design in Kronoberg and neighbouring counties, ranked by estimated profit."

Claude picks the right tools, applies your filters, and hands back titles, prices, locations, links, and images — from both marketplaces in one go.

✨ Features

🔎 Four marketplacesBlocket + Tradera + Klaravik + Vinted, searched together or separately, normalized into one shape
🎯 Rich filtersPrice min/max, category, county (Tradera) · region + category (Blocket)
📍 Location-awareEvery Blocket result carries coordinates + distance for precise radius filtering
🌍 General by defaultSearches all of Sweden; scope it to your area via config or per-search
🧭 Discovery toolsList categories, regions, and counties so the agent filters intelligently
🧩 Easy installOne-command Claude Code plugin, uvx, or from source — each user brings their own keys
✅ Tested liveEvery source verified end-to-end against the real APIs

📊 Source status

SourceMethodStability
TraderaOfficial REST API (v4)🟢 Solid — tested live; requires free registration
BlocketCommunity package (blocket-api)🟡 Semi-stable, unofficial — tested live
KlaravikInternal JSON endpoint🟡 Unofficial — tested live; auction current-bid prices
VintedInternal API (bot-protected)🟠 Unofficial, most fragile — works best from a residential IP
Facebook MarketplaceDisabled by default🔴 Risky, local-only — see facebook_client.py

🔑 Get Tradera credentials (required for all install methods)

  1. Register (free) at https://api.tradera.com/register.
  2. Accept the Terms of Use + Logo Terms of Use.
  3. Create an application and copy the numeric App ID and the App Key (GUID secret). You'll supply these as TRADERA_APP_ID / TRADERA_APP_KEY.

Blocket needs no credentials. Facebook Marketplace is off by default.

📦 Installation

Every user runs their own copy with their own Tradera keys — pick whichever method fits your client. uvx-based methods need uv installed (curl -LsSf https://astral.sh/uv/install.sh | sh, or winget install astral-sh.uv on Windows) — no cloning or virtualenv needed.

Option 1 — Claude Code plugin (easiest)

bash
claude plugin marketplace add tudorgrigoriu90/sverige-begagnad-mcpclaude plugin install sverige-begagnad@sverige-begagnad-marketplace

Then export your keys (the plugin passes them through to the server):

bash
export TRADERA_APP_ID=...      # Windows PowerShell: $env:TRADERA_APP_ID="..."export TRADERA_APP_KEY=...export BLOCKET_LOCATIONS=      # optional; empty = all of Sweden

Restart Claude Code — you'll have search_blocket, search_tradera, search_all, and more. The plugin runs the server via uvx straight from GitHub.

Option 2 — uvx (Claude Desktop or any MCP client)

Add to your client's MCP config (Claude Desktop: Settings → Developer → Edit Config):

json
{  "mcpServers": {    "sverige-begagnad": {      "command": "uvx",      "args": ["sverige-begagnad-mcp"],      "env": {        "TRADERA_APP_ID": "...",        "TRADERA_APP_KEY": "...",        "BLOCKET_LOCATIONS": ""      }    }  }}

uvx fetches the published package from PyPI on first run and caches it. Restart the client.

Option 3 — From source (development)

bash
git clone https://github.com/tudorgrigoriu90/sverige-begagnad-mcpcd sverige-begagnad-mcppython -m venv .venvsource .venv/bin/activate   # Windows: .venv\Scripts\activatepip install -e .cp .env.example .env        # then fill in your keys

Point your client at the venv's sverige-begagnad-mcp command (or python -m sverige_begagnad_mcp.server) with cwd set to the repo.

✅ Verify it works (optional)

From a source checkout with keys set (in .env or the environment):

bash
# Tradera — official REST API v4 (https://api.tradera.com/v4, header auth)python -m sverige_begagnad_mcp.tradera_client
# Blocket — unofficial community APIpython -c "import asyncio; from sverige_begagnad_mcp.blocket_client import search_blocket; print(asyncio.run(search_blocket('String hylla')))"

Both are tested live. If Tradera's shape ever drifts, the OpenAPI spec is at https://api.tradera.com/openapi.json.


🧰 Tools

ToolPurpose
search_blocket(query, category?, locations?, max_pages?)Search Blocket
list_blocket_categories()Valid category names
list_blocket_locations()Valid region (län) names
search_tradera(query, category_id?, price_min?, price_max?, county_id?)Search Tradera
list_tradera_categories()Category tree → category_id
list_tradera_counties()County ids for the optional county_id filter
search_klaravik(query)Search Klaravik auctions (current-bid prices)
search_vinted(query, price_min?, price_max?)Search Vinted fashion listings
search_facebook_marketplace(...)Disabled by default (local-only)
search_all(query, blocket_category?, blocket_locations?, tradera_category_id?, price_min?, price_max?)Blocket + Tradera + Klaravik + Vinted in one call
health_check()Ping every source and report which are still fetching data

📍 Geographic scope

Searches default to all of Sweden. Three ways to set the area, in order of precedence:

  1. Per-search — pass locations to search_blocket (or blocket_locations to search_all), e.g. ["KRONOBERG", "KALMAR"]. Use list_blocket_locations() for valid names.
  2. A personal default — set BLOCKET_LOCATIONS in .env to a comma-separated list of region names.
  3. Nothing set — all of Sweden.

Blocket's filter is regional (län), not a precise km radius. For a tight "within X min drive" filter, let Claude do the final check per listing — each result includes the ad's text location plus coordinates (lat/lon) and Blocket's own distance. Tradera is national with shipping, so it has no radius concept (there's an optional county_id filter, rarely needed).

🗺️ Example: my own Växjö / Älmhult setup

Personal scope lives only in .env (gitignored — not a shipped default):

dotenv
BLOCKET_LOCATIONS=KRONOBERG,KALMAR,JONKOPING,HALLAND,SKANE
🤖 Power user: a full weekly "sourcing agent" prompt

Paste this as your instructions to turn the tools into a profit-ranked weekly sweep. It runs many targeted Swedish searches, filters by radius/quality, estimates profit, and returns a ranked shortlist. Tune the brands, region, and thresholds to taste.

text
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, minimallyrestore, and resell at a profit.
METHOD: Search with SWEDISH terms. Run MANY targeted searches — by BRAND and byCATEGORY — 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, soinclude shippable Tradera items too.
QUALITY: recognized brand or top craftsmanship (String, Artek, Fritz Hansen, LouisPoulsen, Iittala, Orrefors, Bang & Olufsen, Braun, Marantz, Bahco, Hilti, Festool,Makita, Kronan, Crescent…); "bra skick"/"nyskick" or minor cosmetic wear; askingprice 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 NOTinvent sold prices). Net = resale − (purchase + restoration + pickup/courier), withstated assumptions (~80 SEK pickup fuel, ~70 SEK courier, 0–150 SEK materials).Include only items with estimated net profit ≥ 300 SEK. Note that Tradera auctionprices 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, netprofit with assumptions, 2–3 restoration steps, and a risk note. End with a 2–3sentence read on the week's trends. Don't pad with weak candidates.

🚫 Facebook Marketplace — why it's disabled

There is no public API for Facebook Marketplace. The only known methods (session cookies or headless-browser scraping) explicitly violate Facebook's Terms of Service. The src/sverige_begagnad_mcp/facebook_client.py module is intentionally left as a stub, with an explanation of how you could implement it yourself, at your own risk.

🛠️ Maintenance & publishing

Maintainer notes
  • If a source breaks: Blocket → check https://pypi.org/project/blocket-api/ for a newer version; Tradera → the OpenAPI spec at https://api.tradera.com/openapi.json.
  • PyPI (enables the short uvx sverige-begagnad-mcp): python -m build then twine upload dist/*. Bump version in pyproject.toml and src/sverige_begagnad_mcp/__init__.py first.
  • Plugin marketplace: the .claude-plugin/marketplace.json + plugins/ dirs make this repo itself the marketplace — no extra hosting.
  • MCP Registry: server.json is ready; publish with the mcp-publisher CLI after the PyPI release (see the Registry publishing guide).

📄 License

MIT — each user runs their own copy with their own credentials. Note that Blocket has no official API; this uses an unofficial community package, so treat the Blocket half accordingly.

来源:README.md,提交 cc182c3

工具

0
SourceWeft 尚未在沙箱中启动过该软件包,因此其工具未知。

版本历史

1
  1. v0.3.1最新Sep 16, 2026

评分

已满足适用检查项的 50%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分