Skip to main content
Glama
fredrsat

feedly-mcp

by fredrsat

feedly-mcp

从 Claude 阅读你的 Feedly 订阅。问 "我的 AI 订阅源有什么新内容?" 就能得到答案,无需打开浏览器。

尚未发布。 服务器可以工作,所有六个工具都已在真实账户上测试过,但它不在 npm 上,也没有发布版本。 从源码安装 — 这条路径今天可用;npx 和 .mcpb 的路径还不行。


功能

六个工具,让代理可以读取你的 Feedly 账户:

工具

提供的内容

list_folders

你的文件夹,以及未读计数

list_feeds

文件夹中的订阅源

get_articles

最近的文章,已清理并截断

unread_counts

有多少待读内容,总计和按文件夹

search_feeds

查找要订阅的新来源

mark_read

将文章标记为已读 (默认关闭)

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 令牌

  1. 在浏览器中登录 Feedly。

  2. 访问 https://feedly.com/v3/auth/dev。

  3. 按照那里的说明生成开发者访问令牌。

  4. 将令牌复制到安全的地方,以备下一步使用。它就像密码一样——请像对待密码一样对待它。

在继续之前,你需要知道两件事。

令牌会过期。 在免费账户上,开发者令牌的有效期约为 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 ... ✔ Connected

对于 Claude 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 并将其拖入 设置 → 扩展。会出现一个设置表单;令牌会进入你的操作系统钥匙串,而不是明文文件,配置 中的所有内容都可以从该表单编辑。

从 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 call

设置 include_folders 的两个原因:

  • 隐私。 你的工作文件夹不需要被代理读取。

  • 专注。 更少的文件夹意味着更短的答案,以及更少的上下文花在你没有询问的材料上。

如果你通过选项 A 安装,请在扩展的设置表单中编辑这些设置——相同的选项,无需查找文件。

完整设置列表:docs/configuration.md


使用它

直接问。一些效果不错的问题:

  • "我的 AI 订阅源自昨天以来有什么新内容?"

  • "本周 AI - 研究领域有什么值得阅读的?"

  • "我有多少未读文章,按文件夹分类?"

  • "帮我找关于本地 LLM 推理的订阅源"

  • "总结过去 8 小时内参与度最高的前 5 条"

你不需要知道文件夹 ID。文件夹名称即可,Claude 可以列出它们。

完整工具参考:docs/tools.md


在基于此构建之前值得了解的局限

这些来自在真实、繁忙的账户上运行的经验,而不是理论。

数量超过你的时间窗口。 在一个每小时产生约 42 篇文章的文件夹中,请求 24 小时并设置限制为 320 实际上只覆盖了不到 8 小时——limit 首先用尽。响应会报告 covered_hours 和 window_hours,以便看到差距,但提高限制通常不是正确的修复方法:它会消耗更多的配额和上下文,只是稍微移动盲点。缩小文件夹范围。

范围作用于文件夹,而不是订阅源。 如果一个嘈杂的来源和一个优秀的来源位于同一个文件夹中,这里的任何配置都无法将它们分开——在测试的账户上,一个订阅源产生了 320 篇文章中的 140 篇,但没有一篇有用的故事,而一个只有 2 篇文章的订阅源却产生了大部分有用的故事。解决方案是在 Feedly 中取消订阅。实际顺序:先删除无用的订阅源,然后设置范围。反过来会为了摆脱坏来源而丢弃好来源。

报告写入操作结果的计数值得怀疑。 Feedly 对文件夹级别的标记不返回计数,因此 mark_read 测量前后的未读总数。这很接近,但不精确——Feedly 自己的计数会滞后片刻。对于任何重要的事情,请自己检查 unread_counts。

清理窗口早于你的积压量时,不会标记任何内容。 未读量大约稳定在 window_days × articles_per_day。每天约 570 篇文章的情况下,7 天的 older_than 会使积压量永远保持在 4000 左右,无论你多久清理一次。

根据响应来预算,而不是根据计划。 每个结果都带有 calls_left_today 和 calls_left_session。阅读它们并调整,而不是预先决定调用次数——每日数字是账户范围的,因此你自己的浏览会在你不知情的情况下改变它。


你的 API 配额 — 请阅读此内容

你的每日 API 配额很小——比 Feedly 文档所建议的要小。

根据实时 API 测量,付费 Pro Plus 账户上的开发者令牌报告的上限是每天 50 次调用,大约在 UTC 午夜重置。Feedly 自己的文档描述免费版为 250 次,Pro 版为 500 次。请按 50 次计划。

如果代理话多,这大约相当于每天八次对话,而且配额与所有其他接触你账户的操作共享——包括浏览器中的 Feedly,如果代理耗尽配额,它也会停止工作。

因此,这个工具代表你保护预算:

  • 文件夹和订阅列表在磁盘上缓存 24 小时。

  • 15 分钟内的重复相同请求从缓存提供。

  • 一次调用获取整个文件夹——绝不会每个订阅源调用一次。

  • 每次会话 10 次调用和每天 40 次的硬性上限,为你留出空间。每日上限是账户范围的,因此你自己浏览 Feedly 也会计入其中——这是故意的,这样代理就无法将你锁在自己的阅读器之外。

  • 每个响应都会报告剩余配额和数据的新鲜程度。剩余调用低于 10 次时,你会收到警告。

使用 doctor 检查你自己的上限——它会打印你的账户实际报告的限制。如果它显示高于 50,你可以安全地提高 配置 中的预算。


将文章标记为已读

mark_read 是永久性的。Feedly 没有撤销功能,恢复意味着联系他们的支持。因此它默认禁用。

要启用单篇文章标记:

[writes]
enabled = true

要同时允许一次将整个文件夹标记为已读——影响范围大得多——你必须有意打开第二个开关:

[writes]
enabled = true
bulk_mark_read = true

取消订阅根本没有实现,这是故意的。请在 Feedly 中执行该操作。


故障排除

doctor 提示令牌缺失

服务器按以下顺序查找:FEEDLY_TOKEN 环境变量,然后是 feedly.token_file 指定的文件。确认你的令牌到达了你使用的那个位置——一个常见原因是编辑配置文件时,Claude Desktop 传递了一个空的环境变量,该变量优先于配置文件。

"令牌已过期" 或 401

免费账户的令牌大约持续 30 天。重复 步骤 1 并更新你存储的令牌。这是预期情况,会持续发生;这不是 bug。

Claude 看不到工具

完全退出并重新打开 Claude Desktop——窗口重启不会重新加载 MCP 服务器。然后检查你的 JSON 是否有效(尾随逗号是常见原因),以及 node --version 报告 20 或更高版本。

"超出速率限制" (429)

你已用完当天的 Feedly 配额。它会按照 Feedly 的时间表重置;错误消息中包含重置时间。服务器不会自动重试——重试只会让情况更糟。

"每日预算已用尽"

与上述不同:这是这个工具的上限,不是 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 驱动构建的服务器,并针对你的账户测试每个工具。它会消耗每日 50 次调用中的少量 API 调用,并在过程中打印剩余配额:

node --env-file=.env scripts/smoke.mjs

mark_read 只在其拒绝路径中被测试,那里和其他地方都是如此。它是不可逆的,因此没有安全的方法来测试成功路径。

贡献

欢迎提交问题和拉取请求。设计原理——包括哪些功能被有意排除——在 feedlymcpspec.md 中。在提出功能之前请阅读它;如果你的想法在“不在范围内”列表中,那是一个决定而不是疏忽,尽管你欢迎对此提出异议。

规范和这些文档是契约。如果你更改了返回形状或配置键,请同时更改两者,或者都不更改。

许可证

MIT

Available Tools

6 tools
get_articlesget_articles (unavailable — configuration error)C
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.3/5.0
Behavior3/5

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.

Conciseness3/5

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.

Completeness1/5

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.

Parameters4/5

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.

Purpose1/5

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.

Usage Guidelines2/5

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)C
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2/5.0
Behavior2/5

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.

Conciseness2/5

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.

Completeness1/5

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.

Parameters4/5

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.

Purpose1/5

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.

Usage Guidelines2/5

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)D
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

D1.6/5.0
Behavior1/5

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.

Conciseness2/5

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.

Completeness1/5

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.

Parameters4/5

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.

Purpose1/5

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.

Usage Guidelines1/5

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)D
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

D1.9/5.0
Behavior2/5

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.

Conciseness2/5

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.

Completeness2/5

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.

Parameters4/5

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.

Purpose1/5

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.

Usage Guidelines1/5

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)C
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.8/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose1/5

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.

Usage Guidelines2/5

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)C
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.2/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters4/5

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.

Purpose1/5

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.

Usage Guidelines2/5

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.

  1. 6 tool updatesv0.1.0
    • First observedget_articles
    • First observedlist_feeds
    • First observedlist_folders
    • First observedmark_read
    • First observedsearch_feeds
    • First observedunread_counts

TDQS

C2.5/5.0

Scored across 6 tools

Disambiguation4/5

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.

Naming Consistency4/5

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.

Tool Count4/5

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.

Completeness3/5

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

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers