mcp-morning-brief
Provides tools to subscribe to RSS/Atom feeds, fetch feeds, and get a deduped daily brief grouped by feed.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-morning-briefGet my morning brief for today."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
mcp-morning-brief
Subscribe to RSS/Atom feeds. Get a deduped daily brief. Feeds in, structured brief out, no UI. Free, MIT.
Existing news/RSS MCPs either dump raw items or require paid APIs. mcp-morning-brief is the opinionated "morning brief" shape — exactly what pairs with a daily Claude Desktop chat.
Install
{
"mcpServers": {
"brief": {
"command": "npx",
"args": ["-y", "@dpm-tools/mcp-morning-brief"]
}
}
}Requires Node.js 22.18+. Feed list stored at ~/.mcp-morning-brief/feeds.json.
Related MCP server: MCP RSS
Tools (5)
list_feeds— Show all subscribed feeds.add_feed— Subscribe (validates by fetching + parsing).remove_feed— Unsubscribe by URL or label.fetch_feed— Fetch any RSS/Atom feed (subscribed or not).get_brief— Deduped digest of last N hours, grouped by feed.
Example prompts
"Subscribe me to https://news.ycombinator.com/rss"
"Give me a morning brief from the last 24 hours."
"Fetch the latest 10 items from https://lobste.rs/rss"
"What feeds am I subscribed to?"
See examples/prompts.md for more.
Why this exists
People feel guilty about not reading their RSS reader. This server reframes RSS as a conversation accessory — Claude pulls your morning brief at the start of your daily chat.
Zero deps beyond @modelcontextprotocol/sdk. Parses RSS 2.0 + Atom with regex (handles 95% of feeds). Stores feed list locally as JSON. No API keys. No cloud sync.
Sister servers from dpm
mcp-devkit,mcp-public-data,mcp-diff,mcp-archive,mcp-citations,mcp-ical,mcp-dict,mcp-http-inspect.
License
MIT © dpm (digital product mill)
Available Tools
5 toolsadd_feedA
Subscribe to a new RSS or Atom feed URL. Validates by attempting to fetch and parse it.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| label | No | Optional friendly name (defaults to feed title) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description reveals that the tool validates the URL by fetching and parsing, which adds behavioral context. However, it does not detail behavior on validation failure, idempotency, or authorization requirements. With no annotations, this is partially transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences front-load the purpose and provide a key behavioral note. No extraneous content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Missing essential details: return value on success/failure, error handling, behavior if feed already exists, and authentication. No output schema or annotations further limit completeness for a mutation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50% (only 'label' has a description). The description adds that the URL is a feed URL but does not fully compensate for the undocumented 'url' parameter, failing to specify accepted formats or protocols.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action: subscribe to a new RSS or Atom feed URL. It distinguishes from sibling tools like list_feeds and remove_feed by indicating it adds a new feed.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use (when adding a new feed) but lacks explicit guidance on when not to use, prerequisites, or alternatives among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fetch_feedB
Fetch a single RSS/Atom feed (does not need to be subscribed). Returns parsed items.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Mentions return of parsed items but omits behavior details like error handling, rate limits, authentication, or what happens with invalid feeds. Some transparency from 'does not need to be subscribed'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with key information. Every sentence serves a purpose with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, no parameter descriptions, and no annotations, the description is too brief. Lacks details on error conditions, response format, and usage constraints beyond subscription status.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and description adds no information about the parameters (url, limit). Agent must infer meaning from parameter names alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states verb 'Fetch' and resource 'single RSS/Atom feed', and distinguishes from siblings by clarifying that the feed does not need to be subscribed. Also mentions return of parsed items.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides implicit guidance ('does not need to be subscribed') but lacks explicit when-to-use vs siblings like add_feed or list_feeds. No when-not or alternative suggestions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_briefA
Generate a deduped digest of recent items across all subscribed feeds, grouped by feed.
| Name | Required | Description | Default |
|---|---|---|---|
| since_hours | No | ||
| max_items_per_feed | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses two key behaviors ('deduped', 'grouped by feed') but with no annotations, it omits other important aspects like read-only nature, time range interpretation, and potential limits on output size.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that efficiently conveys the core functionality without unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and the lack of output schema, the description covers the essential context. However, it could mention output format or behavior when no items exist.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema documentation coverage is 0%, and the description does not elaborate on the two parameters (since_hours, max_items_per_feed) beyond their names, failing to add value beyond the schema itself.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies a unique action ('Generate'), a distinct resource ('deduped digest of recent items'), and scope ('across all subscribed feeds, grouped by feed'). This distinguishes it from sibling tools like fetch_feed and list_feeds.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
While the description implies a global usage scenario, it lacks explicit guidance on when to prefer this tool over siblings like fetch_feed, and does not mention any restrictions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_feedsA
List all subscribed RSS/Atom feeds.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description only says 'List all subscribed RSS/Atom feeds,' disclosing minimal behavior (listing). It does not mention output format, pagination, or ordering, but for a list tool, listing is the core behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no fluff. Appropriate length for a simple tool, though could potentially add a bit more detail without harming conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless list tool with no output schema, the description is adequate. It fully captures the tool's function, though missing details like return type are acceptable for such a simple operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist (0 params), so schema coverage is 100% trivially. Baseline for 0 params is 4; description adds no parameter info because none are needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it lists all subscribed RSS/Atom feeds, using a specific verb ('List') and resource. It effectively distinguishes from siblings: add_feed, fetch_feed, get_brief, remove_feed.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for viewing all feeds. While no explicit when-not-to-use is given, the purpose is straightforward and context is clear given sibling tool names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_feedA
Unsubscribe from a feed by URL or label.
| Name | Required | Description | Default |
|---|---|---|---|
| url_or_label | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden. It only states the action without disclosing behavioral traits like destructiveness, reversibility, or prerequisites.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that is front-loaded and contains no fluff. It efficiently conveys the purpose and parameter meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with one parameter and no output schema. The description covers the essential information for this low-complexity tool, though it omits error handling or success details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description clearly explains that the parameter accepts either a URL or a label, adding value beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'Unsubscribe' and the resource 'feed', and specifies the method 'by URL or label'. The verb 'remove' distinguishes it from siblings like 'add_feed', 'fetch_feed', 'get_brief', and 'list_feeds'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is used to unsubscribe from a feed, but provides no explicit guidance on when to use it vs alternatives or any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
5 tool updates
v0.1.0- First observed
add_feed - First observed
fetch_feed - First observed
get_brief - First observed
list_feeds - First observed
remove_feed
TDQS
Each tool has a clearly distinct purpose: adding a feed, fetching any feed, generating a brief, listing feeds, and removing a feed. No overlap in functionality.
All tool names follow a consistent verb_noun pattern in snake_case (add_feed, fetch_feed, get_brief, list_feeds, remove_feed), making them predictable.
With 5 tools, the server covers the core operations for managing RSS/Atom feeds and generating a brief. This is well-scoped and neither too few nor too many.
The set covers full lifecycle: subscribe (add_feed), list (list_feeds), fetch individual (fetch_feed), generate digest (get_brief), and unsubscribe (remove_feed). No obvious gaps for its stated purpose.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Cross-source news (AP, BBC, NPR, HN, Google News) with topic filtering and dedup.
Give an AI agent eyes on the web: turn any feed, page, or stream into deduplicated change events.
Your curated sources (RSS, YouTube, podcasts, Google News) as context for any AI agent. 26 tools.
- NewsmindOAuthapp.newsmind
Read, search and track your RSS feeds: semantic search, story clustering, watches, OPML import.
Related MCP Servers
- AlicenseCqualityBmaintenanceModel Context Protocol Server for aggregating RSS feeds in Claude Desktop127Mozilla Public 2.0
- AlicenseNot gradedqualityDmaintenanceEnables intelligent RSS feed management with AI-powered semantic search, advanced filtering, and a comprehensive reading workflow. Supports OPML parsing, article organization with status tracking, and token-efficient browsing of large feed collections.165MIT
- FlicenseNot gradedqualityCmaintenanceEnables Claude to fetch, parse, and manage RSS/Atom feeds through the Model Context Protocol. It supports feed registration and retrieval, allowing users to access article summaries and full content from multiple sources via natural language.1-
- FlicenseAqualityDmaintenanceFetches RSS feeds from tech blogs and news sites and returns AI-generated summaries via Claude.15-
Appeared in Searches
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/jeffereychown-Max/mcp-morning-brief'
If you have feedback or need assistance with the MCP directory API, please join our Discord server