Skip to main content
Glama
MissionSquad

@missionsquad/mcp-rss

Official

get_feed_headlines

Extract and format RSS feed headlines, including titles, summaries, and URLs, in markdown, text, HTML, or JSON. Simplify content retrieval for analysis or integration.

Instructions

Gets a list of headlines from a feed, including title, summary, and URL.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
formatNoOutput format for the headlinesjson
urlYesThe RSS feed URL to get headlines from

Implementation Reference

  • The execute handler function for the 'get_feed_headlines' tool. It fetches the RSS feed (using cache or rssReader), extracts and formats headlines based on the specified format (markdown, html, text, or json), and returns a structured JSON output with feed metadata and list of headlines.
    execute: async (args, context) => {
      logger.info(`Getting headlines from: ${args.url}`);
    
      // Fetch feed
      let feed: FeedResult | null = feedCache.get(args.url);
      if (!feed) {
        feed = await rssReader.fetchFeed(args.url);
        feedCache.set(args.url, feed);
      }
    
      // Format headlines
      const formatHeadline = (item: FeedItem) => {
        const headline = {
          title: item.title,
          summary: item.description || item.content,
          url: item.url,
          published: item.published,
          author: item.author,
        };
    
        switch (args.format) {
          case "markdown":
            return `### [${headline.title}](${headline.url})\n${headline.summary}`;
          case "html":
            return `<h3><a href="${headline.url}">${headline.title}</a></h3><p>${headline.summary}</p>`;
          case "text":
            return `${headline.title}\n${headline.summary}\n${headline.url}`;
          case "json":
          default:
            return headline;
        }
      };
    
      const headlines = feed.items.map(formatHeadline);
    
      const output = {
        feedTitle: feed.info.title,
        feedUrl: args.url,
        itemCount: feed.items.length,
        format: args.format,
        headlines,
      };
    
      logger.info(`Got ${headlines.length} headlines from ${args.url}`);
      return JSON.stringify(output, null, 2);
    },
  • Zod schema defining the input parameters for the 'get_feed_headlines' tool: required 'url' for the RSS feed and optional 'format' (default 'json') for output formatting.
    const GetFeedHeadlinesSchema = z.object({
      url: z.string().describe("The RSS feed URL to get headlines from"),
      format: z
        .enum(["markdown", "text", "html", "json"])
        .optional()
        .default("json")
        .describe("Output format for the headlines"),
    });
  • src/index.ts:452-503 (registration)
    Registration of the 'get_feed_headlines' tool with the FastMCP server, specifying name, description, input schema, and inline execute handler.
    server.addTool({
      name: "get_feed_headlines",
      description:
        "Gets a list of headlines from a feed, including title, summary, and URL.",
      parameters: GetFeedHeadlinesSchema,
      execute: async (args, context) => {
        logger.info(`Getting headlines from: ${args.url}`);
    
        // Fetch feed
        let feed: FeedResult | null = feedCache.get(args.url);
        if (!feed) {
          feed = await rssReader.fetchFeed(args.url);
          feedCache.set(args.url, feed);
        }
    
        // Format headlines
        const formatHeadline = (item: FeedItem) => {
          const headline = {
            title: item.title,
            summary: item.description || item.content,
            url: item.url,
            published: item.published,
            author: item.author,
          };
    
          switch (args.format) {
            case "markdown":
              return `### [${headline.title}](${headline.url})\n${headline.summary}`;
            case "html":
              return `<h3><a href="${headline.url}">${headline.title}</a></h3><p>${headline.summary}</p>`;
            case "text":
              return `${headline.title}\n${headline.summary}\n${headline.url}`;
            case "json":
            default:
              return headline;
          }
        };
    
        const headlines = feed.items.map(formatHeadline);
    
        const output = {
          feedTitle: feed.info.title,
          feedUrl: args.url,
          itemCount: feed.items.length,
          format: args.format,
          headlines,
        };
    
        logger.info(`Got ${headlines.length} headlines from ${args.url}`);
        return JSON.stringify(output, null, 2);
      },
    });
Install Server

Other Tools

Related Tools

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/MissionSquad/mcp-rss'

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