feedly-mcp
feedly-mcp
Lee tus suscripciones de Feedly desde Claude. Pregunta "¿qué hay de nuevo en mis fuentes de IA?" y obtén una respuesta, sin abrir un navegador.
Aún no publicado. El servidor funciona y las seis herramientas se han probado contra una cuenta real, pero no está en npm y no hay versiones publicadas. Instalar desde el código fuente — esa ruta funciona hoy; las de
npxy.mcpbno.
Qué hace
Seis herramientas que permiten a un agente leer tu cuenta de Feedly:
Herramienta | Lo que te ofrece |
| tus carpetas, con recuentos de no leídos |
| las fuentes en una carpeta |
| artículos recientes, limpiados y recortados |
| cuánto hay pendiente, total y por carpeta |
| encontrar nuevas fuentes para suscribirte |
| marcar artículos como leídos (desactivado por defecto) |
Related MCP server: RSS Feed MCP Server
Qué no hace
Esto es un conector, no una aplicación de lectura. Traduce una solicitud en una llamada a la API de Feedly y devuelve una respuesta limpia. No almacena tus artículos, no construye un archivo buscable, no clasifica cosas a lo largo del tiempo ni te envía resúmenes.
Todas esas son cosas buenas de querer — constrúyelas sobre esto, en un Proyecto de Claude, una habilidad o una tarea programada. Mantenerlas fuera es lo que hace que esto sea lo suficientemente pequeño como para confiar en ello.
Privacidad
Todo se ejecuta en tu propia máquina.
Tu token de Feedly permanece local. Nunca se envía a ningún sitio excepto a
api.feedly.com.No hay cuenta con nosotros, ni servidor intermedio, ni telemetría.
Nada sobre lo que lees se almacena más allá de una caché local de corta duración.
Requisitos
Node.js 20 o superior — compruébalo con
node --versionUna cuenta de Feedly y un token de API (paso 1 a continuación)
Claude Desktop, Claude Code o cualquier otro cliente MCP
Paso 1 — Obtener un token de API de Feedly
Inicia sesión en Feedly en tu navegador.
Visita https://feedly.com/v3/auth/dev.
Sigue las instrucciones allí para generar un token de acceso para desarrolladores.
Copia el token en un lugar seguro para el siguiente paso. Es una contraseña — trátalo como tal.
Dos cosas que debes saber antes de continuar.
Los tokens caducan. En una cuenta gratuita, un token de desarrollador es válido durante unos 30 días, después de los cuales repites este paso. Los planes de pago pueden renovarse automáticamente. Esta es la política de Feedly, no algo que esta herramienta pueda solucionar.
La disponibilidad del token depende de tu plan. La propia documentación de Feedly es inconsistente sobre qué niveles de cuenta pueden emitir tokens de API por sí mismos. Si la página anterior no te da un token, este conector no puede funcionar con tu cuenta, y no hay solución alternativa aparte de contactar con Feedly.
Paso 2 — Instalar
Compilar desde el código fuente — la única ruta que funciona hoy
git clone https://github.com/fredrsat/feedly-mcp
cd feedly-mcp
npm install
npm run buildLuego guarda tu token en un archivo que solo tú puedas leer, para que nunca tenga que ir en una configuración de cliente en texto plano:
mkdir -p ~/.config/feedly-mcp
printf '%s' 'paste-your-token-here' > ~/.config/feedly-mcp/token
chmod 600 ~/.config/feedly-mcp/tokenEl servidor se niega a leer ese archivo si es legible por el grupo o por todos, y te dice cómo solucionarlo.
Regístralo con tu cliente, usando una ruta absoluta al punto de entrada compilado:
# 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 ... ✔ ConnectedPara Claude Desktop, añade esto a
~/Library/Application Support/Claude/claude_desktop_config.json (macOS) o
%APPDATA%\Claude\claude_desktop_config.json (Windows), luego sal y vuelve a abrir la
aplicación — cerrar la ventana no recarga los servidores MCP:
{
"mcpServers": {
"feedly": {
"command": "node",
"args": ["/absolute/path/to/feedly-mcp/dist/cli.js"]
}
}
}¿Ya tienes otros servidores bajo mcpServers? Añade feedly junto a ellos en lugar de
reemplazar el bloque.
Si mueves el repositorio después, vuelve a registrarlo — la ruta es absoluta. Recompilar en el lugar se detecta automáticamente.
Una vez publicado
Ninguna de estas opciones funciona todavía; así es como se verá la instalación después de la primera versión.
Con un clic, Claude Desktop. Descarga feedly-mcp.mcpb desde la página de Releases
y arrástralo a Configuración → Extensiones. Aparece un formulario de configuración; el token
va a la cadena de claves de tu sistema operativo en lugar de a un archivo de texto plano, y
todo en Configuración es editable desde ese formulario.
Desde npm. npx -y feedly-mcp como comando, con FEEDLY_TOKEN en el
bloque env del cliente, o el archivo de token anterior.
Paso 3 — Comprobar que funciona
Antes de preguntar nada a Claude, confirma la conexión desde tu terminal:
node dist/cli.js doctorUn resultado saludable se ve así:
✓ 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.Banderas útiles: -v imprime cada ajuste resuelto y de dónde proviene,
--refresh limpia la caché primero.
doctor nunca imprime tu token. Usa la lista de carpetas que te da al rellenar
scope en el paso 4.
Si algo va mal, salta a Solución de problemas.
Paso 4 — Configurar (opcional)
Los valores predeterminados son sensatos y puedes omitir esto por completo. El único ajuste que vale la pena revisar pronto es scope — qué carpetas puede ver Claude en absoluto.
Crea ~/.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 callDos razones para establecer include_folders:
Privacidad. Tu carpeta de trabajo no necesita ser legible por un agente.
Enfoque. Menos carpetas significa respuestas más cortas y menos contexto gastado en material sobre el que no preguntaste.
Si instalaste mediante la Opción A, edita estos ajustes en el formulario de configuración de la extensión — mismas opciones, sin archivo que buscar.
Lista completa de ajustes: docs/configuration.md
Uso
Solo pregunta. Algunas cosas que funcionan bien:
"¿Qué hay de nuevo en mis fuentes de IA desde ayer?"
"¿Algo que valga la pena leer en IA - Investigación esta semana?"
"¿Cuántos artículos no leídos tengo, desglosados por carpeta?"
"Encuéntrame fuentes sobre inferencia local de LLM"
"Resume los 5 principales por participación de las últimas 8 horas"
No necesitas saber los IDs de las carpetas. Los nombres de carpeta funcionan, y Claude puede listarlos.
Referencia completa de herramientas: docs/tools.md
Límites que vale la pena conocer antes de construir sobre esto
Estos provienen de ejecutarlo contra una cuenta real y ocupada, no de la teoría.
El volumen supera tu ventana de tiempo. En una carpeta que produce ~42 artículos por hora,
pedir 24 horas con un límite de 320 en realidad cubre menos de ocho — limit
se agota primero. Las respuestas informan covered_hours junto a window_hours para que la
brecha sea visible, pero aumentar el límite suele ser la solución incorrecta: cuesta más
cuota y más contexto mover el punto ciego ligeramente. Reduce la carpeta.
El alcance funciona sobre carpetas, no sobre fuentes. Si una fuente ruidosa y una fuente excelente están en la misma carpeta, ninguna configuración aquí las separa — en la cuenta contra la que se probó, una sola fuente produjo 140 de 320 artículos y ninguna de las historias útiles, mientras que una fuente con 2 artículos produjo la mayoría de ellas. La solución fue darse de baja en Feedly. Orden práctico: elimina primero las fuentes que no aportan, luego establece el alcance. Al revés se desechan buenas fuentes para escapar de las malas.
Los recuentos que informan lo que hizo una escritura merecen sospecha. Feedly no devuelve
ningún recuento para el marcado a nivel de carpeta, por lo que mark_read mide los totales de no
leídos antes y después. Eso es aproximado, no exacto — los propios recuentos de Feedly se retrasan
un momento. Para cualquier cosa que importe, comprueba unread_counts tú mismo.
Una ventana de limpieza más antigua que tu acumulación no marca nada. Los no leídos se
estabilizan aproximadamente en window_days × articles_per_day. Un older_than de 7 días contra
~570 artículos al día mantiene la acumulación cerca de 4000 para siempre, por mucho que
limpies.
Presupuesta según la respuesta, no según un plan. Cada resultado lleva
calls_left_today y calls_left_session. Léelos y adáptate en lugar de decidir
un número de llamadas de antemano — la cifra diaria es a nivel de cuenta, por lo que tu propia
navegación la mueve bajo tus pies.
Tu cuota de API — por favor, lee esto
Tu cuota diaria de API es pequeña — más pequeña de lo que sugiere la documentación de Feedly.
Medido contra la API en vivo, un token de desarrollador en una cuenta Pro Plus de pago informa un límite de 50 llamadas al día, que se restablece alrededor de la medianoche UTC. Los propios documentos de Feedly describen 250 en el plan gratuito y 500 en Pro. Planifica para 50.
Eso es aproximadamente ocho conversaciones al día si el agente es hablador, y la cuota se comparte con todo lo demás que toca tu cuenta — incluido Feedly en tu navegador, que también deja de funcionar si un agente la agota.
Así que esta herramienta defiende el presupuesto en tu nombre:
Las listas de carpetas y suscripciones se almacenan en caché en disco durante 24 horas.
Las solicitudes idénticas repetidas dentro de 15 minutos se sirven desde la caché.
Una llamada obtiene una carpeta completa — nunca una llamada por fuente.
Límites máximos de 10 llamadas por sesión y 40 por día, dejando margen para ti. El diario se mide a nivel de cuenta, por lo que navegar por Feedly tú mismo cuenta contra él — eso es deliberado, para que un agente no pueda bloquearte tu propio lector.
Cada respuesta informa cuánta cuota queda y cuán desactualizados están los datos. Por debajo de 10 llamadas restantes, recibes una advertencia.
Comprueba tu propio límite con doctor — imprime el límite que tu cuenta realmente
informa. Si dice algo más alto que 50, puedes subir el presupuesto de forma segura en
configuración.
Marcar artículos como leídos
mark_read es permanente. Feedly no tiene deshacer, y la recuperación significa enviar un
correo a su soporte. Así que viene desactivado.
Para habilitar el marcado de artículos individuales:
[writes]
enabled = truePara permitir también marcar una carpeta completa como leída de una vez — un radio de explosión mucho mayor — debes activar deliberadamente un segundo interruptor:
[writes]
enabled = true
bulk_mark_read = trueDarse de baja no está implementado en absoluto, a propósito. Hazlo en Feedly.
Solución de problemas
doctor dice que falta el token
El servidor busca en este orden: la variable de entorno FEEDLY_TOKEN, luego
el archivo nombrado por feedly.token_file. Confirma que tu token llegó a la que
usaste — una causa común es editar el archivo de configuración mientras Claude Desktop pasa
una variable de entorno vacía que gana sobre él.
"Token caducado" o 401
Los tokens de cuentas gratuitas duran unos 30 días. Repite el paso 1 y actualiza el token donde lo guardaste. Esto es esperado y seguirá sucediendo; no es un error.
Claude no ve las herramientas
Sal y vuelve a abrir Claude Desktop por completo — reiniciar la ventana no recarga los servidores
MCP. Luego comprueba que tu JSON sea válido (una coma final suele ser la culpable habitual),
y que node --version informe 20 o superior.
"Límite de velocidad superado" (429)
Has usado tu cuota de Feedly para el día. Se restablece según el horario de Feedly; el mensaje de error incluye la hora de restablecimiento. El servidor no reintentará automáticamente — reintentar solo cavaría el agujero más profundo.
"Presupuesto diario agotado"
Diferente de lo anterior: este es el límite de esta herramienta, no el de Feedly, y
todavía te queda cuota real. Sube budget.daily_calls si quieres más.
Una carpeta está "fuera del alcance configurado"
scope.include_folders está establecido y esa carpeta no está en él. Añádela, o limpia
la lista para permitir todo.
Los datos en caché parecen pertenecer a otra cuenta
Limpia la caché e inténtalo de nuevo:
rm -rf ~/.cache/feedly-mcpDesarrollo
npm run build # compile to dist/
npm test # 104 tests, no API calls
npm run typecheck # tsc --noEmitTambién hay una comprobación de extremo a extremo que impulsa el servidor compilado a través de stdio como un cliente MCP real y ejercita cada herramienta contra tu cuenta. Cuesta un puñado de llamadas API de las 50 diarias, e imprime la cuota restante a medida que avanza:
node --env-file=.env scripts/smoke.mjsmark_read solo se ejercita en sus rutas de rechazo, allí y en todos los demás lugares.
Es irreversible, por lo que no hay una forma segura de probar la ruta de éxito.
Contribuciones
Se aceptan issues y pull requests. La justificación del diseño — incluido qué funciones se excluyen deliberadamente — vive en feedlymcpspec.md. Léelo antes de proponer una función; si tu idea está en la lista de "fuera de alcance", es una decisión más que un descuido, aunque puedes discutirla.
La especificación y estos documentos son el contrato. Si cambias una forma de retorno o una clave de configuración, cambia ambos juntos o ninguno.
Licencia
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