Vinted

Um servidor MCP para busca e análise no Vinted que fornece ferramentas para pesquisar anúncios, obter detalhes de itens, inspecionar perfis de vendedores, comparar preços entre países e destacar itens em tendência.

Documentação

Servidor MCP Vinted

npm version License: AGPL v3+

Um servidor MCP para busca e análise no Vinted que fornece ferramentas para pesquisar anúncios, obter detalhes de itens, inspecionar perfis de vendedores, comparar preços entre países e exibir itens em alta.

Ele também expõe recursos para países suportados e dados de categorias.

Aviso: Este projeto não é afiliado, associado, autorizado, endossado pelo Vinted, nem oficialmente conectado a ele ou a qualquer uma de suas subsidiárias ou afiliadas. O site oficial do Vinted pode ser encontrado em vinted.com.

Suporte a clientes

Este servidor funciona com clientes MCP que suportam servidores locais stdio.

Clientes populares e documentação de configuração:

Início rápido

Opção 1: npx

Adicione isto à configuração do seu cliente MCP:

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

Opção 1b: bunx (canary)

bunx @andrijdavid/vinted-mcp@next

Isso inicia o servidor no modo stdio e aguarda um cliente MCP.

Opção 2: instalação global

npm install -g @andrijdavid/vinted-mcp

Em seguida, configure:

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

Executar no modo de rede (Streamable HTTP sobre TCP)

Se você precisar de um endpoint de rede em vez de stdio, execute:

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

Opcional:

  • VINTED_MCP_PATH (padrão /mcp)
  • VINTED_MCP_ENABLE_LEGACY_SSE (padrão true)
  • VINTED_MCP_LEGACY_SSE_PATH (padrão /sse)
  • VINTED_MCP_LEGACY_MESSAGES_PATH (padrão /messages)

Endpoints padrão:

  • Streamable HTTP (recomendado): http://127.0.0.1:3001/mcp
  • SSE legado (clientes mais antigos): http://127.0.0.1:3001/sse

Uso via CLI e variáveis de ambiente

Passar variáveis de ambiente inline (macOS/Linux)

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

Passar variáveis de ambiente inline (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

Passar variáveis de ambiente inline (Prompt de Comando do Windows)

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

Usar um arquivo .env local

O servidor carrega automaticamente o .env do diretório de trabalho atual.

cp .env.example .env
bunx @andrijdavid/vinted-mcp@next

Executar o modo de rede a partir da CLI com env

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

Prompt de Comando do Windows:

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

Autenticação e ambiente

O servidor carrega automaticamente o .env do diretório de trabalho, se presente.

Comece pelo arquivo de exemplo:

cp .env.example .env

Variáveis principais:

  • VINTED_AUTH_MODE: http, playwright ou env
  • VINTED_AUTH_COOKIES: string de cabeçalho de cookie ou string de objeto JSON
  • VINTED_AUTH_CSRF_TOKEN: token CSRF
  • VINTED_AUTH_ACCESS_TOKEN: token bearer opcional
  • VINTED_AUTH_REFRESH_TOKEN: token de atualização opcional, usado para gerar um novo token de acesso
  • VINTED_PROFILE_DIR: raiz opcional para perfis de navegador criados por login, padrão ~/.vinted-mcp
  • VINTED_PROXY_URL: URL de proxy opcional
  • VINTED_MAX_CONCURRENCY: ajuste opcional
  • VINTED_REQUEST_DELAY_MS: ajuste opcional
  • VINTED_MAX_RETRIES: ajuste opcional

Exemplo de configuração de cliente com autenticação via env:

{
  "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"
      }
    }
  }
}

Entrando

As ferramentas de busca e preço funcionam anonimamente. Qualquer coisa vinculada à sua conta (like_item) precisa de uma sessão logada. Execute isto uma vez por país:

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

Uma janela do navegador abre no Vinted. Entre da forma que você normalmente faz (senha, captcha, 2FA, login do Google todos funcionam). A janela fecha sozinha depois que você entra, e o perfil do navegador é salvo em ~/.vinted-mcp/profile-<country>. O servidor reabre esse perfil sem interface gráfica quando precisa de cookies, então a sessão se renova sozinha e não há nada para copiar ou colar.

Requisitos: Playwright com Chromium (npm i playwright && npx playwright install chromium). Defina VINTED_PROFILE_DIR para mover a raiz do perfil para outro lugar que não ~/.vinted-mcp.

Cookies manuais (servidores sem interface gráfica e CI)

Onde nenhum navegador pode ser aberto, use VINTED_AUTH_MODE=env e forneça as credenciais você mesmo:

  1. Entre no Vinted no seu navegador.
  2. Abra as Ferramentas do Desenvolvedor.
  3. Abra Network e atualize.
  4. Abra qualquer requisição https://www.vinted.<country>/api/....
  5. Copie de Request Headers:
    • cookie -> VINTED_AUTH_COOKIES
    • x-csrf-token -> VINTED_AUTH_CSRF_TOKEN
  6. Opcional: copie o token authorization: Bearer ... para VINTED_AUTH_ACCESS_TOKEN, e o valor do cookie refresh_token_web para VINTED_AUTH_REFRESH_TOKEN.

Notas de segurança:

  • trate esses valores como segredos
  • nunca faça commit de .env
  • rotacione tokens/cookies se forem expostos
  • o perfil de navegador salvo contém uma sessão ativa; ele é armazenado com permissões somente do proprietário

Ferramentas

search_items

Pesquise anúncios com filtros como país, faixa de preço, IDs de marca, categoria, condição, ordenação e limite.

get_item

Obtenha detalhes do item por itemId ou url.

get_seller

Obtenha dados do perfil do vendedor e itens recentes opcionais por sellerId ou url.

compare_prices

Compare preços médios e medianos para uma consulta entre países.

get_trending

Retorne itens em alta por pontuação de engajamento.

like_item

Adicione um item aos seus favoritos por itemId ou url, ou remova-o com unlike: true. Precisa de uma sessão logada, veja Entrando. Itens já curtidos são mantidos em vez de serem desativados.

Recursos

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

Modelos de recursos

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

Esses modelos permitem que os clientes criem URIs de recursos diretos rapidamente.

Modelos de prompt

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

Esses prompts predefinidos ajudam os clientes a iniciar fluxos de trabalho comuns do Vinted.

Países suportados: fr, de, uk, it, es, nl, pl, pt, be, at, lt, cz, sk, hu, ro, hr, fi, dk, se.

Desenvolvimento local

npm install
npm run build
npm run bundle
npm start

Testes

Execute testes de nível de protocolo:

npm test

Execute testes de integração ao vivo:

RUN_LIVE_MCP_TESTS=1 npm test

Licença

Licenciado sob AGPL-3.0-or-later.

Veja LICENSE.md.