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 分