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가 먼저 소진됩니다. 응답은 window_hours와 함께 covered_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을 계획하세요.

에이전트가 수다스럽다면 하루 약 8번의 대화에 해당하며, 할당량은 계정에 접촉하는 다른 모든 것과 공유됩니다 — 브라우저의 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

또한 빌드된 서버를 실제 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