feedly-mcp
feedly-mcp
Lies deine Feedly-Abonnements mit Claude. Frag „Was gibt's Neues in meinen KI-Feeds?" und erhalte eine Antwort, ohne einen Browser zu öffnen.
Noch nicht veröffentlicht. Der Server funktioniert und alle sechs Tools wurden gegen ein Live-Konto getestet, aber es ist nicht auf npm und es gibt keine Releases. Installation aus dem Quellcode — dieser Weg funktioniert heute; die
npx- und.mcpb-Wege nicht.
Was es tut
Sechs Tools, die es einem Agenten ermöglichen, dein Feedly-Konto zu lesen:
Tool | Was es dir gibt |
| deine Ordner, mit ungelesenen Zählern |
| die Feeds in einem Ordner |
| aktuelle Artikel, bereinigt und gekürzt |
| wie viel wartet, gesamt und pro Ordner |
| neue Quellen zum Abonnieren finden |
| Artikel als gelesen markieren (standardmäßig deaktiviert) |
Related MCP server: RSS Feed MCP Server
Was es nicht tut
Dies ist ein Verbindungsstück, keine Reader-App. Es übersetzt eine Anfrage in einen Feedly- API-Aufruf und gibt eine saubere Antwort zurück. Es speichert keine Artikel, baut kein durchsuchbares Archiv auf, bewertet nichts über die Zeit und sendet keine Zusammenfassungen.
Das sind alles gute Dinge, die man wollen kann — baue sie auf diesem auf, in einem Claude Projekt, einem Skill oder einer geplanten Aufgabe. Sie herauszuhalten ist das, was dies klein genug macht, um ihm zu vertrauen.
Datenschutz
Alles läuft auf deinem eigenen Rechner.
Dein Feedly-Token bleibt lokal. Es wird nirgendwohin gesendet außer an
api.feedly.com.Kein Konto bei uns, kein Server in der Mitte, keine Telemetrie.
Nichts darüber, was du liest, wird gespeichert, außer einem kurzlebigen lokalen Cache.
Voraussetzungen
Node.js 20 oder neuer — überprüfe mit
node --versionEin Feedly-Konto und ein API-Token (Schritt 1 unten)
Claude Desktop, Claude Code oder ein anderer MCP-Client
Schritt 1 — Ein Feedly-API-Token erhalten
Melde dich in deinem Browser bei Feedly an.
Besuche https://feedly.com/v3/auth/dev.
Folge den dortigen Anweisungen, um ein Entwickler-Zugriffstoken zu generieren.
Kopiere das Token an einen sicheren Ort für den nächsten Schritt. Es ist ein Passwort — behandle es wie eines.
Zwei Dinge, die du wissen solltest, bevor du weitermachst.
Tokens laufen ab. Bei einem kostenlosen Konto ist ein Entwickler-Token etwa 30 Tage gültig, danach wiederholst du diesen Schritt. Bezahlte Pläne können automatisch aktualisieren. Das ist Feedlys Richtlinie, nicht etwas, das dieses Tool umgehen kann.
Die Token-Verfügbarkeit hängt von deinem Plan ab. Feedlys eigene Dokumentation ist inkonsistent darüber, welche Kontostufen selbst API-Tokens ausstellen können. Wenn die Seite oben dir kein Token gibt, kann dieser Connector nicht mit deinem Konto funktionieren, und es gibt keine Lösung außer, Feedly zu kontaktieren.
Schritt 2 — Installation
Aus dem Quellcode bauen — der einzige Weg, der heute funktioniert
git clone https://github.com/fredrsat/feedly-mcp
cd feedly-mcp
npm install
npm run buildSpeichere dann dein Token in einer Datei, die nur du lesen kannst, damit es nie in einer Client-Konfiguration im Klartext stehen muss:
mkdir -p ~/.config/feedly-mcp
printf '%s' 'paste-your-token-here' > ~/.config/feedly-mcp/token
chmod 600 ~/.config/feedly-mcp/tokenDer Server weigert sich, diese Datei zu lesen, wenn sie gruppen- oder weltweit lesbar ist, und sagt dir, wie du das beheben kannst.
Registriere es bei deinem Client, mit einem absoluten Pfad zum gebauten Einstiegspunkt:
# Claude Code — --scope user makes it available in every directory
claude mcp add feedly --scope user -- node /absolute/path/to/feedly-mcp/dist/cli.js
claude mcp list # should report: feedly ... ✔ ConnectedFür Claude Desktop füge dies zu
~/Library/Application Support/Claude/claude_desktop_config.json (macOS) oder
%APPDATA%\Claude\claude_desktop_config.json (Windows) hinzu, beende und öffne dann die
Anwendung erneut — das Schließen des Fensters lädt MCP-Server nicht neu:
{
"mcpServers": {
"feedly": {
"command": "node",
"args": ["/absolute/path/to/feedly-mcp/dist/cli.js"]
}
}
}Hast du bereits andere Server unter mcpServers? Füge feedly daneben hinzu, anstatt den Block zu ersetzen.
Wenn du das Repository danach verschiebst, registriere es erneut — der Pfad ist absolut. Ein erneutes Bauen an Ort und Stelle wird automatisch erkannt.
Sobald veröffentlicht
Keiner dieser Wege funktioniert noch; so wird die Installation nach der ersten Veröffentlichung aussehen.
Ein-Klick, Claude Desktop. Lade feedly-mcp.mcpb von der Releases-Seite herunter
und ziehe es in Einstellungen → Erweiterungen. Ein Einstellungsformular erscheint; das Token
geht in den Schlüsselbund deines Betriebssystems statt in eine Klartextdatei, und
alles in Konfiguration ist über dieses Formular bearbeitbar.
Von npm. npx -y feedly-mcp als Befehl, mit FEEDLY_TOKEN im
env-Block des Clients oder der Token-Datei oben.
Schritt 3 — Überprüfen, dass es funktioniert
Bevor du Claude etwas fragst, bestätige die Verbindung von deinem Terminal aus:
node dist/cli.js doctorEin gesundes Ergebnis sieht so aus:
✓ Config loaded from /Users/you/.config/feedly-mcp/config.toml
scope.default_folder = Tech ← file
✓ Token found (file /Users/you/.config/feedly-mcp/token)
✓ Connected to Feedly you@example.com
plan: FeedlyProYearly
✓ 8 folders, 70 feeds
Tech 70 feeds 4317 unread user/<uuid>/category/Tech
Tech - Research 11 feeds 68 unread user/<uuid>/category/<uuid>
Tech - Tooling 6 feeds 171 unread user/<uuid>/category/<uuid>
…
API calls used today: 4 of 50 (resets in 11h34m)
Configured ceiling: 40/day account-wide, 10/session
Through this server: 4 today, 4 in this run
✓ Everything checks out.Nützliche Flags: -v druckt jede aufgelöste Einstellung und woher sie stammt,
--refresh leert zuerst den Cache.
doctor druckt niemals dein Token. Verwende die Ordnerliste, die es dir gibt, wenn du
scope in Schritt 4 ausfüllst.
Wenn etwas nicht stimmt, springe zu Fehlerbehebung.
Schritt 4 — Konfigurieren (optional)
Die Standardeinstellungen sind sinnvoll und du kannst dies komplett überspringen. Die eine Einstellung, die sich früh anzusehen lohnt, ist scope — welche Ordner Claude überhaupt sehen darf.
Erstelle ~/.config/feedly-mcp/config.toml:
[scope]
# Only these folders are visible to the agent. Leave empty for all of them.
include_folders = ["AI", "Longform"]
# Used when you ask about articles without naming a folder.
default_folder = "AI"
[defaults]
hours = 8 # how far back get_articles looks
limit = 100 # max articles per callZwei Gründe, include_folders zu setzen:
Datenschutz. Dein Arbeitsordner muss nicht für einen Agenten lesbar sein.
Fokus. Weniger Ordner bedeutet kürzere Antworten und weniger Kontext, der für Material ausgegeben wird, nach dem du nicht gefragt hast.
Wenn du über Option A installiert hast, bearbeite diese stattdessen im Einstellungsformular der Erweiterung — gleiche Optionen, keine Datei zum Suchen.
Vollständige Liste der Einstellungen: docs/configuration.md
Verwendung
Frag einfach. Einige Dinge, die gut funktionieren:
„Was gibt's Neues in meinen KI-Feeds seit gestern?"
„Gibt es diese Woche etwas Lesenswertes in KI - Forschung?"
„Wie viele ungelesene Artikel habe ich, aufgeschlüsselt nach Ordnern?"
„Finde mir Feeds über lokale LLM-Inferenz"
„Fasse die Top 5 nach Engagement aus den letzten 8 Stunden zusammen"
Du musst keine Ordner-IDs kennen. Ordnernamen funktionieren, und Claude kann sie auflisten.
Vollständige Tool-Referenz: docs/tools.md
Grenzen, die du kennen solltest, bevor du darauf aufbaust
Diese stammen aus dem Betrieb gegen ein echtes, viel genutztes Konto, nicht aus der Theorie.
Volumen schlägt dein Zeitfenster. Bei einem Ordner, der ~42 Artikel pro Stunde produziert,
deckt eine Anfrage für 24 Stunden mit einem Limit von 320 tatsächlich weniger als acht ab — limit
geht zuerst aus. Antworten melden covered_hours neben window_hours, damit die
Lücke sichtbar ist, aber das Limit zu erhöhen ist normalerweise die falsche Lösung: Es kostet mehr
Kontingent und mehr Kontext, um den toten Winkel leicht zu verschieben. Verkleinere den Ordner.
Scope funktioniert auf Ordnern, nicht auf Feeds. Wenn eine laute Quelle und eine ausgezeichnete Quelle im selben Ordner sitzen, trennt keine Konfiguration hier sie — auf dem Konto, gegen das getestet wurde, produzierte ein einzelner Feed 140 von 320 Artikeln und keine der nützlichen Geschichten, während ein Feed mit 2 Artikeln die meisten davon produzierte. Die Lösung war, sich in Feedly abzumelden. Praktische Reihenfolge: Entferne zuerst tote Feeds, dann setze den Scope. Der andere Weg wirft gute Quellen weg, um schlechte zu entkommen.
Zähler, die melden, was ein Schreibvorgang getan hat, verdienen Misstrauen. Feedly gibt keinen
Zähler für das Markieren auf Ordnerebene zurück, also misst mark_read die ungelesenen Summen vorher und
nachher. Das ist nah, nicht exakt — Feedlys eigene Zähler hinken einen Moment hinterher. Für alles,
was wichtig ist, überprüfe unread_counts selbst.
Ein Bereinigungsfenster, das älter als dein Rückstand ist, markiert nichts. Ungelesen stabilisiert sich bei
ungefähr window_days × articles_per_day. Ein 7-Tage-older_than gegen ~570
Artikel pro Tag hält den Rückstand für immer nahe 4000, egal wie oft du kehrst.
Budgetiere aus der Antwort, nicht aus einem Plan. Jedes Ergebnis trägt
calls_left_today und calls_left_session. Lies sie und passe dich an, anstatt
eine Anrufanzahl im Voraus zu entscheiden — die tägliche Zahl ist kontoweit, also bewegt dein
eigenes Browsen sie unter dir.
Dein API-Kontingent — bitte lies dies
Dein tägliches API-Kontingent ist klein — kleiner als Feedlys Dokumentation vermuten lässt.
Gemessen an der Live-API meldet ein Entwickler-Token auf einem bezahlten Pro Plus-Konto eine Obergrenze von 50 Aufrufen pro Tag, die um Mitternacht UTC zurückgesetzt wird. Feedlys eigene Dokumente beschreiben 250 auf kostenlos und 500 auf Pro. Plane für 50.
Das sind ungefähr acht Gespräche pro Tag, wenn der Agent gesprächig ist, und das Kontingent wird mit allem anderen geteilt, das dein Konto berührt — einschließlich Feedly in deinem Browser, das auch aufhört zu funktionieren, wenn ein Agent es aufbraucht.
Also verteidigt dieses Tool das Budget in deinem Namen:
Ordner- und Abonnementlisten werden 24 Stunden lang auf der Festplatte zwischengespeichert.
Wiederholte identische Anfragen innerhalb von 15 Minuten werden aus dem Cache bedient.
Ein Aufruf holt einen ganzen Ordner — niemals ein Aufruf pro Feed.
Harte Obergrenzen bei 10 Aufrufen pro Sitzung und 40 pro Tag, was dir Spielraum lässt. Die tägliche wird kontoweit gemessen, also zählt das eigene Browsen in Feedly dagegen — das ist beabsichtigt, damit ein Agent dich nicht aus deinem eigenen Reader aussperren kann.
Jede Antwort meldet, wie viel Kontingent übrig ist und wie veraltet die Daten sind. Unter 10 verbleibenden Aufrufen erhältst du eine Warnung.
Überprüfe deine eigene Obergrenze mit doctor — es druckt das Limit, das dein Konto tatsächlich
meldet. Wenn es etwas höher als 50 sagt, kannst du das Budget sicher in
Konfiguration erhöhen.
Artikel als gelesen markieren
mark_read ist dauerhaft. Feedly hat kein Rückgängig, und die Wiederherstellung bedeutet,
ihren Support zu kontaktieren. Also ist es standardmäßig deaktiviert.
Um das Markieren einzelner Artikel zu aktivieren:
[writes]
enabled = trueUm auch das Markieren eines gesamten Ordners auf einmal zu erlauben — ein viel größerer Wirkungsbereich — musst du absichtlich einen zweiten Schalter aktivieren:
[writes]
enabled = true
bulk_mark_read = trueDas Abbestellen ist überhaupt nicht implementiert, absichtlich. Tu das in Feedly.
Fehlerbehebung
doctor sagt, das Token fehlt
Der Server sucht in dieser Reihenfolge: die FEEDLY_TOKEN-Umgebungsvariable, dann
die Datei, die durch feedly.token_file benannt ist. Bestätige, dass dein Token das erreicht hat,
was du verwendet hast — eine häufige Ursache ist das Bearbeiten der Konfigurationsdatei, während Claude Desktop
eine leere Umgebungsvariable übergibt, die darüber gewinnt.
„Token abgelaufen" oder 401
Kostenlose Kontotokens halten etwa 30 Tage. Wiederhole Schritt 1 und aktualisiere das Token dort, wo du es gespeichert hast. Das ist erwartet und wird weiterhin passieren; es ist kein Fehler.
Claude sieht die Tools nicht
Beende und öffne Claude Desktop vollständig neu — ein Neustart des Fensters lädt MCP-Server
nicht neu. Überprüfe dann, ob dein JSON gültig ist (ein nachgestelltes Komma ist der übliche Übeltäter),
und dass node --version 20 oder höher meldet.
„Rate limit exceeded" (429)
Du hast dein Feedly-Kontingent für den Tag aufgebraucht. Es setzt sich nach Feedlys Zeitplan zurück; die Fehlermeldung enthält die Reset-Zeit. Der Server wird nicht automatisch erneut versuchen — ein erneuter Versuch würde das Loch nur tiefer graben.
„Daily budget exhausted"
Anders als oben: Dies ist die Obergrenze dieses Tools, nicht Feedlys, und du
hast noch echtes Kontingent übrig. Erhöhe budget.daily_calls, wenn du mehr willst.
Ein Ordner ist „außerhalb des konfigurierten Scopes"
scope.include_folders ist gesetzt und dieser Ordner ist nicht darin. Füge ihn hinzu oder leere
die Liste, um alles zu erlauben.
Zwischengespeicherte Daten scheinen zu einem anderen Konto zu gehören
Leere den Cache und versuche es erneut:
rm -rf ~/.cache/feedly-mcpEntwicklung
npm run build # compile to dist/
npm test # 104 tests, no API calls
npm run typecheck # tsc --noEmitEs gibt auch einen End-to-End-Check, der den gebauten Server über stdio als echten MCP-Client antreibt und jedes Tool gegen dein Konto ausübt. Es kostet ein paar API-Aufrufe aus den täglichen 50 und druckt das verbleibende Kontingent, während es läuft:
node --env-file=.env scripts/smoke.mjsmark_read wird nur in seinen Verweigerungspfaden ausgeübt, dort und überall sonst.
Es ist unumkehrbar, also gibt es keinen sicheren Weg, den Erfolgspfad zu testen.
Mitwirken
Issues und Pull-Requests sind willkommen. Die Design-Begründung — einschließlich der Funktionen, die bewusst ausgeschlossen sind — lebt in feedlymcpspec.md. Lies es, bevor du eine Funktion vorschlägst; wenn deine Idee in der „nicht im Umfang"-Liste ist, ist das eine Entscheidung und kein Versehen, obwohl du gerne darüber diskutieren kannst.
Die Spezifikation und diese Dokumente sind der Vertrag. Wenn du eine Rückgabeform oder einen Konfigurationsschlüssel änderst, ändere beide zusammen oder keines.
Lizenz
MIT
Available Tools
6 toolsget_articlesget_articles (unavailable — configuration error)CRead-only
feedly-mcp could not start: No Feedly token found. Set the FEEDLY_TOKEN environment variable, or write the token to a file and point feedly.token_file at it. Looked in: FEEDLY_TOKEN, /root/.config/feedly-mcp/token. Get a token at https://feedly.com/v3/auth/dev
Nothing can be read from Feedly until this is fixed. Run "feedly-mcp doctor" for the full check. This is a local configuration problem — do not work around it by fetching the news another way.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint=true already declared, the description does add genuine behavioral context: the exact auth requirement (FEEDLY_TOKEN or a token file), the paths checked, and the fact that all reads fail until configured. That is real transparency about preconditions, though it describes a broken-server state rather than the tool's actual read behavior (pagination, limits, filters) when functioning.
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 error text is front-loaded with the fix and wastes little, but as a tool description it is entirely off-purpose — every sentence is about configuration remediation rather than the tool. Structure is fine; relevance to the tool's job is absent.
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?
Nothing an agent needs to invoke get_articles is present: no return format, no filters (unread counts, feed/folder scoping), no relationship to siblings. For a read tool with no output schema and five sibling read tools, the description is completely inadequate.
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?
The tool takes zero parameters and schema coverage is 100%, so there is no parameter semantics for the description to add. Baseline 4 applies; no penalty for omitting nonexistent parameter docs.
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 never states what get_articles does. It is an MCP startup failure notice about a missing Feedly token, so an agent learns nothing about the tool's verb or resource, and it cannot be distinguished from its siblings (search_feeds, unread_counts, etc.). This is a placeholder error, not a purpose statement.
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?
It does give one useful operational instruction — 'nothing can be read from Feedly until this is fixed' and 'do not work around it by fetching the news another way' — which tells the agent the tool is unavailable. But it offers no routing guidance against the sibling tools it would otherwise be chosen over, so it is not usage guidance in the normal sense.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_feedslist_feeds (unavailable — configuration error)CRead-only
feedly-mcp could not start: No Feedly token found. Set the FEEDLY_TOKEN environment variable, or write the token to a file and point feedly.token_file at it. Looked in: FEEDLY_TOKEN, /root/.config/feedly-mcp/token. Get a token at https://feedly.com/v3/auth/dev
Nothing can be read from Feedly until this is fixed. Run "feedly-mcp doctor" for the full check. This is a local configuration problem — do not work around it by fetching the news another way.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true is not contradicted — the text confirms nothing can be read. It does surface one genuinely useful behavioral fact (the server is unavailable and why), but it discloses nothing about the tool's actual runtime behavior, return shape, or limits once configured. For a definition that can never execute, this is minimal.
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 failure cause is front-loaded, which is good, but three sentences are spent on remediation paths (env var, token file, lookup locations, URL, doctor command) that belong in setup documentation, not a tool definition an agent reads at call time.
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 tool that is supposed to list feeds in a family of six Feedly tools, the description supplies no purpose, no scope, and no relationship to siblings. It is complete only as an error notice, not as a tool definition.
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?
The schema has zero parameters, so per the baseline rule a 4 applies. There is nothing for the description to clarify or compensate for on this dimension.
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 never states what list_feeds does. It is entirely an installation/configuration error message about a missing FEEDLY_TOKEN, so an agent learns nothing about the tool's verb, resource, or scope relative to siblings like get_articles or search_feeds. Misleading-by-omission at best.
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?
It gives operational instructions (set FEEDLY_TOKEN, run the doctor, don't work around it) but zero guidance on when to select this tool versus its five siblings. The only 'when' implied is 'never, until you fix config', which is not tool-selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_folderslist_folders (unavailable — configuration error)DRead-only
feedly-mcp could not start: No Feedly token found. Set the FEEDLY_TOKEN environment variable, or write the token to a file and point feedly.token_file at it. Looked in: FEEDLY_TOKEN, /root/.config/feedly-mcp/token. Get a token at https://feedly.com/v3/auth/dev
Nothing can be read from Feedly until this is fixed. Run "feedly-mcp doctor" for the full check. This is a local configuration problem — do not work around it by fetching the news another way.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as read-only and the text does not contradict that, but it discloses nothing about the tool's actual behavior — no return shape, pagination, or auth flow for the tool. It describes the server's failed state, not the operation.
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 text is readable and front-loaded, but every sentence is about an environment failure and none earns its place as a tool definition. It is well-organized for an error message and inappropriate as a description.
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 zero-parameter, read-only listing tool with no output schema, an agent still needs to know what gets listed. The description supplies none of that, leaving the definition unusable for tool selection.
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?
The tool takes zero parameters, so there is nothing for the description to clarify; the baseline for a parameterless tool applies. No parameter-level information is missing or 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?
The description never states what list_folders does. It is an MCP startup-failure message about a missing Feedly token, so an agent cannot tell that this tool lists folders, nor distinguish it from list_feeds or unread_counts.
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 only guidance is operational ('run feedly-mcp doctor', 'do not fetch the news another way'), which concerns fixing a local configuration problem rather than when to select this tool versus its siblings. No use context for the tool itself is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mark_readmark_read (unavailable — configuration error)DRead-only
feedly-mcp could not start: No Feedly token found. Set the FEEDLY_TOKEN environment variable, or write the token to a file and point feedly.token_file at it. Looked in: FEEDLY_TOKEN, /root/.config/feedly-mcp/token. Get a token at https://feedly.com/v3/auth/dev
Nothing can be read from Feedly until this is fixed. Run "feedly-mcp doctor" for the full check. This is a local configuration problem — do not work around it by fetching the news another way.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Read-only annotations are present and uncontradicted, and the description does disclose a real behavioral fact: the tool is unusable until FEEDLY_TOKEN is configured, and it names the paths checked. But it says nothing about what the tool actually does once working (what gets marked, whether the change is reversible), so the disclosure is incidental rather than useful tool 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?
The text is organized in a workable order (problem, remedy, escalate to doctor), but it spends every sentence on configuration and none on the tool itself, so nothing is front-loaded that helps an agent select or invoke it.
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?
There is no output schema and no parameters, so very little description is strictly required, and it correctly signals the tool is dead. However, as a definition for mark_read it is effectively empty: a reader learns the server is broken but never what the tool is for.
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?
The schema has zero parameters at 100% coverage, which sets a baseline of 4. The description neither needs to nor does add parameter meaning, so this dimension is unburdened.
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 never states what mark_read does. It is entirely a configuration-failure notice ('could not start: No Feedly token found'), so an agent cannot learn the tool's verb or resource, let alone distinguish it from get_articles, unread_counts, or search_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 only guidance given is how to fix the environment and an instruction not to work around the failure. There is no statement of when to call mark_read versus any sibling tool, or what inputs select it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_feedssearch_feeds (unavailable — configuration error)CRead-only
feedly-mcp could not start: No Feedly token found. Set the FEEDLY_TOKEN environment variable, or write the token to a file and point feedly.token_file at it. Looked in: FEEDLY_TOKEN, /root/.config/feedly-mcp/token. Get a token at https://feedly.com/v3/auth/dev
Nothing can be read from Feedly until this is fixed. Run "feedly-mcp doctor" for the full check. This is a local configuration problem — do not work around it by fetching the news another way.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=true, but the description adds substantial context: a required FEEDLY_TOKEN auth prerequisite, the exact paths checked, a remediation URL, and the hard constraint that no read can succeed until fixed. This is strong behavioral disclosure beyond the annotation, though it describes failure state rather than the tool's normal 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?
The message is front-loaded with the failure and remediation, and every sentence is actionable (set token, look here, get a token, run doctor, don't work around). It is slightly verbose but not padded.
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 zero-parameter, no-output-schema tool, the failure context is complete enough to stop an agent from retrying blindly. What is missing is any statement of the tool's actual function once the config is repaired, leaving the definition incomplete as a tool description.
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?
The tool takes zero parameters, so the baseline is 4. There is nothing for the description to clarify about arguments.
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 never states what search_feeds does; it is entirely an error/startup-failure message. An agent reading it cannot tell whether the tool searches feeds, articles, or something else. The stated purpose is 'could not start,' which is misleading as a purpose statement.
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?
It does give one directive: don't work around the failure by fetching news another way, and run 'feedly-mcp doctor.' However, it gives no guidance on when to use search_feeds versus siblings like get_articles or list_feeds, which is the core usage question.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unread_countsunread_counts (unavailable — configuration error)CRead-only
feedly-mcp could not start: No Feedly token found. Set the FEEDLY_TOKEN environment variable, or write the token to a file and point feedly.token_file at it. Looked in: FEEDLY_TOKEN, /root/.config/feedly-mcp/token. Get a token at https://feedly.com/v3/auth/dev
Nothing can be read from Feedly until this is fixed. Run "feedly-mcp doctor" for the full check. This is a local configuration problem — do not work around it by fetching the news another way.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true is already in the annotations, and the description does not contradict it. The text is transparent about a failure mode (missing FEEDLY_TOKEN, searched locations, remediation URL), but it discloses nothing about this tool's actual runtime behavior — return shape, scope, or cost — so it cannot support correct invocation once the server works.
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 message is front-loaded and reasonably structured — problem, cause, locations searched, remediation, and a warning against workarounds. However it spends most of its length on token-file plumbing and a URL that do nothing to help an agent select or invoke unread_counts.
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?
There is no output schema, so the description would need to convey what unread_counts returns (e.g., unread counts per feed/folder) and its scope, and it does not. What it does explain completely is the configuration failure, which is not the information an agent needs to call this tool correctly.
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?
The tool takes zero parameters, so the baseline expectation is that no parameter explanation is needed. The description does not confuse this by inventing inputs, so 4 is appropriate; the surrounding config text is unrelated to parameters.
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 never states what unread_counts does. It announces that the whole feedly-mcp server failed to start because no token was found, so an agent learns nothing about the verb or resource of this specific tool. For a name like unread_counts, the reader must guess it returns unread article counts.
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?
It does give one directive — don't work around the failure by fetching news another way — and points to a doctor command, but this is remediation guidance for a broken server, not guidance on when to choose unread_counts over get_articles or search_feeds. Nothing routes the agent among the siblings.
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.
6 tool updates
v0.1.0- First observed
get_articles - First observed
list_feeds - First observed
list_folders - First observed
mark_read - First observed
search_feeds - First observed
unread_counts
TDQS
Scored across 6 tools
Tool names largely describe distinct actions on distinct resources (get_articles, mark_read, list_folders, list_feeds, search_feeds, unread_counts). The only mild overlap is search_feeds vs list_feeds and get_articles vs unread_counts, but names alone make intent discernible. Descriptions are unusable (identical startup errors), so disambiguation rests entirely on names.
Most tools follow a verb_noun snake_case pattern (get_articles, search_feeds, mark_read, list_folders, list_feeds). The one deviation is unread_counts, which is a noun phrase rather than an action, a minor inconsistency but still readable.
Six tools is a reasonable, well-scoped set for a Feedly reader covering reading, searching, folder/feed listing, and read-state. It is slightly lean for the domain but nothing feels padded or redundant.
The surface covers read-side operations and mark_read, but there are no operations to subscribe/unsubscribe feeds, create or edit folders, or save articles to boards for later, which are core Feedly workflows. Agents would hit dead ends for feed management tasks.
Maintenance
Related MCP Connectors
- platform7nOAuthtech.p7n
Connect Claude to your Platform7n workspaces — chat, links, and tasks. One-click OAuth.
Real-time Claude & Anthropic news from your own Claude — free, no API key.
Read, search and organize the RSS feeds you follow in Feeder. Tool calls need Feeder Plus.
Work on your own computers from Claude or ChatGPT: run commands, edit and search files.
Related MCP Servers
- AlicenseAqualityBmaintenanceModel Context Protocol Server for aggregating RSS feeds in Claude Desktop327Mozilla Public 2.0
- 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-
- FlicenseAqualityDmaintenanceAn MCP server that enables users to interact with their Feedbin RSS account directly through Claude. It provides tools for reading articles, managing read and starred states, and browsing subscribed feeds and tags.151-
- AlicenseNot gradedqualityDmaintenanceEnables reading from and optionally drafting to a Substack publication via Claude, using unofficial JSON endpoints and RSS feed.1MIT