{"slug": "giving-my-ai-agents-access-to-my-rss-reader", "title": "Giving My AI Agents Access to My RSS Reader", "summary": "Developer-built Mac RSS reader Cove ships an MCP server, off by default, that exposes read tools (list_feeds, list_folders, list_unread, list_starred, get_article, search_articles) and write tools (mark_read, add_feed, rename_feed, move_feed, remove_feed) to AI agents over a loopback-only HTTP endpoint at http://127.0.0.1:27272/mcp protected by a bearer token. The author connects the Hermes Agent, running on an exe.dev VM with GLM-5.3-flash on Cloudflare Workers AI, to Cove through the executor MCP gateway and Tailscale, and uses it for a scheduled daily digest of the 15 newest unread articles posted to Discord. Cove's server stops when the app quits, and regenerating the token cuts off every client.", "body_md": "# Giving My AI Agents Access to My RSS Reader\n\nRSS seems to be having a bit of a resurgence, which makes me happy because I’ve always been a fan. One place to track and read every blog I follow. What’s not to like?\n\nExcept that over the past decade I’ve tried a handful of RSS readers, and the same thing happens every time. I build up my subscriptions, use the reader faithfully for a few weeks or months, then quietly stop and go back to reading blogs on the web one at a time. Every reader I’ve tried eventually turns into an inbox. The unread count climbs. The guilt climbs with it. Reading starts to feel like a chore I’m behind on, like an email inbox I’ll never get to zero, so I abandon it.\n\nSo I built my own. [Cove](https://covereader.app) is a native Mac RSS reader that keeps an archive instead of an inbox. It fetches the full text of articles when it can, keeps them on my Mac, and doesn’t nag me about what I haven’t read. I also wanted to see what I could add on top with AI that other readers don’t have. That’s how Cove ended up with an MCP server.\n\n## What Cove Exposes\n\nCove ships an MCP server. It’s off by default. Turn it on and agents get these tools:\n\n- **Read:**`list_feeds` ,`list_folders` ,`list_unread` ,`list_starred` ,`get_article` ,`search_articles`\n- **Write:**`mark_read` ,`add_feed` ,`rename_feed` ,`move_feed` ,`remove_feed`\n\nI left a few things out on purpose. There’s no chat pane inside Cove. There’s no hosted endpoint. It’s a door into the library that’s already on my Mac, nothing more.\n\n## How It Works\n\nOpen Settings > Advanced and flip the Enabled switch. Cove shows a config block you can copy straight into your agent:\n\n```\n{\n  \"mcpServers\": {\n    \"cove\": {\n      \"type\": \"http\",\n      \"url\": \"http://127.0.0.1:27272/mcp\",\n      \"headers\": {\n        \"Authorization\": \"Bearer <your-token>\"\n      }\n    }\n  }\n}\n```\n\nA few details:\n\n- The server only listens on loopback, so nothing off your Mac can reach it.\n- Every request needs the bearer token.\n- It stops when Cove quits. Regenerating the token cuts off every client.\n- If your client can’t speak HTTP, Cove also bundles a stdio bridge. Settings shows a config block for that too.\n\nThat’s enough for Claude Code, or any other agent that speaks MCP, running on the same Mac. My Hermes agent doesn’t run on my Mac, though.\n\n## My Setup\n\n- **[Hermes Agent](https://github.com/NousResearch/hermes-agent)** runs on a VM from[exe.dev](https://exe.dev) . It uses GLM-5.3-flash on[Cloudflare Workers AI](https://www.cloudflare.com/products/workers-ai/) and runs the digest on a schedule.\n- **[executor](https://executor.sh)** runs on the same VM. It’s an MCP gateway: every agent I use gets its MCP tools through it, so I maintain my MCP settings in one place instead of in every agent’s config.\n- **[Tailscale](https://tailscale.com)** connects the VM to my Mac. On the Mac,[`tailscale serve`](https://tailscale.com/kb/1242/tailscale-serve) forwards tailnet traffic to Cove’s loopback port.\n\nReaching Cove from the tailnet is my setup, not a Cove feature. Cove only listens on loopback, on purpose. `tailscale serve` is what makes it reachable from other machines on my tailnet, and I opted into that. At that point the bearer token and my Tailscale access rules are what protect it, so I keep the rules scoped to the one VM that needs it. One gotcha: a client connecting through `tailscale serve` also needs to send a `Host: 127.0.0.1:27272` header.\n\nIt’s also worth knowing what leaves my Mac in this setup. The agent runs on a cloud VM, the model runs on Workers AI, and the digest lands in Discord. The digest only calls `list_unread`, so what goes out is titles, feed names, authors, dates, and URLs.\n\nIf your agent runs on the same machine as Cove, say a Mac mini that’s always on, you can skip all of this.\n\n## Use Cases\n\n### The Daily Digest\n\nHermes has a built-in cron tool, so I asked it to set up a daily job: pull the 15 newest unread articles from Cove and post the links in my personal Discord server.\n\nEvery morning the agent makes one call to `list_unread`, drops anything it already sent me on a previous run, formats what’s left, and posts it to Discord.\n\nThe digest never marks anything read. It only shows me what’s new and leaves the rest alone. Cove works the same way, so the digest fits right in.\n\nThe one catch is that my Mac has to be awake and Cove has to be running. If either isn’t true, there’s no digest that day.\n\n### Adding Feeds\n\nOne night I came across a post on Hacker News and realized the author was a co-worker at Cloudflare who writes really good stuff. I pasted the URL to my agent and asked it to check whether the blog had an RSS feed and, if so, subscribe to it in Cove.\n\nIt read the post, searched for a feed URL, curled the result to confirm it was valid RSS, and then called `add_feed`. Thirty-eight articles ingested, including the one I’d linked. First try.\n\n### Finding Similar Blogs\n\nThen I wanted to push it a bit. While writing this post, I asked the agent to look at the feeds I already subscribe to and recommend blogs I might be missing.\n\nIt read all 31 of my feeds and my starred articles, told me what I’m apparently into (solo-founder hustle, engineering craft, LLM evals, remote-work writing), and came back with 18 suggestions grouped by topic. Every one had a live feed URL and a sentence on why it fit. It also listed what it skipped and why.\n\nThen it stopped and asked whether I wanted any of them added, since I’d asked for recommendations and not action.\n\nThe digest saves me a few clicks. An agent that can look at what I read, work out why I read it, and go find more of it is something no RSS reader I’ve used could do.\n\nThe [latent.space](https://www.latent.space/) one was one I’d never come across before, so that was a nice add to my reading library.\n\n## Under the Hood\n\n**One writer.** The MCP server runs inside the Cove process. It goes through the same code path as the app, so there’s never a second program writing to the library.\n\n**Deletes take two calls.** `remove_feed` can either keep a feed’s articles in the archive or delete them. Deleting requires a preflight call first, which returns a token describing exactly what will be removed. The delete only goes through if that still matches. After [running agents in devcontainers](https://markphelps.me/posts/running-ai-agents-in-devcontainers/), I think a lot about blast radius. One bad tool call shouldn’t wipe out years of articles.\n\n**I got the stdio bridge wrong the first time.** My first version had no token. Any process on my Mac could launch the bridge and use it as a trusted proxy into Cove. Not great. Now Cove checks the bridge’s code signature, the bridge checks Cove’s, and the bridge has to present a separate secret that Cove derives from the main token. Regenerate the token and both go dead.\n\n## Wrapping Up\n\nThe MCP server itself is the boring part. Cove already had the library, and the server is a thin door into it. The interesting part is what agents do once they can see what I read: a morning digest, a feed added from a pasted URL, new blogs found from the ones I already follow. I’m sure there are more I haven’t thought of yet.\n\n## Try It\n\nCove is at [covereader.app](https://covereader.app). The MCP server is free during the beta. Cove’s 1.0 pricing hasn’t been decided.\n\nIf you try it, I’d love to hear how it goes. Hit me up on [X](https://twitter.com/mark_a_phelps), especially if you find a use case I haven’t.\n\nThanks for reading.", "url": "https://wpnews.pro/news/giving-my-ai-agents-access-to-my-rss-reader", "canonical_source": "https://markphelps.me/posts/giving-ai-agents-access-to-rss-reader/", "published_at": "2026-09-21 14:05:19+00:00", "updated_at": "2026-09-21 14:24:55.048739+00:00", "lang": "en", "topics": ["ai-agents", "agent-protocols", "ai-tools", "ai-products"], "entities": ["Cove", "MCP", "Hermes Agent", "executor", "Tailscale", "Cloudflare Workers AI", "GLM-5.3-flash", "exe.dev"], "alternates": {"html": "https://wpnews.pro/news/giving-my-ai-agents-access-to-my-rss-reader", "markdown": "https://wpnews.pro/news/giving-my-ai-agents-access-to-my-rss-reader.md", "text": "https://wpnews.pro/news/giving-my-ai-agents-access-to-my-rss-reader.txt", "jsonld": "https://wpnews.pro/news/giving-my-ai-agents-access-to-my-rss-reader.jsonld"}}