feedly-mcp
feedly-mcp
Читайте свои подписки Feedly через Claude. Спросите «Что нового в моих AI-лентах?» и получите ответ, не открывая браузер.
Ещё не опубликовано. Сервер работает, и все шесть инструментов были протестированы на реальном аккаунте, но его нет на npm и нет релизов. Установка из исходников — этот путь работает сегодня;
npxи.mcpb— нет.
Что он делает
Шесть инструментов, которые позволяют агенту читать ваш аккаунт Feedly:
Инструмент | Что он даёт |
| ваши папки с количеством непрочитанных |
| ленты в папке |
| недавние статьи, очищенные и обрезанные |
| сколько ожидает, всего и по папкам |
| поиск новых источников для подписки |
| отметить статьи как прочитанные (по умолчанию выключено) |
Related MCP server: RSS Feed MCP Server
Чего он не делает
Это коннектор, а не приложение для чтения. Он преобразует запрос в вызов API Feedly и возвращает чистый ответ. Он не хранит ваши статьи, не создаёт поисковый архив, не ранжирует материалы со временем и не отправляет вам дайджесты.
Всё это хорошие вещи, которые можно захотеть — создавайте их поверх этого, в проекте Claude, навыке или запланированной задаче. Их отсутствие делает этот инструмент достаточно маленьким, чтобы ему можно было доверять.
Конфиденциальность
Всё работает на вашей собственной машине.
Ваш токен Feedly остаётся локальным. Он никогда не отправляется никуда, кроме
api.feedly.com.Никакого аккаунта у нас, никакого сервера посередине, никакой телеметрии.
Никакой информации о том, что вы читаете, не хранится, кроме кратковременного локального кеша.
Требования
Node.js 20 или новее — проверьте с помощью
node --versionАккаунт Feedly и API-токен (шаг 1 ниже)
Claude Desktop, Claude Code или любой другой MCP-клиент
Шаг 1 — Получите API-токен Feedly
Войдите в Feedly в своём браузере.
Перейдите по адресу https://feedly.com/v3/auth/dev.
Следуйте инструкциям, чтобы сгенерировать токен доступа разработчика.
Скопируйте токен в безопасное место для следующего шага. Это пароль — относитесь к нему соответственно.
Две вещи, которые нужно знать, прежде чем идти дальше.
Токены истекают. На бесплатном аккаунте токен разработчика действует около 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. Скачайте feedly-mcp.mcpb со страницы релизов и перетащите его в Настройки → Расширения. Появится форма настроек; токен сохраняется в связку ключей вашей операционной системы, а не в текстовый файл, и всё в Конфигурации можно редактировать из этой формы.
Из npm. npx -y feedly-mcp в качестве команды, с FEEDLY_TOKEN в блоке env клиента или с указанным выше файлом токена.
Шаг 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 никогда не выводит ваш токен. Используйте список папок, который он даёт, при заполнении scope на шаге 4.
Если что-то не так, перейдите к Устранению неполадок.
Шаг 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 - Research на этой неделе?»
«Сколько у меня непрочитанных статей, разбитых по папкам?»
«Найди мне ленты о локальном инференсе LLM»
«Суммируй топ-5 по вовлечённости за последние 8 часов»
Вам не нужно знать ID папок. Названия папок работают, и Claude может их перечислить.
Полная справка по инструментам: docs/tools.md
Ограничения, о которых стоит знать, прежде чем строить на этом
Они получены при работе с реальным, активным аккаунтом, а не из теории.
Объём побеждает ваше временное окно. В папке, производящей ~42 статьи в час, запрос за 24 часа с лимитом 320 на самом деле покрывает менее восьми — limit заканчивается первым. В ответах указывается covered_hours вместе с window_hours, чтобы разрыв был виден, но увеличение лимита обычно неправильное решение: это стоит больше квоты и контекста, чтобы немного сдвинуть слепое пятно. Сузьте папку.
Scope работает с папками, а не с лентами. Если один шумный источник и один отличный источник находятся в одной папке, никакая конфигурация здесь их не разделит — на аккаунте, на котором это тестировалось, одна лента дала 140 из 320 статей и ни одной полезной, а лента с 2 статьями дала большинство полезных. Решением было отписаться в Feedly. Практический порядок: сначала удалите бесполезные ленты, затем установите scope. В обратном порядке вы выбрасываете хорошие источники, чтобы избавиться от плохих.
Счётчики, сообщающие о результате записи, заслуживают подозрения. Feedly не возвращает количество для отметки на уровне папки, поэтому mark_read измеряет общее количество непрочитанных до и после. Это близко, но не точно — собственные счётчики Feedly немного отстают. Для всего, что важно, проверяйте unread_counts самостоятельно.
Окно очистки старше вашего бэклога не отмечает ничего. Непрочитанное стабилизируется примерно на window_days × articles_per_day. 7-дневный older_than при ~570 статьях в день удерживает бэклог около 4000 навсегда, как часто бы вы ни чистили.
Планируйте бюджет по ответу, а не по плану. Каждый результат содержит calls_left_today и calls_left_session. Читайте их и адаптируйтесь, а не решайте количество вызовов заранее — дневная цифра относится ко всему аккаунту, поэтому ваше собственное просмотр может изменить её под вами.
Ваша API-квота — пожалуйста, прочтите это
Ваша дневная API-квота мала — меньше, чем предполагает документация Feedly.
Измерено на живом API: токен разработчика на платном аккаунте Pro Plus сообщает о пределе 50 вызовов в день, сброс около полуночи UTC. Собственная документация Feedly описывает 250 на бесплатном и 500 на Pro. Планируйте на 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 и обновите токен там, где вы его сохранили. Это ожидаемо и будет повторяться; это не ошибка.
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Также есть сквозная проверка, которая запускает собранный сервер через stdio как настоящий MCP-клиент и проверяет каждый инструмент на вашем аккаунте. Это стоит несколько вызовов API из дневных 50 и выводит оставшуюся квоту по ходу:
node --env-file=.env scripts/smoke.mjsmark_read проверяется только в путях отказа, там и везде. Она необратима, поэтому нет безопасного способа протестировать путь успеха.
Вклад
Приветствуются вопросы и pull request'ы. Обоснование дизайна — включая то, какие функции намеренно исключены — находится в 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