TilbudsTrolden MCP

Caça a ofertas de supermercados nórdicos (Dinamarca, Noruega, Suécia, Finlândia). Planejamento de refeições, biblioteca de receitas, listas de compras e configuração doméstica via etilbudsavis.dk.

Documentação

TilbudsTrolden

CI CodeScene Average Code Health TypeScript License: MIT MCP

O troll das ofertas que mora sob a ponte entre a sua geladeira e a sua carteira.

TilbudsTrolden with Nordic flags    TilbudsTrolden cooking up deals

Um servidor MCP para compras de supermercado nórdicas. Ele encontra as melhores ofertas em supermercados na Dinamarca, Noruega, Suécia e Finlândia, planeja seus jantares semanais com base no que está barato e cria listas de compras agrupadas por loja. Você conversa com seu assistente de IA sobre o jantar; o troll faz o trabalho pesado.

Funciona com qualquer cliente compatível com MCP: Claude Desktop, Claude Code, VS Code, Cursor, Windsurf, ChatGPT e outros.

Recursos

Busca de ofertas

Pesquise ofertas atuais em redes de supermercados na Dinamarca, Noruega, Suécia e Finlândia. Compare preços unitários (kr/kg para coroas escandinavas, €/kg para euros finlandeses) lado a lado. Veja o que está em oferta em uma loja específica ou obtenha uma visão combinada de todas as suas lojas preferidas de uma vez.

Biblioteca de receitas

Inclui 32 receitas iniciais (para lares dinamarqueses) abrangendo culinárias dinamarquesa, italiana, asiática, mexicana e sueca. As ofertas são combinadas com ingredientes automaticamente. Adicione suas próprias receitas no seu idioma local, remova as que não gostar ou ajuste as padrão. Lares noruegueses, suecos e finlandeses começam do zero para adicionar receitas com termos de busca locais.

Planejamento de refeições

Planeje os jantares da sua semana. O planejador verifica as ofertas atuais, escolhe a combinação mais barata de receitas e garante que você não coma frango quatro noites seguidas. Você define as regras: sem porco, cozimento lento apenas nos fins de semana, pelo menos 3 pratos asiáticos esta semana. Ele cuida do resto.

Listas de compras

Obtenha uma lista de compras a partir de qualquer conjunto de receitas. Ingredientes compartilhados são somados entre receitas (8 cenouras, não "2 para esta + 3 para aquela + 3 para a outra"). Itens da despensa são excluídos. As ofertas atuais são combinadas por ingrediente e agrupadas por loja.

Configuração do lar

Informe ao assistente em qual país você está (DK, NO, SE ou FI), para quantas pessoas você cozinha, quais lojas prefere e quaisquer restrições alimentares. Todo o resto segue a partir disso: ofertas das suas lojas têm prioridade, o porco desaparece se você disse sem porco, e as listas de compras se ajustam ao seu lar. O país padrão é a Dinamarca se não for definido.

Rastreamento de despensa

Diga ao assistente o que você já tem em casa. Esses itens são ignorados nas listas de compras, para que você não volte para casa com uma terceira garrafa de molho de soja.

Registro de refeições e gastos

Registre o que você cozinhou e quanto gastou. O planejador mantém o controle para que você não acabe comendo lasanha toda terça-feira.

Lojas suportadas

Dinamarca: Netto, Meny, Lidl, REMA 1000, Foetex, Bilka, Spar, Kvickly, 365discount

Noruega: REMA 1000, KIWI, Meny, Coop Prix, Extra, Bunnpris, Obs, Spar, Joker

Suécia: ICA (Maxi/Kvantum/Supermarket/Nara), Willys, Hemkop, City Gross, Coop, Stora Coop, Tempo

Finlândia: S-market, K-Market, K-Supermarket, K-Citymarket, Prisma, Lidl, Tokmanni, Alepa, Sale, Halpahalli, Minimani, Saiturinpörssi

Todos os dados de ofertas são obtidos via API do etilbudsavis.dk (Tjek), que fornece dados de folhetos para os quatro países. A cobertura varia; a Dinamarca tem os dados mais profundos, seguida pela Finlândia, Suécia e Noruega.

Início rápido

Instalação

git clone https://github.com/olgasafonova/tilbudstrolden-mcp.git
cd tilbudstrolden-mcp
npm install
npm run build

Conecte-se ao seu cliente MCP

Escolha seu cliente abaixo. Todos usam transporte stdio; nenhuma chave de API ou autenticação é necessária.

Claude Desktop

Adicione a ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) ou %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "tilbudstrolden": {
      "command": "node",
      "args": ["/absolute/path/to/tilbudstrolden-mcp/dist/server.js"]
    }
  }
}

Reinicie o Claude Desktop após salvar.

Claude Code
claude mcp add tilbudstrolden node /absolute/path/to/tilbudstrolden-mcp/dist/server.js
VS Code (Copilot / Cline / Continue)

Adicione ao seu espaço de trabalho .vscode/mcp.json:

{
  "servers": {
    "tilbudstrolden": {
      "command": "node",
      "args": ["/absolute/path/to/tilbudstrolden-mcp/dist/server.js"]
    }
  }
}
Cursor

Adicione a ~/.cursor/mcp.json:

{
  "mcpServers": {
    "tilbudstrolden": {
      "command": "node",
      "args": ["/absolute/path/to/tilbudstrolden-mcp/dist/server.js"]
    }
  }
}
Windsurf

Adicione a ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "tilbudstrolden": {
      "command": "node",
      "args": ["/absolute/path/to/tilbudstrolden-mcp/dist/server.js"]
    }
  }
}
ChatGPT Desktop

Em Configurações > Servidores MCP, clique em "Adicionar servidor" e insira:

  • Nome: tilbudstrolden
  • Comando: node
  • Argumentos: /absolute/path/to/tilbudstrolden-mcp/dist/server.js
Qualquer cliente MCP (stdio genérico)

O TilbudsTrolden usa transporte stdio. Aponte seu cliente para:

command: node
args: ["/absolute/path/to/tilbudstrolden-mcp/dist/server.js"]

Variável de ambiente opcional:

TILBUDSTROLDEN_DATA=/custom/path/to/data.json

Ferramentas

Ofertas

FerramentaO que faz
search_dealsPesquisar ofertas atuais em lojas por palavra-chave (DK/NO/SE/FI)
get_store_offersListar as ofertas desta semana de uma loja específica
deals_this_weekMostrar as melhores ofertas das suas lojas preferidas, com itens que expiram e maiores economias
list_storesListar redes de supermercados disponíveis com IDs de revendedor

Lar e despensa

FerramentaO que faz
get_householdVer a configuração atual do lar
update_householdDefinir país (DK/NO/SE/FI), membros do lar, restrições alimentares, lojas preferidas, porções
get_pantryVer o conteúdo da despensa
update_pantryAdicionar ou remover itens da despensa (excluídos das listas de compras)

Receitas

FerramentaO que faz
get_recipesListar todas as receitas salvas
add_recipeSalvar uma nova receita com ingredientes, termos de busca (no seu idioma), complexidade, culinária e tipo de proteína
remove_recipeExcluir uma receita pelo nome

Planejamento

FerramentaO que faz
score_recipesPontuar todas as receitas em relação às ofertas atuais, classificadas por cobertura de ofertas
plan_and_shopPontuar, planejar uma semana e gerar uma lista de compras em uma única etapa
generate_shopping_listCriar uma lista de compras a partir de receitas específicas, com ofertas combinadas por ingrediente

Rastreamento

FerramentaO que faz
log_mealRegistrar o que você cozinhou e quando
get_meal_historyVer refeições passadas
log_spendRegistrar gastos com supermercado
get_spend_logVer histórico de gastos

Receitas iniciais

O TilbudsTrolden inclui 32 receitas que funcionam imediatamente. Elas são carregadas no primeiro uso e são totalmente editáveis; adicione as suas ou remova as que não precisar.

Dinamarquesas (13): Frikadeller, Brændende Kærlighed, Kylling i Karry, Laks i fad, Flæskesteg, Tomatsuppe, Hakkebøffer med bløde løg, Kartoffelsuppe, Fiskefilet med remoulade, Biksemad, Koteletter i fad, Bagt kylling med ovnkartofler, Pølsegryde

Italianas (6): Spaghetti Bolognese, Lasagne, Spaghetti Carbonara, Tomatrisotto, Salsiccia Pasta, Marry Me Chicken

Asiáticas (7): Wok med kylling, Nudelsuppe med kylling, Uncle Roger's Egg Fried Rice, Nasi Goreng, Chow Mein, Uncle Roger's Adobo, Maangchi's Bulgogi

Mexicanas (2): Chili con Carne, Tacos med kylling

Suecas (4): Kajsas Kycklingfile med senap och rosepeber, Grillet laks med tomatsmor, Sagas Krydderisauce, Fransk grillet kylling med dragonsauce

A complexidade varia de rápida (15-20 min) a média (30-45 min) e lenta (1+ hora). As proteínas incluem frango, carne bovina, porco, peixe, ovo e vegetariano.

Exemplos de conversas

Exemplos reais de como você falaria com seu assistente de IA com o TilbudsTrolden em execução.

Configure seu lar

Você: Somos 3 pessoas, sem porco, e fazemos compras no Netto, REMA 1000 e Meny.

O assistente salva sua configuração. A partir de agora, ofertas do Netto, REMA e Meny têm prioridade, e receitas com porco são excluídas dos planos de refeições.

Você: Mude para a Finlândia. Fazemos compras no Prisma, K-Supermarket e Lidl.

O país vira FI, as lojas são atualizadas e as ofertas agora vêm de redes finlandesas. Os preços aparecem em €/kg em vez de kr/kg.

Verificar ofertas

Você: O que está em promoção nas minhas lojas esta semana?

Você recebe um resumo por loja: ofertas que expiram e precisam de ação, maiores economias e destaques.

Você: Encontre o hakket oksekoed mais barato.

Found 6 deals for "hakket oksekød":
1. Hakket okse- eller grisekød - 99 DKK (76.15 kr/kg) @ Bilka
2. Hakket oksekød 8-12% - 36.66 DKK (91.65 kr/kg) @ Fleggaard
3. Velsmag hakket oksekød 7-10% - 45 DKK (112.50 kr/kg) @ Netto
...

Planeje uma semana completa

Você: Planeje os jantares da próxima semana. Sem porco, exceto terça-feira, mistura de asiático e outros.

Você recebe um plano de 7 dias sem repetições consecutivas de proteína ou culinária, além de uma lista de compras para a semana inteira.

7-day meal plan (3 people)

Mon: Tomatrisotto (Italian, vegetarian)
Tue: Chow Mein (Asian, pork)
Wed: Laks i fad (Danish, fish)
Thu: Maangchi's Bulgogi (Asian, beef)
Fri: Fiskefilet med remoulade (Danish, fish)
Sat: Lasagne (Italian, beef)
Sun: Nudelsuppe med kylling (Asian, chicken)

Shopping list (58 items)
Buy at Netto: hakket oksekød 45 DKK, kyllingebrystfilet 49 DKK, ...
Buy at REMA: oksemørbrad 129.95 DKK, remoulade 10 DKK, ...
Buy at regular price: mozzarella, parmesan, kokosmælk, ...

Adicione sua própria receita

Você: Salve uma receita de frango tikka masala: 500g de kyllingebryst, 200g de iogurte, pasta de tikka masala, hakkede tomater, piskefloede, arroz. Média, indiana, frango.

A receita é salva. Ela aparece nos planos de refeições e na correspondência de ofertas a partir de agora.

Lista de compras para refeições específicas

Você: Faça uma lista de compras para bolonhesa e tacos, 4 pessoas.

Ingredientes compartilhados (como cebola usada em ambos) são agregados. Itens da despensa são excluídos.

Rastrear despensa

Você: Temos arroz, molho de soja e óleo de gergelim em casa.

Esses itens são ignorados nas futuras listas de compras.

Registre o que você cozinhou

Você: Fizemos o bulgogi hoje à noite, gastamos 185 kr no REMA.

Sem bulgogi por um tempo.

Como funciona a correspondência de ofertas

As ofertas de supermercados nórdicos agrupam produtos de maneiras criativas ("Rejer, kold- eller varmroget laks"). O TilbudsTrolden distingue ingredientes crus de produtos processados usando terminologia alimentar específica para dinamarquês, norueguês, sueco e finlandês. Buscar por "laks" como ingrediente de cozinha não corresponderá a roget/rokt/rokt laks ou palaeg/palegg/palagg, e buscar por "jauheliha" na Finlândia não corresponderá a savustettu makkara. Suas lojas preferidas têm prioridade nos resultados.

O mecanismo de pontuação usa indicadores específicos de localidade para cada país: termos de carne processada (roget/rokt/rokt/savustettu), termos de carne crua (fersk/fersk/farsk/tuore), filtros de não-alimentos e padrões de exclusão alimentar. Todos os quatro idiomas têm cobertura completa para exclusões de porco, carne bovina, cordeiro, peixe, marisco, laticínios, glúten, feijão, nozes e ovos.

O planejador de refeições não repetirá a mesma proteína ou culinária mais de duas vezes por semana, e você pode restringir receitas de cozimento lento a dias específicos.

Armazenamento de dados

Todos os dados ficam em um único arquivo JSON: ~/.tilbudstrolden.json. Substitua o caminho com a variável de ambiente TILBUDSTROLDEN_DATA.

Tudo fica lá: configuração do lar, receitas, despensa, histórico de refeições e registro de gastos. Criado automaticamente no primeiro uso. Sem banco de dados, sem serviço em nuvem, sem necessidade de conta.

Desenvolvimento

npm install          # install dependencies
npm run dev          # watch mode with tsx
npm run build        # compile TypeScript
npm run lint         # run Biome linter
npm run typecheck    # strict TypeScript check
npm test             # run tests (Vitest)

Requisitos

  • Node.js 18 ou posterior
  • Nenhuma chave de API necessária. Os dados de ofertas são obtidos via API pública do etilbudsavis.dk (Tjek), que atende todos os quatro mercados nórdicos.

Créditos

Dados de ofertas obtidos via API do etilbudsavis.dk (Tjek).

Listas de ingredientes das receitas iniciais adaptadas de valdemarsro.dk. Receitas do Uncle Roger do YouTube do Nigel Ng (Egg Fried Rice, Adobo). Receita de bulgogi de Maangchi. Receitas de família suecas de jarfors.com por Mikael Jarfors.

Mais servidores MCP

Confira meus outros servidores MCP:

ServidorDescriçãoEstrelas
gleif-mcp-serverAcesse o banco de dados LEI da GLEIF. Consulte identidades de empresas, verifique entidades legais.GitHub stars
mediawiki-mcp-serverConecte IA a qualquer wiki MediaWiki. Pesquise, leia, edite conteúdo de wiki.GitHub stars
miro-mcp-serverControle quadros brancos Miro com IA. Quadros, diagramas, mapas mentais e muito mais.GitHub stars
nordic-registry-mcp-serverAcesse registros empresariais nórdicos. Consulte empresas na Noruega, Dinamarca, Suécia.GitHub stars
productplan-mcp-serverFale com seus roadmaps do ProductPlan. Consulte OKRs, ideias, lançamentos.GitHub stars
mcp-servercard-goBiblioteca Go para Server Cards SEP-2127. Descoberta pré-conexão para servidores MCP.GitHub stars

Licença

MIT