Vinted Mcp

io.github.andrijdavidPublished by GitHub account andrijdavidv0.1.2Updated Oct 24, 2026

MCP Server for Vinted that allows to search items, compare prices, and analyze sellers.

Overview

AI-generated overview

A local MCP server for Vinted that lets an assistant search listings, inspect items and sellers, compare prices across countries, and like items.

What you can do
Search listings by country, price range, brand, category, condition, sort and limit, and fetch item details by ID or URL, reading the public item page since the item API was retired. Look up seller profiles and recent reviews, with recent wardrobe items only when signed in. Compare average and median prices for a query across countries, and list trending items ranked by favourites then views. Like or unlike items on your account. Browse country and category resources and use prompt templates for deal-finding, seller screening and resale estimates.
When to use it
Useful when you want an assistant to research second-hand fashion listings on Vinted: finding items under a budget, vetting a seller before buying, comparing prices between country marketplaces, or estimating resale value.
Requirements
Runs locally over stdio via npx or a global npm install (Node.js). Search and price tools work anonymously; liking items and a seller's own listings need a signed-in session, obtained by running the login command per country with Playwright and Chromium installed, or by supplying VINTED_AUTH_COOKIES and VINTED_AUTH_CSRF_TOKEN with VINTED_AUTH_MODE=env. Optional settings cover proxy, concurrency, retries and request delay. Network access to Vinted is required.
Before you install
The env auth mode needs VINTED_AUTH_COOKIES, VINTED_AUTH_CSRF_TOKEN and optionally VINTED_AUTH_ACCESS_TOKEN, which are live session secrets; keep them out of version control and rotate them if exposed. The saved browser profile holds a logged-in session. The like_item tool writes to your Vinted account. Requests go to Vinted's sites, and the project is not affiliated with Vinted.

Installation

In SourceWeft

  1. Open Vinted Mcp in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

Vinted MCP Server

[npm version] [License: AGPL v3+]

An MCP server for Vinted search and analysis that provides tools to search listings, fetch item details, inspect seller profiles, compare prices across countries, and surface trending items.

It also exposes resources for supported countries and category data.

Disclaimer: This project is not affiliated, associated, authorized, endorsed by, or in any way officially connected with Vinted, or any of its subsidiaries or its affiliates. The official Vinted website can be found at vinted.com.

Client support

This server works with MCP clients that support local stdio servers.

Popular clients and setup docs:

Quick start

Option 1: npx

Add this to your MCP client config:

json
{  "mcpServers": {    "vinted": {      "command": "npx",      "args": ["-y", "@andrijdavid/vinted-mcp"]    }  }}

Option 1b: bunx (canary)

bash
bunx @andrijdavid/vinted-mcp@next

This starts the server in stdio mode and waits for an MCP client.

Option 2: global install

bash
npm install -g @andrijdavid/vinted-mcp

Then configure:

json
{  "mcpServers": {    "vinted": {      "command": "vinted-mcp"    }  }}

Run in network mode (Streamable HTTP over TCP)

If you need a network endpoint instead of stdio, run:

bash
VINTED_MCP_TRANSPORT=http VINTED_MCP_HOST=127.0.0.1 VINTED_MCP_PORT=3001 bunx @andrijdavid/vinted-mcp@next

Optional:

  • VINTED_MCP_PATH (default /mcp)
  • VINTED_MCP_ENABLE_LEGACY_SSE (default true)
  • VINTED_MCP_LEGACY_SSE_PATH (default /sse)
  • VINTED_MCP_LEGACY_MESSAGES_PATH (default /messages)

Default endpoints:

  • Streamable HTTP (recommended): http://127.0.0.1:3001/mcp
  • Legacy SSE (older clients): http://127.0.0.1:3001/sse

CLI usage and env variables

Pass env vars inline (macOS/Linux)

bash
VINTED_AUTH_MODE=env \VINTED_AUTH_COOKIES='session_cookie=your_value; other_cookie=your_value' \VINTED_AUTH_CSRF_TOKEN='your_csrf_token' \bunx @andrijdavid/vinted-mcp@next

Pass env vars inline (PowerShell)

powershell
$env:VINTED_AUTH_MODE = "env"$env:VINTED_AUTH_COOKIES = "session_cookie=your_value; other_cookie=your_value"$env:VINTED_AUTH_CSRF_TOKEN = "your_csrf_token"bunx @andrijdavid/vinted-mcp@next

Pass env vars inline (Windows Command Prompt)

bat
set VINTED_AUTH_MODE=envset VINTED_AUTH_COOKIES=session_cookie=your_value; other_cookie=your_valueset VINTED_AUTH_CSRF_TOKEN=your_csrf_tokenbunx @andrijdavid/vinted-mcp@next

Use a local .env file

The server auto-loads .env from the current working directory.

bash
cp .env.example .envbunx @andrijdavid/vinted-mcp@next

Run network mode from CLI with env

bash
VINTED_MCP_TRANSPORT=http \VINTED_MCP_HOST=127.0.0.1 \VINTED_MCP_PORT=3001 \bunx @andrijdavid/vinted-mcp@next

Windows Command Prompt:

bat
set VINTED_MCP_TRANSPORT=httpset VINTED_MCP_HOST=127.0.0.1set VINTED_MCP_PORT=3001bunx @andrijdavid/vinted-mcp@next

Authentication and environment

The server auto-loads .env from the working directory if present.

Start from the example file:

bash
cp .env.example .env

Main variables:

  • VINTED_AUTH_MODE: http, playwright, or env
  • VINTED_AUTH_COOKIES: cookie header string or JSON object string
  • VINTED_AUTH_CSRF_TOKEN: CSRF token
  • VINTED_AUTH_ACCESS_TOKEN: optional bearer token
  • VINTED_AUTH_REFRESH_TOKEN: optional refresh token, used to mint a new access token
  • VINTED_PROFILE_DIR: optional root for browser profiles created by login, default ~/.vinted-mcp
  • VINTED_PROXY_URL: optional proxy URL
  • VINTED_MAX_CONCURRENCY: optional tuning
  • VINTED_REQUEST_DELAY_MS: optional tuning
  • VINTED_MAX_RETRIES: optional tuning

Example client config with env auth:

json
{  "mcpServers": {    "vinted": {      "command": "npx",      "args": ["-y", "@andrijdavid/vinted-mcp"],      "env": {        "VINTED_AUTH_MODE": "env",        "VINTED_AUTH_COOKIES": "session_cookie=your_value; other_cookie=your_value",        "VINTED_AUTH_CSRF_TOKEN": "your_csrf_token"      }    }  }}

Signing in

Search and price tools work anonymously. Anything tied to your account (like_item), plus a seller's own listings in get_seller, needs a logged-in session. Run this once per country:

bash
npx @andrijdavid/vinted-mcp login --country fr

A browser window opens on Vinted. Sign in the way you normally do (password, captcha, 2FA, Google login all work). The window closes by itself once you are signed in, and the browser profile is saved to ~/.vinted-mcp/profile-<country>. The server reopens that profile headlessly when it needs cookies, so the session refreshes itself and there is nothing to copy or paste.

Requirements: Playwright with Chromium (npm i playwright && npx playwright install chromium). Set VINTED_PROFILE_DIR to move the profile root somewhere other than ~/.vinted-mcp.

Manual cookies (headless servers and CI)

Where no browser can be opened, use VINTED_AUTH_MODE=env and supply the credentials yourself:

  1. Sign in to Vinted in your browser.
  2. Open Developer Tools.
  3. Open Network and refresh.
  4. Open any https://www.vinted.<country>/api/... request.
  5. Copy from Request Headers:
    • cookie -> VINTED_AUTH_COOKIES
    • x-csrf-token -> VINTED_AUTH_CSRF_TOKEN
  6. Optional: copy authorization: Bearer ... token into VINTED_AUTH_ACCESS_TOKEN, and the refresh_token_web cookie value into VINTED_AUTH_REFRESH_TOKEN.

Security notes:

  • treat these values as secrets
  • never commit .env
  • rotate tokens/cookies if exposed
  • the saved browser profile holds a live session; it is stored with owner-only permissions

Tools

search_items

Search listings with filters like country, price range, brand IDs, category, condition, sort, and limit.

get_item

Get item details by itemId or url. Vinted retired the item API, so this reads the public item page instead: it is slower than search, and view counts and listing dates are no longer available.

get_seller

Get seller profile data, recent reviews and optional recent items by sellerId or url. The rating is on a 0-5 scale. Recent items come from the seller's wardrobe, which Vinted returns empty to anonymous callers, so that part needs a logged-in session.

compare_prices

Compare average and median prices for a query across countries.

get_trending

Return recently listed items ranked by favourites, then views. The catalogue API no longer returns listing timestamps or view counts, so the ranking is coarser than it used to be.

like_item

Add an item to your favourites by itemId or url, or remove it with unlike: true. Needs a logged-in session, see Signing in. Already-liked items are left alone rather than toggled off.

Resources

  • vinted://countries
  • vinted://categories

Resource templates

  • vinted://item/{country}/{itemId}
  • vinted://seller/{country}/{sellerId}
  • vinted://search/{country}/{query}

These templates let clients create direct resource URIs quickly.

Prompt templates

  • find_best_deal
  • screen_seller
  • search_item_with_filters
  • trending_report
  • buy_or_skip_decision
  • resale_arbitrage_estimator

These predefined prompts help clients bootstrap common Vinted workflows.

Supported countries: fr, de, uk, it, es, nl, pl, pt, be, at, lt, cz, sk, hu, ro, hr, fi, dk, se.

Local development

bash
npm installnpm run buildnpm run bundlenpm start

Testing

Run protocol-level tests:

bash
npm test

Run live integration tests:

bash
RUN_LIVE_MCP_TESTS=1 npm test

License

Licensed under AGPL-3.0-or-later.

See LICENSE.md.

Source: README.md at commit 992d476

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v0.1.2LatestSep 16, 2026

Score

40% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

    Declare a license in the repository or the registry entry.