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);
      },
    });

Tool Definition Quality

Score is being calculated. Check back soon.

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