reading-feed-mcp
Your reading queue, searchable from Claude Code. Stop re-googling what you already saved.

One MCP server. Five reading sources. Zero vendor lock-in.
The problem
Every Claude Code session starts amnesiac. You saved 300 articles this year. You remember reading something about the exact pattern you're implementing right now. But it's in Readwise. Or Pocket. Or Karakeep. Or Burn. Or that folder of markdown notes.
So you re-google. Again.
claude-code#27298 has 22 comments about this. Readwise built their own MCP — but it only works if you use Readwise. Everyone else is stuck.
The fix
reading-feed-mcp is a vendor-neutral MCP server that makes your reading queue queryable from any MCP client (Claude Code, Claude Desktop, Cursor, Windsurf).
Configure one or more sources. Get three tools:
search_reading(query) — full-text search across everything
list_recent(source) — latest items from a source
list_sources — what you've wired up
That's it. No new account. No cloud. No lock-in.
Supported sources
| Burn 451 | BURN_MCP_TOKEN | ✅ |
| Readwise Reader | READWISE_TOKEN | ✅ |
| Karakeep (self-hosted) | KARAKEEP_URL + KARAKEEP_TOKEN | ✅ |
| RSS feeds | READING_FEED_RSS (comma-separated URLs) | ✅ |
| Local markdown | READING_FEED_MARKDOWN_DIR | ✅ |
| Raindrop / Omnivore / Pocket export | — | 🔜 v0.2 |
Configure any combination. Search spans all of them.
Setup (60 seconds)
1. Install
claude mcp add reading-feed -- npx reading-feed-mcp@latest
2. Set sources via env vars
At least one required. Use whichever you actually have:
export BURN_MCP_TOKEN=bmcp_xxx
export READWISE_TOKEN=xxx
export KARAKEEP_URL=https://karakeep.your-domain.com
export KARAKEEP_TOKEN=xxx
export READING_FEED_RSS="https://simonwillison.net/atom/everything/,https://karpathy.bearblog.dev/feed/"
export READING_FEED_MARKDOWN_DIR=~/notes
3. Use it
In Claude Code, just ask:
> Find articles I saved about MCP authentication
Claude calls search_reading(query="MCP authentication") and returns matches across all your sources.
Example output
{
"query": "MCP authentication",
"total": 4,
"results": [
{
"source": "burn",
"title": "MCP Auth Patterns in 2026",
"url": "https://example.com/mcp-auth",
"status": "active",
"summary": "Compares OAuth device flow, API keys, and JWT exchange for MCP servers..."
},
{
"source": "readwise",
"title": "Building Secure MCP Servers",
"url": "https://example.com/secure-mcp",
"status": "later",
"summary": "Step-by-step guide to token exchange..."
},
{
"source": "rss",
"title": "Simon Willison: MCP Server Deep Dive",
"url": "https://simonwillison.net/...",
"feed": "Simon Willison's Weblog"
}
]
}
Why "vendor-neutral" matters
Most reading tools want you to use their ecosystem. Readwise MCP is Readwise-only. Pocket is dead. Omnivore is dead. If your reading tool dies, your reading dies with it.
reading-feed-mcp is the opposite: bring your own source. Switch services, keep the MCP. We don't store your data. We don't host anything. We're a thin query layer.
Best with Burn — but works with anything
Burn 451 is recommended because:
- 24h countdown surfaces urgency (search result has
status: "active" with time remaining)
- AI summaries embedded in every article (search works on summaries, not just titles)
- Free tier, no credit card
But the whole point is you don't have to use Burn. If you live in Readwise, use Readwise. Live in markdown files? Point the MCP at your folder.
How it's built
- Zero-dep Node.js (except
@modelcontextprotocol/sdk)
- Each source is one file (<100 lines) — add a new one via PR in 20 minutes
- Stdio transport (standard MCP pattern)
- Token caching (5-min TTL) so you don't thrash upstream APIs
Part of the Burn ecosystem
Contributing
New source adapter? Each one lives in src/sources/<name>.mjs, exports search({...}) and listRecent({...}). See src/sources/burn.mjs for the simplest example (~50 lines).
License
MIT