TilbudsTrolden MCP

Búsqueda de ofertas de comestibles nórdicos (Dinamarca, Noruega, Suecia, Finlandia). Planificación de comidas, biblioteca de recetas, listas de compras y configuración del hogar a través de etilbudsavis.dk.

Documentación

TilbudsTrolden

CI CodeScene Average Code Health TypeScript License: MIT MCP

El troll de las ofertas que vive bajo el puente entre tu nevera y tu cartera.

TilbudsTrolden with Nordic flags    TilbudsTrolden cooking up deals

Un servidor MCP para compras de comestibles nórdicas. Encuentra las mejores ofertas en supermercados de Dinamarca, Noruega, Suecia y Finlandia, planifica tus cenas semanales según lo que es barato y crea listas de compras agrupadas por tienda. Hablas con tu asistente de IA sobre la cena; el troll hace el trabajo pesado.

Funciona con cualquier cliente compatible con MCP: Claude Desktop, Claude Code, VS Code, Cursor, Windsurf, ChatGPT y otros.

Características

Búsqueda de ofertas

Busca ofertas actuales en cadenas de supermercados de Dinamarca, Noruega, Suecia y Finlandia. Compara precios unitarios (kr/kg para coronas escandinavas, €/kg para euros finlandeses) lado a lado. Consulta lo que está en oferta en una tienda específica u obtén una vista combinada de todas tus tiendas preferidas a la vez.

Biblioteca de recetas

Incluye 32 recetas iniciales (hogares daneses) que abarcan cocinas danesa, italiana, asiática, mexicana y sueca. Las ofertas se emparejan automáticamente con los ingredientes. Añade tus propias recetas en tu idioma local, elimina las que no te gusten o ajusta las predeterminadas. Los hogares noruegos, suecos y finlandeses comienzan con una pizarra limpia para añadir recetas con términos de búsqueda locales.

Planificación de comidas

Planifica las cenas de tu semana. El planificador revisa las ofertas actuales, elige la combinación más barata de recetas y se asegura de que no comas pollo cuatro noches seguidas. Tú estableces las reglas: sin cerdo, cocción lenta solo los fines de semana, al menos 3 platos asiáticos esta semana. Él se encarga del resto.

Listas de compras

Obtén una lista de compras a partir de cualquier conjunto de recetas. Los ingredientes compartidos se suman entre recetas (8 zanahorias, no "2 para esto + 3 para aquello + 3 para lo otro"). Los artículos de despensa se excluyen. Las ofertas actuales se emparejan por ingrediente y se agrupan por tienda.

Configuración del hogar

Dile al asistente en qué país estás (DK, NO, SE o FI), para cuántas personas cocinas, qué tiendas prefieres y cualquier restricción dietética. Todo lo demás se deduce de eso: las ofertas de tus tiendas tienen mayor prioridad, el cerdo desaparece si dijiste que no, y las listas de compras se adaptan a tu hogar. El país por defecto es Dinamarca si no se establece.

Seguimiento de despensa

Dile al asistente lo que ya tienes en casa. Esos artículos se omiten en las listas de compras, para que no vuelvas a casa con una tercera botella de salsa de soja.

Registro de comidas y gastos

Registra lo que cocinaste y lo que gastaste. El planificador lleva la cuenta para que no termines comiendo lasaña todos los martes.

Tiendas compatibles

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

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

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

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

Todos los datos de ofertas se obtienen a través de la API etilbudsavis.dk (Tjek), que sirve datos de folletos para los cuatro países. La cobertura varía; Dinamarca tiene los datos más profundos, seguida de Finlandia, Suecia y Noruega.

Inicio rápido

Instalación

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

Conéctate a tu cliente MCP

Elige tu cliente a continuación. Todos usan transporte stdio; no se requieren claves API ni autenticación.

Claude Desktop

Añade a ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) o %APPDATA%\Claude\claude_desktop_config.json (Windows):

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

Reinicia Claude Desktop después de guardar.

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

Añade a tu espacio de trabajo .vscode/mcp.json:

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

Añade a ~/.cursor/mcp.json:

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

Añade a ~/.codeium/windsurf/mcp_config.json:

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

En Configuración > Servidores MCP, haz clic en "Agregar servidor" e ingresa:

  • Name: tilbudstrolden
  • Command: node
  • Arguments: /absolute/path/to/tilbudstrolden-mcp/dist/server.js
Cualquier cliente MCP (stdio genérico)

TilbudsTrolden usa transporte stdio. Apunta tu cliente a:

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

Variable de entorno opcional:

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

Herramientas

Ofertas

HerramientaQué hace
search_dealsBusca ofertas actuales en tiendas por palabra clave (DK/NO/SE/FI)
get_store_offersLista las ofertas de esta semana de una tienda específica
deals_this_weekMuestra las mejores ofertas de tus tiendas preferidas, con artículos que expiran y mayores ahorros
list_storesLista las cadenas de supermercados disponibles con IDs de distribuidor

Hogar y despensa

HerramientaQué hace
get_householdVer la configuración actual del hogar
update_householdEstablecer país (DK/NO/SE/FI), miembros del hogar, restricciones dietéticas, tiendas preferidas, porciones
get_pantryVer el contenido de la despensa
update_pantryAñadir o eliminar artículos de despensa (excluidos de las listas de compras)

Recetas

HerramientaQué hace
get_recipesListar todas las recetas guardadas
add_recipeGuardar una nueva receta con ingredientes, términos de búsqueda (en tu idioma), complejidad, cocina y tipo de proteína
remove_recipeEliminar una receta por nombre

Planificación

HerramientaQué hace
score_recipesPuntúa todas las recetas contra las ofertas actuales, clasificadas por cobertura de ofertas
plan_and_shopPuntúa, planifica una semana y genera una lista de compras en un solo paso
generate_shopping_listCrea una lista de compras a partir de recetas específicas, con ofertas emparejadas por ingrediente

Seguimiento

HerramientaQué hace
log_mealRegistra lo que cocinaste y cuándo
get_meal_historyVer comidas pasadas
log_spendRegistra gastos de comestibles
get_spend_logVer historial de gastos

Recetas iniciales

TilbudsTrolden incluye 32 recetas que funcionan de inmediato. Se cargan en el primer uso y son totalmente editables; añade las tuyas o elimina las que no necesites.

Danesas (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

La complejidad varía desde rápida (15-20 min) pasando por media (30-45 min) hasta lenta (1+ hora). Las proteínas incluyen pollo, res, cerdo, pescado, huevo y vegetariano.

Ejemplos de conversaciones

Ejemplos reales de cómo hablarías con tu asistente de IA con TilbudsTrolden en funcionamiento.

Configura tu hogar

Tú: Somos 3 personas, sin cerdo, y compramos en Netto, REMA 1000 y Meny.

El asistente guarda tu configuración. A partir de ahora, las ofertas de Netto, REMA y Meny tienen prioridad, y las recetas con cerdo se excluyen de los planes de comidas.

Tú: Cámbiame a Finlandia. Compramos en Prisma, K-Supermarket y Lidl.

El país se convierte en FI, las tiendas se actualizan y las ofertas ahora provienen de cadenas finlandesas. Los precios se muestran en €/kg en lugar de kr/kg.

Consultar ofertas

Tú: ¿Qué está en oferta en mis tiendas esta semana?

Obtienes un resumen por tienda: ofertas que expiran y requieren acción, mayores ahorros y destacados.

Tú: Encuéntrame el hakket oksekoed más 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
...

Planifica una semana completa

Tú: Planifica las cenas de la próxima semana. Sin cerdo excepto el martes, mezcla de asiático y otros.

Obtienes un plan de 7 días sin repeticiones consecutivas de proteína o cocina, además de una lista de compras para toda la semana.

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, ...

Añade tu propia receta

Tú: Guarda una receta de pollo tikka masala: 500g de kyllingebryst, 200g de yogur, pasta tikka masala, hakkede tomater, piskefloede, arroz. Media, india, pollo.

La receta se guarda. Aparece en los planes de comidas y en el emparejamiento de ofertas a partir de ahora.

Lista de compras para comidas específicas

Tú: Haz una lista de compras para boloñesa y tacos, 4 personas.

Los ingredientes compartidos (como cebollas usadas en ambos) se agregan. Los artículos de despensa se excluyen.

Seguimiento de despensa

Tú: Tenemos arroz, salsa de soja y aceite de sésamo en casa.

Estos artículos se omiten en futuras listas de compras.

Registra lo que cocinaste

Tú: Hicimos el bulgogi esta noche, gastamos 185 kr en REMA.

Nada de bulgogi por un tiempo.

Cómo funciona el emparejamiento de ofertas

Las ofertas de comestibles nórdicas agrupan productos de formas creativas ("Rejer, kold- eller varmroget laks"). TilbudsTrolden distingue los ingredientes crudos de los productos procesados utilizando terminología alimentaria específica del idioma para danés, noruego, sueco y finlandés. Buscar "laks" como ingrediente de cocina no coincidirá con roget/rokt/rokt laks ni con palaeg/palegg/palagg, y buscar "jauheliha" en Finlandia no coincidirá con savustettu makkara. Tus tiendas preferidas tienen prioridad en los resultados.

El motor de puntuación utiliza indicadores específicos de cada país: términos de carne procesada (roget/rokt/rokt/savustettu), términos de carne cruda (fersk/fersk/farsk/tuore), filtros de no alimentos y patrones de exclusión dietética. Los cuatro idiomas tienen cobertura completa para exclusiones de cerdo, res, cordero, pescado, mariscos, lácteos, gluten, legumbres, nueces y huevo.

El planificador de comidas no repetirá la misma proteína o cocina más de dos veces en una semana, y puedes restringir las recetas de cocción lenta a días específicos.

Almacenamiento de datos

Todos los datos viven en un único archivo JSON: ~/.tilbudstrolden.json. Sobrescribe la ruta con la variable de entorno TILBUDSTROLDEN_DATA.

Todo vive allí: configuración del hogar, recetas, despensa, historial de comidas y registro de gastos. Se crea automáticamente en el primer uso. Sin base de datos, sin servicio en la nube, sin cuenta requerida.

Desarrollo

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 o posterior
  • No se necesitan claves API. Los datos de ofertas se obtienen a través de la API pública etilbudsavis.dk (Tjek), que sirve a los cuatro mercados nórdicos.

Créditos

Datos de ofertas obtenidos a través de la API etilbudsavis.dk (Tjek).

Listas de ingredientes de recetas iniciales adaptadas de valdemarsro.dk. Recetas de Uncle Roger de Nigel Ng's YouTube (Egg Fried Rice, Adobo). Receta de bulgogi de Maangchi. Recetas familiares suecas de jarfors.com por Mikael Jarfors.

Más servidores MCP

Echa un vistazo a mis otros servidores MCP:

ServerDescripciónEstrellas
gleif-mcp-serverAccede a la base de datos LEI de GLEIF. Consulta identidades de empresas, verifica entidades legales.GitHub stars
mediawiki-mcp-serverConecta IA a cualquier wiki de MediaWiki. Busca, lee y edita contenido de wikis.GitHub stars
miro-mcp-serverControla pizarras de Miro con IA. Pizarras, diagramas, mapas mentales y más.GitHub stars
nordic-registry-mcp-serverAccede a los registros mercantiles nórdicos. Consulta empresas en Noruega, Dinamarca y Suecia.GitHub stars
productplan-mcp-serverHabla con tus hojas de ruta de ProductPlan. Consulta OKR, ideas y lanzamientos.GitHub stars
mcp-servercard-goBiblioteca Go para Server Cards SEP-2127. Descubrimiento de pre-conexión para servidores MCP.GitHub stars

Licencia

MIT