Skip to main content
Glama
olibuijr

Iceland News MCP Server

by olibuijr

list_feeds

Discover available Icelandic news feeds across multiple sources and languages. Returns structured metadata to help users access specific content streams.

Instructions

List all available news feeds from Icelandic news sources. Returns structured feed metadata.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
sourceNoNews source to list feeds for: ruv, mbl, heimildin, mannlif, landsbankinn, hi, or allall

Implementation Reference

  • The handler function for list_feeds tool. It iterates over specified sources (or all), builds a structured list of feeds with metadata, generates a markdown table for display, and returns both text content and structured data.
    async ({ source }) => { const sourcesToList = source === "all" ? sourceNames : [source as SourceName]; // Build structured response const feedList: Array<{ source: string; sourceName: string; baseUrl: string; feeds: Array<{ id: string; description: string; resourceUri: string; }>; }> = []; let markdownOutput = ""; for (const src of sourcesToList) { const sourceInfo = SOURCES[src]; const feeds = Object.entries(sourceInfo.feeds).map(([feedKey, feedInfo]) => ({ id: feedKey, description: feedInfo.description, resourceUri: `news://${src}/${feedKey}`, })); feedList.push({ source: src, sourceName: sourceInfo.name, baseUrl: sourceInfo.baseUrl, feeds, }); // Markdown format markdownOutput += `# ${sourceInfo.name}\n\n`; markdownOutput += `| Feed | Description | Resource URI |\n|------|-------------|---------------|\n`; for (const feed of feeds) { markdownOutput += `| \`${feed.id}\` | ${feed.description} | \`${feed.resourceUri}\` |\n`; } markdownOutput += "\n"; } const structuredResponse = { sources: feedList, totalFeeds: feedList.reduce((sum, s) => sum + s.feeds.length, 0), }; return { content: [ { type: "text" as const, text: markdownOutput, }, ], structuredContent: structuredResponse, }; } );
  • Output schema for list_feeds tool defining the structure of the response with sources and their feeds.
    const FeedListResponseSchema = z.object({ sources: z.array(z.object({ source: z.string(), sourceName: z.string(), baseUrl: z.string(), feeds: z.array(z.object({ id: z.string(), description: z.string(), resourceUri: z.string(), })), })), totalFeeds: z.number(), });
  • src/index.ts:680-751 (registration)
    Registration of the list_feeds tool using server.registerTool, including description, input/output schemas, and handler reference.
    server.registerTool( "list_feeds", { description: "List all available news feeds from Icelandic news sources. Returns structured feed metadata.", inputSchema: { source: z .enum([...sourceNames, "all"] as [string, ...string[]]) .default("all") .describe("News source to list feeds for: ruv, mbl, heimildin, mannlif, landsbankinn, hi, or all"), }, outputSchema: FeedListResponseSchema, }, async ({ source }) => { const sourcesToList = source === "all" ? sourceNames : [source as SourceName]; // Build structured response const feedList: Array<{ source: string; sourceName: string; baseUrl: string; feeds: Array<{ id: string; description: string; resourceUri: string; }>; }> = []; let markdownOutput = ""; for (const src of sourcesToList) { const sourceInfo = SOURCES[src]; const feeds = Object.entries(sourceInfo.feeds).map(([feedKey, feedInfo]) => ({ id: feedKey, description: feedInfo.description, resourceUri: `news://${src}/${feedKey}`, })); feedList.push({ source: src, sourceName: sourceInfo.name, baseUrl: sourceInfo.baseUrl, feeds, }); // Markdown format markdownOutput += `# ${sourceInfo.name}\n\n`; markdownOutput += `| Feed | Description | Resource URI |\n|------|-------------|---------------|\n`; for (const feed of feeds) { markdownOutput += `| \`${feed.id}\` | ${feed.description} | \`${feed.resourceUri}\` |\n`; } markdownOutput += "\n"; } const structuredResponse = { sources: feedList, totalFeeds: feedList.reduce((sum, s) => sum + s.feeds.length, 0), }; return { content: [ { type: "text" as const, text: markdownOutput, }, ], structuredContent: structuredResponse, }; } );
  • Input schema for list_feeds tool, defining the optional 'source' parameter.
    inputSchema: { source: z .enum([...sourceNames, "all"] as [string, ...string[]]) .default("all") .describe("News source to list feeds for: ruv, mbl, heimildin, mannlif, landsbankinn, hi, or all"), },
  • The SOURCES configuration object used by list_feeds to enumerate all available feeds across Icelandic news providers.
    const SOURCES: Record<string, SourceInfo> = { ruv: { name: "RÚV (Ríkisútvarpið)", baseUrl: "https://www.ruv.is", feeds: { frettir: { url: "https://www.ruv.is/rss/frettir", description: "All news" }, innlent: { url: "https://www.ruv.is/rss/innlent", description: "Domestic news" }, erlent: { url: "https://www.ruv.is/rss/erlent", description: "International news" }, ithrottir: { url: "https://www.ruv.is/rss/ithrottir", description: "Sports" }, "menning-og-daegurmal": { url: "https://www.ruv.is/rss/menning-og-daegurmal", description: "Culture & current affairs" }, audskilid: { url: "https://www.ruv.is/rss/audskilid", description: "Plain language Icelandic" }, english: { url: "https://www.ruv.is/rss/english", description: "English news" }, polski: { url: "https://www.ruv.is/rss/polski", description: "Polish news" }, }, }, mbl: { name: "Morgunblaðið", baseUrl: "https://www.mbl.is", feeds: { // Main news fp: { url: "https://www.mbl.is/feeds/fp/", description: "Front page news" }, innlent: { url: "https://www.mbl.is/feeds/innlent/", description: "Domestic news" }, erlent: { url: "https://www.mbl.is/feeds/erlent/", description: "International news" }, togt: { url: "https://www.mbl.is/feeds/togt/", description: "Tech & science" }, english: { url: "https://www.mbl.is/feeds/english/", description: "English news" }, helst: { url: "https://www.mbl.is/feeds/helst/", description: "Top stories" }, nyjast: { url: "https://www.mbl.is/feeds/nyjast/", description: "Latest news" }, sjonvarp: { url: "https://www.mbl.is/feeds/sjonvarp/", description: "TV news" }, // Culture menning: { url: "https://www.mbl.is/feeds/menning/", description: "Culture" }, // Business vidskipti: { url: "https://www.mbl.is/feeds/vidskipti/", description: "Business" }, // Marine/Fishing "200milur": { url: "https://www.mbl.is/feeds/200milur/", description: "Marine & fishing" }, // Sports sport: { url: "https://www.mbl.is/feeds/sport/", description: "Sports" }, fotbolti: { url: "https://www.mbl.is/feeds/fotbolti/", description: "Football" }, enski: { url: "https://www.mbl.is/feeds/enski/", description: "English Premier League" }, golf: { url: "https://www.mbl.is/feeds/golf/", description: "Golf" }, handbolti: { url: "https://www.mbl.is/feeds/handbolti/", description: "Handball" }, korfubolti: { url: "https://www.mbl.is/feeds/korfubolti/", description: "Basketball" }, pepsideild: { url: "https://www.mbl.is/feeds/pepsideild/", description: "Pepsi league (Icelandic football)" }, formula: { url: "https://www.mbl.is/feeds/formula/", description: "Formula 1" }, hestar: { url: "https://www.mbl.is/feeds/hestar/", description: "Horses" }, rafithrottir: { url: "https://www.mbl.is/feeds/rafithrottir/", description: "Esports" }, // People & lifestyle folk: { url: "https://www.mbl.is/feeds/folk/", description: "People" }, verold: { url: "https://www.mbl.is/feeds/verold/", description: "World/Celebrities" }, // Food & Travel matur: { url: "https://www.mbl.is/feeds/matur/", description: "Food" }, ferdalog: { url: "https://www.mbl.is/feeds/ferdalog/", description: "Travel" }, // Smartland (lifestyle) smartland: { url: "https://www.mbl.is/feeds/smartland/", description: "Smartland" }, stars: { url: "https://www.mbl.is/feeds/stars/", description: "Celebrities" }, tiska: { url: "https://www.mbl.is/feeds/tiska/", description: "Fashion" }, heimili: { url: "https://www.mbl.is/feeds/heimili/", description: "Home & design" }, utlit: { url: "https://www.mbl.is/feeds/utlit/", description: "Beauty" }, heilsa: { url: "https://www.mbl.is/feeds/heilsa/", description: "Health & nutrition" }, frami: { url: "https://www.mbl.is/feeds/frami/", description: "Success stories" }, samkvaemislifid: { url: "https://www.mbl.is/feeds/samkvaemislifid/", description: "Social life" }, fjolskyldan: { url: "https://www.mbl.is/feeds/fjolskyldan/", description: "Family" }, // Cars bill: { url: "https://www.mbl.is/feeds/bill/", description: "Cars" }, // K100 k100: { url: "https://www.mbl.is/feeds/k100/", description: "K100 radio" }, // Morgunblaðið newspaper "mogginn-idag": { url: "https://www.mbl.is/feeds/mogginn/idag/", description: "Today's paper" }, "mogginn-featured": { url: "https://www.mbl.is/feeds/mogginn/featured/", description: "Featured articles" }, "mogginn-leidarar": { url: "https://www.mbl.is/feeds/mogginn/leidarar/", description: "Editorials" }, "mogginn-sunnudagur": { url: "https://www.mbl.is/feeds/mogginn/sunnudagur/", description: "Sunday edition" }, "mogginn-netgreinar": { url: "https://www.mbl.is/feeds/mogginn/netgreinar/", description: "Selected articles" }, // Other fasteignir: { url: "https://www.mbl.is/feeds/fasteignir/", description: "Real estate" }, smaaugl: { url: "https://www.mbl.is/feeds/smaaugl/", description: "Classifieds" }, blog: { url: "https://www.mbl.is/feeds/blog/", description: "Blog discussions" }, }, }, heimildin: { name: "Heimildin", baseUrl: "https://heimildin.is", feeds: { frettir: { url: "https://heimildin.is/rss/", description: "All news" }, }, }, mannlif: { name: "Mannlíf", baseUrl: "https://mannlif.is", feeds: { frettir: { url: "https://mannlif.is/rss/", description: "All news" }, }, }, landsbankinn: { name: "Landsbankinn", baseUrl: "https://www.landsbankinn.is", feeds: { frettir: { url: "https://www.landsbankinn.is/api/rss", description: "News & announcements" }, }, }, hi: { name: "Háskóli Íslands (University of Iceland)", baseUrl: "https://hi.is", feeds: { // University-wide frettir: { url: "https://hi.is/frettir/18556/feed", description: "University news" }, vidburdir: { url: "https://hi.is/vidburdir/18556/feed", description: "University events" }, // School of Social Sciences "felagsvisindasvid-frettir": { url: "https://hi.is/frettir/18551/feed", description: "Social Sciences news" }, "felagsvisindasvid-vidburdir": { url: "https://hi.is/vidburdir/18551/feed", description: "Social Sciences events" }, // School of Health Sciences "heilbrigdisvisindasvid-frettir": { url: "https://hi.is/frettir/18552/feed", description: "Health Sciences news" }, "heilbrigdisvisindasvid-vidburdir": { url: "https://hi.is/vidburdir/18552/feed", description: "Health Sciences events" }, // School of Humanities "hugvisindasvid-frettir": { url: "https://hi.is/frettir/18553/feed", description: "Humanities news" }, "hugvisindasvid-vidburdir": { url: "https://hi.is/vidburdir/18553/feed", description: "Humanities events" }, // School of Education "menntavisindasvid-frettir": { url: "https://hi.is/frettir/18554/feed", description: "Education news" }, "menntavisindasvid-vidburdir": { url: "https://hi.is/vidburdir/18554/feed", description: "Education events" }, // School of Engineering and Natural Sciences "verkfraedi-natturuvisindasvid-frettir": { url: "https://hi.is/frettir/18555/feed", description: "Engineering & Natural Sciences news" }, "verkfraedi-natturuvisindasvid-vidburdir": { url: "https://hi.is/vidburdir/18555/feed", description: "Engineering & Natural Sciences events" }, }, }, // Additional Icelandic news sources visir: { name: "Vísir", baseUrl: "https://www.visir.is", feeds: { frettir: { url: "https://www.visir.is/rss/allt", description: "All news" }, innlent: { url: "https://www.visir.is/rss/innlent", description: "Domestic news" }, erlent: { url: "https://www.visir.is/rss/erlent", description: "International news" }, ithrottir: { url: "https://www.visir.is/rss/ithrottir", description: "Sports" }, lifid: { url: "https://www.visir.is/rss/lifid", description: "Lifestyle" }, spilavinir: { url: "https://www.visir.is/rss/spilavinir", description: "Gaming" }, }, }, dv: { name: "DV (Dagblaðið Vísir)", baseUrl: "https://www.dv.is", feeds: { frettir: { url: "https://www.dv.is/feed/", description: "All news" }, }, }, stundin: { name: "Stundin", baseUrl: "https://stundin.is", feeds: { frettir: { url: "https://stundin.is/rss/", description: "All news" }, }, }, frettabladid: { name: "Fréttablaðið", baseUrl: "https://www.frettabladid.is", feeds: { frettir: { url: "https://www.frettabladid.is/rss/", description: "All news" }, }, }, kjarninn: { name: "Kjarninn", baseUrl: "https://kjarninn.is", feeds: { frettir: { url: "https://kjarninn.is/rss/", description: "All news" }, }, }, icelandreview: { name: "Iceland Review", baseUrl: "https://www.icelandreview.com", feeds: { frettir: { url: "https://www.icelandreview.com/feed/", description: "English news about Iceland" }, }, }, grapevine: { name: "Reykjavík Grapevine", baseUrl: "https://grapevine.is", feeds: { frettir: { url: "https://grapevine.is/feed/", description: "English news and culture" }, }, }, vedur: { name: "Veðurstofa Íslands (Icelandic Met Office)", baseUrl: "https://www.vedur.is", feeds: { frettir: { url: "https://www.vedur.is/rss/frettir", description: "Weather news and alerts" }, }, }, };

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/olibuijr/iceland-news-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server