feedly-mcp
feedly-mcp
Claude から Feedly の購読を読み取ります。「AI フィードに何か新しいものは?」 と尋ねるだけで、ブラウザを開かずに答えが得られます。
まだ公開されていません。 サーバーは動作し、6 つのツールはすべて実アカウントでテスト済みですが、npm には公開されておらず、リリースもありません。 ソースからインストール — その方法は今日から使えます。
npxと.mcpbの方法はまだ使えません。
できること
エージェントが Feedly アカウントを読み取るための 6 つのツール:
ツール | 提供されるもの |
| フォルダと未読数を取得 |
| フォルダ内のフィードを取得 |
| 最近の記事をクリーンアップして取得 |
| 未読の合計とフォルダごとの内訳を取得 |
| 購読する新しいソースを検索 |
| 記事を既読にする (デフォルトではオフ) |
Related MCP server: RSS Feed MCP Server
できないこと
これはコネクタであり、リーダーアプリではありません。リクエストを Feedly API 呼び出しに変換し、クリーンな回答を返します。記事を保存したり、検索可能なアーカイブを構築したり、時間経過でランク付けしたり、ダイジェストを送信したりはしません。
これらはすべて良い機能です — これを 上に 構築してください。Claude Project、スキル、またはスケジュールタスクとして。それらを除外することで、このツールは信頼できるほど小さく保たれています。
プライバシー
すべてはあなた自身のマシン上で実行されます。
Feedly トークンはローカルに留まります。
api.feedly.com以外には送信されません。当社のアカウントは不要、中間サーバーもなし、テレメトリもなし。
あなたが読んだ内容は、短期間のローカルキャッシュ以外には保存されません。
要件
Node.js 20 以上 —
node --versionで確認Feedly アカウント と API トークン(下記ステップ 1)
Claude Desktop、Claude Code、またはその他の MCP クライアント
ステップ 1 — Feedly API トークンを取得
ブラウザで Feedly にログインします。
https://feedly.com/v3/auth/dev にアクセスします。
そこに記載されている手順に従って、開発者アクセストークンを生成します。
次のステップのためにトークンを安全な場所にコピーします。これはパスワードです — そのように扱ってください。
先に進む前に知っておくべきことが 2 つあります。
トークンは期限切れになります。 無料アカウントでは、開発者トークンの有効期限は約 30 日 です。その後、このステップを繰り返します。有料プランでは自動更新が可能です。これは Feedly のポリシーであり、このツールで回避できるものではありません。
トークンの利用可能性はプランに依存します。 Feedly の公式ドキュメントでは、どのアカウント階層が API トークンを自己発行できるかについて一貫性がありません。上記のページでトークンが取得できない場合、このコネクタはあなたのアカウントでは機能せず、Feedly に連絡する以外に回避策はありません。
ステップ 2 — インストール
ソースからビルド — 現在機能する唯一の方法
git clone https://github.com/fredrsat/feedly-mcp
cd feedly-mcp
npm install
npm run build次に、トークンを自分だけが読めるファイルに保存します。クライアント設定に平文で入れる必要がなくなります:
mkdir -p ~/.config/feedly-mcp
printf '%s' 'paste-your-token-here' > ~/.config/feedly-mcp/token
chmod 600 ~/.config/feedly-mcp/tokenサーバーは、そのファイルがグループまたは全体に読み取り可能な場合、読み取りを拒否し、修正方法を指示します。
ビルドされたエントリポイントへの 絶対パス を使用して、クライアントに登録します:
# 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 ... ✔ ConnectedClaude Desktop の場合は、~/Library/Application Support/Claude/claude_desktop_config.json(macOS)または %APPDATA%\Claude\claude_desktop_config.json(Windows)にこれを追加し、アプリケーションを終了して再度開きます — ウィンドウを閉じるだけでは MCP サーバーは再読み込みされません:
{
"mcpServers": {
"feedly": {
"command": "node",
"args": ["/absolute/path/to/feedly-mcp/dist/cli.js"]
}
}
}mcpServers の下にすでに他のサーバーがありますか? ブロックを置き換えるのではなく、feedly をその隣に追加してください。
後でリポジトリを移動した場合は、再登録してください — パスは絶対パスです。その場で再ビルドすると自動的に認識されます。
公開後
どちらもまだ機能しません。これらは最初のリリース後のインストールの様子です。
ワンクリック、Claude Desktop。 Releases ページから feedly-mcp.mcpb をダウンロードし、Settings → Extensions にドラッグします。設定フォームが表示されます。トークンは平文ファイルではなく OS のキーチェーンに保存され、Configuration のすべてがそのフォームから編集可能です。
npm から。 コマンドとして npx -y feedly-mcp を使用し、クライアントの env ブロックに FEEDLY_TOKEN を設定するか、上記のトークンファイルを使用します。
ステップ 3 — 動作確認
Claude に何かを尋ねる前に、ターミナルから接続を確認してください:
node dist/cli.js doctor正常な結果は次のようになります:
✓ 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.便利なフラグ: -v は解決されたすべての設定とその出所を出力し、--refresh は最初にキャッシュをクリアします。
doctor はトークンを決して出力しません。ステップ 4 で scope を入力するときに、それが提供するフォルダリストを使用してください。
問題がある場合は、トラブルシューティング にジャンプしてください。
ステップ 4 — 設定(オプション)
デフォルトは妥当であり、これを完全にスキップできます。早い段階で確認する価値がある唯一の設定は scope です — Claude が表示できるフォルダを指定します。
~/.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 callinclude_folders を設定する理由は 2 つあります:
プライバシー。 仕事用フォルダはエージェントに読み取られる必要はありません。
集中。 フォルダが少ないほど、回答が短くなり、尋ねていない資料に費やすコンテキストが減ります。
オプション A でインストールした場合は、代わりに拡張機能の設定フォームでこれらを編集してください — 同じオプションで、ファイルを探す必要はありません。
設定の完全なリスト: docs/configuration.md
使用方法
ただ尋ねてください。うまく機能する例:
「昨日から AI フィードに何か新しいものは?」
「今週の AI - Research で読む価値のあるものは?」
「未読記事はフォルダごとに何件ある?」
「ローカル LLM 推論に関するフィードを探して」
「過去 8 時間のエンゲージメント上位 5 件を要約して」
フォルダ ID を知る必要はありません。フォルダ名で機能し、Claude がリストを表示できます。
ツールの完全なリファレンス: docs/tools.md
これを基に構築する前に知っておくべき制限
これらは理論ではなく、実際の忙しいアカウントで実行した結果から得られたものです。
ボリュームは時間枠を上回ります。 1 時間に約 42 記事を生成するフォルダで、24 時間をリミット 320 で要求すると、実際には 8 時間未満しかカバーされません — limit が先に尽きます。レスポンスは window_hours とともに covered_hours を報告するため、ギャップは見えますが、リミットを上げるのは通常間違った修正です: 盲点をわずかに移動するために、より多くのクォータとコンテキストを消費します。フォルダを絞り込んでください。
スコープはフォルダ単位で、フィード単位ではありません。 1 つのノイズの多いソースと 1 つの優れたソースが同じフォルダにある場合、ここでの設定ではそれらを分離できません — テストしたアカウントでは、単一のフィードが 320 記事中 140 記事を生成し、有用なストーリーはゼロでしたが、2 記事のフィードがほとんどの有用なストーリーを生成しました。修正は Feedly で購読解除することでした。実用的な順序: まず無駄なフィードを削除し、次にスコープを設定します。逆の順序では、悪いフィードから逃れるために良いソースを捨てることになります。
書き込みが何をしたかを報告するカウントは疑うべきです。 Feedly はフォルダレベルのマーキングに対してカウントを返さないため、mark_read は前後の未読合計を測定します。これは正確ではなく、近似です — Feedly 自身のカウントは少し遅れます。重要なことについては、自分で unread_counts を確認してください。
バックログより古いクリーンアップウィンドウは何もマークしません。 未読はおおよそ window_days × articles_per_day で安定します。1 日約 570 記事に対して 7 日間の older_than は、どれだけ頻繁に掃除しても、バックログを約 4000 に保ちます。
計画ではなくレスポンスから予算を立ててください。 すべての結果には calls_left_today と calls_left_session が含まれています。それらを読んで適応してください。事前に呼び出し回数を決めないでください — 日次数値はアカウント全体で共有されるため、自分自身のブラウジングがそれを下で動かします。
API クォータ — 必ずお読みください
あなたの 1 日あたりの API クォータは小さいです — Feedly のドキュメントが示唆するよりも小さいです。
ライブ API で測定したところ、有料 Pro Plus アカウントの開発者トークンは、1 日あたり 50 回の呼び出し の上限を報告し、UTC の真夜中頃にリセットされます。Feedly 自身のドキュメントでは、無料で 250、Pro で 500 と説明されています。50 を想定してください。
これは、エージェントがおしゃべりな場合、1 日あたり約 8 回の会話に相当し、クォータはアカウントに触れる他のすべてのものと共有されます — ブラウザでの Feedly も含まれます。エージェントがそれを枯渇させると、ブラウザでの Feedly も機能しなくなります。
したがって、このツールはあなたに代わって予算を守ります:
フォルダと購読リストは 24 時間ディスクにキャッシュされます。
15 分以内の同一のリクエストはキャッシュから提供されます。
1 回の呼び出しでフォルダ全体を取得します — フィードごとに 1 回の呼び出しはありません。
セッションあたり 10 回、1 日あたり 40 回のハード上限があり、あなたのために余裕を残します。日次はアカウント全体で測定されるため、自分で Feedly を閲覧することもカウントされます — これは意図的で、エージェントがあなた自身のリーダーからあなたを締め出せないようにするためです。
すべてのレスポンスは、残りのクォータとデータの鮮度を報告します。残り 10 回未満の場合、警告が表示されます。
doctor で自分の上限を確認してください — アカウントが実際に報告する制限を出力します。50 より高い場合は、設定 で予算を安全に引き上げられます。
記事を既読にする
mark_read は 永続的 です。Feedly には元に戻す機能がなく、復旧にはサポートへのメールが必要です。そのため、デフォルトでは無効になっています。
単一記事のマーキングを有効にするには:
[writes]
enabled = trueフォルダ全体を一度に既読にする — はるかに大きな影響範囲 — を許可するには、2 番目のスイッチを意図的にオンにする必要があります:
[writes]
enabled = true
bulk_mark_read = true購読解除は意図的に実装されていません。それは Feedly で行ってください。
トラブルシューティング
doctor がトークンが見つからないと言う
サーバーは次の順序で探します: FEEDLY_TOKEN 環境変数、次に feedly.token_file で指定されたファイル。使用した方にトークンが届いていることを確認してください — 一般的な原因は、Claude Desktop が空の環境変数を渡し、それが設定ファイルより優先されることです。
「トークンが期限切れ」または 401
無料アカウントのトークンは約 30 日間有効です。ステップ 1 を繰り返し、保存した場所のトークンを更新してください。これは予想されており、今後も発生します。バグではありません。
Claude がツールを認識しない
Claude Desktop を完全に終了して再度開いてください — ウィンドウの再起動では MCP サーバーは再読み込みされません。次に、JSON が有効であることを確認してください(末尾のカンマがよくある原因です)、そして node --version が 20 以上を報告することを確認してください。
「レート制限を超えました」(429)
1 日分の Feedly クォータを使い切りました。Feedly のスケジュールでリセットされます。エラーメッセージにはリセット時刻が含まれています。サーバーは自動的に再試行しません — 再試行すると穴を深くするだけです。
「1 日の予算を使い切りました」
上記とは異なります: これは このツールの 上限であり、Feedly のものではなく、実際のクォータはまだ残っています。さらに必要な場合は budget.daily_calls を引き上げてください。
フォルダが「設定されたスコープ外」である
scope.include_folders が設定されており、そのフォルダが含まれていません。追加するか、リストをクリアしてすべてを許可してください。
キャッシュされたデータが別のアカウントのものに見える
キャッシュをクリアして再試行してください:
rm -rf ~/.cache/feedly-mcp開発
npm run build # compile to dist/
npm test # 104 tests, no API calls
npm run typecheck # tsc --noEmitまた、ビルドされたサーバーを実際の MCP クライアントとして stdio 経由で駆動し、すべてのツールをあなたのアカウントに対して実行するエンドツーエンドのチェックもあります。1 日 50 回のうち数回の API 呼び出しを消費し、進行中に残りのクォータを出力します:
node --env-file=.env scripts/smoke.mjsmark_read は、そこでも他の場所でも、拒否パスのみでテストされます。これは不可逆的であるため、成功パスを安全にテストする方法はありません。
貢献
Issue とプルリクエストを歓迎します。設計の根拠 — 意図的に除外された機能を含む — は feedlymcpspec.md にあります。機能を提案する前に読んでください。あなたのアイデアが「スコープ外」リストにある場合、それは見落としではなく決定ですが、それに対して議論することは歓迎します。
仕様とこれらのドキュメントは契約です。戻り値の形状や設定キーを変更する場合は、両方を一緒に変更するか、どちらも変更しないでください。
ライセンス
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