Your curated sources (RSS, YouTube, podcasts, Google News) as context for any AI agent. 26 tools.
One address for any MCP client. You sign in at mcp.feednest.com once, after adding it.
At most: creates or changes data: records, files, settings.
Odel charges nothing per call. The publisher may charge for its own service.
| Access to | Read | Change |
|---|---|---|
| Feeds | ||
| Articles | ||
| Saved | ||
| Tags | ||
| Highlights | ||
| Notes | ||
| Ai | ||
| Stats |
From the sign-in at mcp.feednest.com, as the endpoint publishes it. You approve it there.
Odel could not list its tools without signing in.
Your sources. Not the whole web. Ask your AI about your feeds - it already knows.
ChatGPT searches the internet. Perplexity crawls billions of pages. When you ask about your industry, your interests, your world - they give you everything except what matters.
FeedNest is different. Your AI works exclusively with the sources you choose: the blogs you trust, the publications you follow, the experts you believe in. No algorithmic noise. No black-box results. Intelligence grounded in your world.
This MCP server gives any AI assistant - ChatGPT, Codex, Claude, Gemini, Grok, Cursor, Windsurf, Cline, Le Chat, and more - direct access to your feeds, articles, highlights, notes, and tags through natural language.
Just ask. Your AI handles the rest.
https://mcp.feednest.comNo API key needed. ChatGPT handles the OAuth flow automatically.
Include FeedNest as an MCP tool in your API request:
{
"type": "mcp",
"server_url": "https://mcp.feednest.com",
"server_label": "feednest",
"authorization": "fn_live_YOUR_API_KEY"
}
The plugin bundles skills, MCP config, and brand assets in one install. It is not in the Codex plugin directory yet, so install it from this repository: see Local Installation in the Codex plugin README.
Add to ~/.codex/config.toml:
[mcp_servers.feednest]
url = "https://mcp.feednest.com"
bearer_token_env_var = "FEEDNEST_API_KEY"
export FEEDNEST_API_KEY="fn_live_YOUR_API_KEY"
Or via CLI:
codex mcp add feednest --transport http https://mcp.feednest.com
FeedNest is listed in Claude's connectors directory.
No API key needed, and the connector follows your Claude account to Claude Desktop and the mobile apps.
To add it by URL instead, add a custom connector in Customize → Connectors with the URL https://mcp.feednest.com and leave OAuth Client ID and Secret empty.
claude mcp add --transport http feednest https://mcp.feednest.com \
--header "Authorization: Bearer fn_live_YOUR_API_KEY"
Add -s user for global access across all projects.
The directory connector above already works in Claude Desktop. To configure FeedNest in claude_desktop_config.json instead, which only runs stdio servers, use the mcp-remote bridge:
{
"mcpServers": {
"feednest": {
"command": "npx",
"args": [
"-y", "mcp-remote",
"https://mcp.feednest.com",
"--header", "Authorization:${AUTH_HEADER}"
],
"env": {
"AUTH_HEADER": "Bearer fn_live_YOUR_API_KEY"
}
}
}
}
Config path: ~/Library/Application Support/Claude/claude_desktop_config.json (macOS), %APPDATA%\Claude\claude_desktop_config.json (Windows), or ~/.config/Claude/claude_desktop_config.json (Linux).
Add to .cursor/mcp.json in your project (or ~/.cursor/mcp.json for global):
{
"mcpServers": {
"feednest": {
"url": "https://mcp.feednest.com",
"headers": {
"Authorization": "Bearer fn_live_YOUR_API_KEY"
}
}
}
}
Tip: Cursor supports env var interpolation:
"Bearer ${env:FEEDNEST_API_KEY}". Do not add a"type"field - Cursor auto-detects from the"url"key.
Available on all plans, including the free tier.
FeedNest, Server URL to https://mcp.feednest.comAPI Token Authentication, Authorization to Bearer fn_live_YOUR_API_KEYAdd to ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"feednest": {
"serverUrl": "https://mcp.feednest.com",
"headers": {
"Authorization": "Bearer fn_live_YOUR_API_KEY"
}
}
}
}
Important: Windsurf uses
"serverUrl"(not"url"). Using the wrong key causes a silent failure.
In VS Code, open Cline extension settings → MCP Servers configuration (JSON):
{
"mcpServers": {
"feednest": {
"type": "streamableHttp",
"url": "https://mcp.feednest.com",
"headers": {
"Authorization": "Bearer fn_live_YOUR_API_KEY"
}
}
}
}
Critical: The
"type": "streamableHttp"field is mandatory for Cline. Without it, custom headers may fail silently and authentication won't work.
Add to ~/.gemini/settings.json:
{
"mcpServers": {
"feednest": {
"httpUrl": "https://mcp.feednest.com",
"headers": {
"Authorization": "Bearer fn_live_YOUR_API_KEY"
}
}
}
}
Note: Gemini CLI uses
"httpUrl"(not"url"). The"url"field is reserved for SSE transport. CLI only - gemini.google.com does not support external MCP servers.
Available through the xAI API/SDK only, not from the grok.com chat UI.
curl https://api.x.ai/v1/responses \
-H "Authorization: Bearer $XAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "grok-3",
"tools": [{
"type": "mcp",
"server_url": "https://mcp.feednest.com",
"server_label": "feednest",
"authorization": "Bearer fn_live_YOUR_API_KEY"
}],
"input": "What are my unread articles?"
}'
Any client supporting Streamable HTTP can connect using:
https://mcp.feednest.comAuthorization: Bearer fn_live_YOUR_API_KEYFor stdio-only clients, use the mcp-remote bridge:
{
"mcpServers": {
"feednest": {
"command": "npx",
"args": [
"-y", "mcp-remote",
"https://mcp.feednest.com",
"--header", "Authorization:Bearer fn_live_YOUR_API_KEY"
]
}
}
}
| Tool | Description | Key Parameters |
|---|---|---|
get_articles | List articles with title, source, date, and summary preview. Views: newsfeed, by-feed, by-folder, by-tag, tagged, highlighted, noted. | view*, feed_id, folder_id, tag_id, limit, query, sort, unread_only, date_from, date_to, count_only |
get_article | Get full article content including highlights, notes, and reading time. | article_id* |
extract_article | Fetch full content from the original URL when RSS truncated it. | article_id* |
| Tool | Description | Key Parameters |
|---|---|---|
mark_as_read | Mark an article as read. | article_id* |
mark_as_unread | Mark an article as unread. | article_id* |
mark_all_as_read | Mark all articles as read, optionally filtered by feed or folder. | feed_id, folder_id |
| Tool | Description | Key Parameters |
|---|---|---|
save_article | Save an article for later reading. | article_id* |
unsave_article | Remove an article from saved items. | article_id* |
save_url | Save an external URL for later reading. | url* |
get_saved | List saved articles with search, date filtering, and sorting. | limit, query, sort, date_from, date_to |
| Tool | Description | Key Parameters |
|---|---|---|
get_feeds | List subscribed feeds with unread counts. Search by name. | folder_id, query, limit |
get_folders | List all feed folders with feed counts. | - |
get_tags | List all tags with article counts. | - |
| Tool | Description | Key Parameters |
|---|---|---|
create_tag | Create a new tag for categorizing articles. | name*, color |
delete_tag | Delete a tag by ID. | tag_id* |
tag_article | Add or remove a tag on an article. | article_id*, tag_id*, action* (add/remove) |
| Tool | Description | Key Parameters |
|---|---|---|
get_highlights | Get all text highlights from an article. | article_id* |
add_highlight | Highlight a text passage. The text must exist exactly in the article. | article_id*, text*, color |
remove_highlight | Remove a highlight from an article. | article_id*, highlight_id* |
| Tool | Description | Key Parameters |
|---|---|---|
get_notes | Get the note on an article. | article_id* |
add_note | Add or update a note on an article. | article_id*, content* |
delete_note | Delete a note from an article. | article_id* |
| Tool | Description | Key Parameters |
|---|---|---|
get_recently_read | Get recently opened articles. Supports search and date filtering. | limit, since, date_to, query, sort |
| Tool | Description | Key Parameters |
|---|---|---|
get_output_feeds | List public RSS output feeds created by the user. | - |
text_to_speech is not exposed by the hosted MCP server: it generates audio with
an AI model, which the Claude connectors directory does not allow. Reading articles
aloud stays available in the FeedNest app and through the OpenClaw plugin.
| Tool | Description | Key Parameters |
|---|---|---|
get_stats | Reading streak, articles read today, reading time, total feeds, unread count, saved count. | - |
* = required parameter
You: "What's happening in AI today?"
ChatGPT: "Based on your tech feeds, here are today's 3 biggest stories:
1. OpenAI announced GPT-5, covered first in your Hacker News feed
2. EU AI Act enforcement begins, mentioned across 4 of your sources
3. Google published new Gemini research, from your AI folder
Want me to summarize any of them?"
Generate a key from Settings → Developer API in the FeedNest dashboard. Keys start with fn_live_ followed by 32 hex characters.
Authorization: Bearer fn_live_abc123...
The server supports full OAuth 2.1 with PKCE. Discovery endpoint:
https://mcp.feednest.com/.well-known/oauth-protected-resource
ChatGPT and Claude.ai handle OAuth automatically - no API key needed for those.
Apps that connect with OAuth work on every FeedNest plan. API keys need Pro.
| Free | Plus | Pro | |
|---|---|---|---|
| Read feeds, folders, articles, saved articles, tags, reading history and output feeds | Yes | Yes | Yes |
| An article's highlights | Yes | Yes | Yes |
Notes, the highlighted and noted views, reading statistics | No | Yes | Yes |
| Changes: mark as read, save, tag, highlight, take notes, load an article's full text | No | Yes | Yes |
Date filters (date_from, date_to, since) | No | No | Yes |
| Requests an hour | 20 tool calls | 1,000 | 1,000 |
| API keys | No | No | Yes |
A connected app picks up a plan change at its next token refresh, within an hour, or right away when you reconnect FeedNest.
| Scope | Access |
|---|---|
read | All read-only tools (get_articles, get_feeds, get_stats, etc.) |
write | All mutation tools (mark_as_read, save_article, add_highlight, etc.) |
ai | No MCP tool at the moment (see AI above) |
| Issue | Solution |
|---|---|
| "Bearer token required" | Check that the Authorization header is set correctly |
| "Invalid API key format" | Key must start with fn_live_ followed by 32 hex characters |
| "Invalid or revoked API key" | Regenerate from Settings → Developer API |
| "API access requires a Pro subscription" | API keys need Pro. Upgrade at feednest.com, or connect with OAuth, which works on every plan |
| "...included in FeedNest Plus and Pro" | The account is on the Free plan, where apps can read feeds, articles, saved articles, tags and highlights but not change anything. After upgrading, reconnect FeedNest so the app gets the new plan. See Plans |
| "Filtering by date is included in FeedNest Pro" | Date filters need Pro. Without them, articles still come newest first |
| "...includes 20 requests an hour from AI assistants" | The Free plan's hourly allowance is used up. Try again after the wait the message gives |
| "Rate limit reached" | Wait a few minutes and retry |
| "Insufficient scope" | Your API key doesn't have the required scope |
| Tools not appearing | Restart your AI client after changing MCP configuration |
This repository is a monorepo containing the client libraries and plugins for the FeedNest MCP server.
| Package | npm | Description |
|---|---|---|
@feednest/sdk | TypeScript SDK — typed HTTP client for the FeedNest API v1 | |
@feednest/openclaw | OpenClaw plugin — 26 agent tools for AI assistants | |
| Codex plugin | — | OpenAI Codex plugin — skills + MCP config for Codex agents |
@feednest/shared-tool-defs | private | Shared Zod schemas and text formatters (bundled into the plugin) |
npm install
npm run build # Build all packages (sdk → shared-tool-defs → openclaw-plugin)
npm test # Run all tests
npm run type-check
MIT