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
El troll de las ofertas que vive bajo el puente entre tu nevera y tu cartera.
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
| Herramienta | Qué hace |
|---|---|
search_deals | Busca ofertas actuales en tiendas por palabra clave (DK/NO/SE/FI) |
get_store_offers | Lista las ofertas de esta semana de una tienda específica |
deals_this_week | Muestra las mejores ofertas de tus tiendas preferidas, con artículos que expiran y mayores ahorros |
list_stores | Lista las cadenas de supermercados disponibles con IDs de distribuidor |
Hogar y despensa
| Herramienta | Qué hace |
|---|---|
get_household | Ver la configuración actual del hogar |
update_household | Establecer país (DK/NO/SE/FI), miembros del hogar, restricciones dietéticas, tiendas preferidas, porciones |
get_pantry | Ver el contenido de la despensa |
update_pantry | Añadir o eliminar artículos de despensa (excluidos de las listas de compras) |
Recetas
| Herramienta | Qué hace |
|---|---|
get_recipes | Listar todas las recetas guardadas |
add_recipe | Guardar una nueva receta con ingredientes, términos de búsqueda (en tu idioma), complejidad, cocina y tipo de proteína |
remove_recipe | Eliminar una receta por nombre |
Planificación
| Herramienta | Qué hace |
|---|---|
score_recipes | Puntúa todas las recetas contra las ofertas actuales, clasificadas por cobertura de ofertas |
plan_and_shop | Puntúa, planifica una semana y genera una lista de compras en un solo paso |
generate_shopping_list | Crea una lista de compras a partir de recetas específicas, con ofertas emparejadas por ingrediente |
Seguimiento
| Herramienta | Qué hace |
|---|---|
log_meal | Registra lo que cocinaste y cuándo |
get_meal_history | Ver comidas pasadas |
log_spend | Registra gastos de comestibles |
get_spend_log | Ver 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:
| Server | Descripción | Estrellas |
|---|---|---|
| gleif-mcp-server | Accede a la base de datos LEI de GLEIF. Consulta identidades de empresas, verifica entidades legales. | |
| mediawiki-mcp-server | Conecta IA a cualquier wiki de MediaWiki. Busca, lee y edita contenido de wikis. | |
| miro-mcp-server | Controla pizarras de Miro con IA. Pizarras, diagramas, mapas mentales y más. | |
| nordic-registry-mcp-server | Accede a los registros mercantiles nórdicos. Consulta empresas en Noruega, Dinamarca y Suecia. | |
| productplan-mcp-server | Habla con tus hojas de ruta de ProductPlan. Consulta OKR, ideas y lanzamientos. | |
| mcp-servercard-go | Biblioteca Go para Server Cards SEP-2127. Descubrimiento de pre-conexión para servidores MCP. |