web-mcp
web-mcp
AI 에이전트를 위한 RSS/Atom 피드 의미 검색 — 단일 파일 MCP 서버입니다. API 키도, 클라우드도 필요 없고, 직접 선택한 피드만 있으면 됩니다.
RSS/Atom 피드 몇 개를 지정하면 에이전트가 의미 기반 검색(TF-IDF + 최신성 가중치), 트렌드 확인, 다이제스트 생성, 피드 상태 모니터링에 쓸 도구를 갖게 됩니다. 모든 것은 직접 제어하는 피드를 대상으로 로컬에서 실행됩니다.

기능
피드 추가/제거/목록 — RSS 2.0 및 Atom
순위 검색 — 최신성 가중치를 적용한 TF-IDF 코사인 유사도, 순수 표준 라이브러리만 사용(임베딩 없음, 피드 자체를 가져오는 것 외에는 네트워크 호출 없음)
트렌드 토픽 — 최근 기사에서 가장 빈번하게 등장하는 용어
소스 상태 — 오류가 발생했거나, 응답이 없거나, 오래된 피드 표시
Markdown 다이제스트 — 피드별로 그룹화된 최근 기사 요약
백그라운드 새로고침 — 타이머에 따라 피드를 자동으로 갱신
Related MCP server: mcp-rss-feed-searcher
설치
Python 3.10+ 버전이 필요합니다.
패키지 이름에 대하여: 프로젝트는
web-mcp이지만 PyPI 배포판은 **feed-mcp**입니다. PyPI가web-mcp를 무관한 기존webmcp패키지와 너무 유사하다고 거부하기 때문입니다. 따라서pip install feed-mcp로 설치하면web-mcp와feed-mcp명령이 모두 설치됩니다. 같은 프로그램이므로 원하는 것을 사용하세요.
옵션 A — Claude Code 플러그인 (권장)
MCP 서버 와 번들된 스킬 및 에이전트를 한 번에 설치합니다:
pip install feed-mcp그런 다음 Claude Code 내부에서:
/plugin marketplace add ManiaSacha/web-mcp
/plugin install web-mcp@maniasacha-web-mcp플러그인은 web MCP 서버를 자동으로 등록하고 시작 피드 목록을 묻습니다. 설치 요약에 Run /reload-plugins to activate.라고 표시되면 그 명령을 실행하세요.
pip install단계가 필요합니다: 플러그인의 MCP 서버는 pip이 PATH에 추가하는web-mcp명령을 호출합니다.
옵션 B — MCP 서버만
pip install feed-mcp
claude mcp add web -- web-mcp --feeds https://hnrss.org/frontpageClaude Desktop의 경우 claude_desktop_config.json에 다음을 추가하세요:
{
"mcpServers": {
"web": {
"command": "web-mcp",
"args": ["--feeds", "https://hnrss.org/frontpage,https://github.blog/feed/"]
}
}
}옵션 C — 소스에서 설치
git clone https://github.com/ManiaSacha/web-mcp.git
cd web-mcp
./install.sh # Windows: .\install.ps1설치 스크립트는 Python 버전을 확인하고 패키지를 설치한 후 사용자 환경에 맞는 정확한 다음 명령을 출력합니다.
빠른 시작
서버를 직접 실행하여 동작을 확인하세요:
web-mcp --feeds https://hnrss.org/frontpage,https://github.blog/feed/stdio를 통해 MCP로 통신하므로 클라이언트를 기다리며 조용히 대기합니다. 이는 정상적인 동작이지 멈춤이 아닙니다. Ctrl+C를 눌러 종료하세요.
연결되면 에이전트에게 다음과 같이 요청해 보세요:
"오늘 내 피드에서 트렌드가 뭔가요?"
"내 피드에서 Postgres 성능에 관한 내용을 검색해 줘."
"지난 24시간 동안의 다이제스트를 만들어 줘."
"내 피드 중에 고장 난 것이 있나요?"
포함 구성 요소
구성 요소 | 이름 | 용도 |
MCP 서버 |
| 아래 9가지 도구 |
스킬 |
| 피드 추가, 감사, 정리 |
스킬 |
| 원시 도구 출력을 종합 브리핑으로 변환 |
에이전트 |
| 단일 파일 철학에 맞춰 기능 범위 조정 |
에이전트 |
| SSRF/가져오기 표면 감사 |
에이전트 |
| 브랜치 생성, 커밋, 리뷰 인계 |
도구
도구 | 설명 |
| RSS/Atom 피드를 추가하고 현재 기사를 인덱싱 |
| 피드와 인덱싱된 기사 제거 |
| 기사 수와 함께 구성된 피드 목록 표시 |
| 최신성 가중치가 적용된 순위 검색 |
| 모든 피드에서 가장 최근 기사 |
| 지난 N시간 동안의 트렌드 용어 |
| 피드별로 그룹화된 Markdown 다이제스트 |
| 어떤 피드가 정상, 지연, 오류 상태인지 |
| 모든 피드를 즉시 강제 새로고침 |
보안 참고 사항
add_feed(url)은 서버가 사용자가 아닌 웹 페이지에서 에이전트에 도달했을 수 있는 URL을 가져오게 하므로, 이 경로는 신뢰할 수 없는 것으로 처리됩니다:
스킴 허용 목록 —
http://와https://만 허용됩니다.file://,ftp://,gopher://,data:는 거부됩니다.공개 주소만 허용 — URL이 확인되는 모든 주소가 공개적으로 라우팅 가능한 경우가 아니면 거부됩니다. 루프백, 사설, 링크-로컬(
169.254.169.254클라우드 메타데이터 엔드포인트 포함), 멀티캐스트, 예약 주소와 그 IPv4-매핑 IPv6 형태도 차단됩니다.연결 시 IP 고정 — 검증된 주소가 실제로 연결되는 주소이므로 DNS가 검사와 연결 사이에 다르게 응답할 수 없습니다(리바인딩). TLS는 여전히 호스트 이름에 대해 인증서를 검증합니다.
홉별 리다이렉트 검증 — 리다이렉트를 수동으로 추적하고 모든 홉에서 다시 검증하므로 공개 URL이 가져오기를 내부 호스트로 튕길 수 없습니다. 최대 5홉으로 제한됩니다.
리소스 제한 — 피드 본문당 5MB, 명시적 소켓 타임아웃, 모든 도구의
limit에 대한 상한.
이 서버가 하지 않는 두 가지가 있습니다: 인증이 없으며(stdio를 통해 로컬에서 실행되도록 설계되었으므로 네트워크에 노출하지 마세요), 피드 콘텐츠를 검증하지 않습니다. 인덱싱된 기사 텍스트는 피드를 제어하는 사람이 작성하는 것이므로 데이터로 취급하고 절대 지시사항으로 취급하지 마세요.
남아 있는 제한 사항을 포함한 전체 세부 사항은 docs/SECURITY-MODEL.md에 있습니다. 취약점을 신고하려면 SECURITY.md를 참조하세요.
개발
pip install -e ".[dev]"
pytest # 53 tests, no network access
ruff check . # lint
python scripts/validate_plugin.py # manifests, frontmatter, version syncCI는 Python 3.10–3.13(Linux, 그리고 3.12에서는 macOS와 Windows)에서 세 가지를 모두 실행하며, 추가로 빌드된 휠을 설치하여 콘솔 스크립트가 동작하는지 확인합니다.
워크플로는 CONTRIBUTING.md, 릴리스 이력은 CHANGELOG.md를 참조하세요.
라이선스
MIT
Available Tools
9 toolsadd_feedA
Add an RSS/Atom feed and fetch its current articles.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of explaining behavior. It discloses that the operation adds a feed and fetches its articles, indicating a state-changing action. It does not detail edge-case behaviors such as duplicate feeds, validation failures, or what happens if the fetch fails, but it is transparent about the core 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 description is a single, direct sentence that front-loads the primary verb and object. Every word contributes meaningful information, with no filler or redundant restatement of the tool name.
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 simple one-parameter tool with an output schema, the description is mostly complete: it states the operation, the target resource, and the immediate fetch behavior. It could additionally mention that the feed becomes part of the user's feed list or that fetching may be synchronous, but the existing description covers the essential context.
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 input schema only defines 'url' with no description, and schema description coverage is 0%. The description adds that the URL should point to an RSS/Atom feed, which is helpful context beyond the bare parameter name, but it does not elaborate on URL format, protocol expectations, or validation rules.
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 uses a specific verb and resource: 'Add an RSS/Atom feed and fetch its current articles.' It clearly distinguishes from siblings like remove_feed, list_feeds, and refresh by indicating this tool creates a new feed subscription and performs an initial fetch.
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 description implies the tool should be used when a user wants to add a new feed, and it contrasts implicitly with remove_feed and refresh. However, it does not explicitly state when not to use it, mention alternatives, or clarify that refresh is the appropriate tool for updating an existing feed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
digestB
Generate a markdown digest grouping recent articles and trending topics.
| Name | Required | Description | Default |
|---|---|---|---|
| hours | No | ||
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral burden. It indicates the tool generates a digest and nothing else, but it does not disclose potential side effects, dependencies on feeds, rate limits, or how content is selected. Some behavior is clear, but much is left unspecified.
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?
A single sentence that leads with the action and output format. Every word earns its place, and there is no redundant or filler content.
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?
With an output schema present and only two optional parameters with defaults, an agent can invoke this tool with no arguments reasonably safely. However, the description omits how hours and limit interact, what 'trending topics' means, and whether the digest depends on configured feeds, leaving room for misinterpretation.
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?
Schema description coverage is 0% and the description does not explain 'hours' or 'limit'. The parameter names and defaults are somewhat self-explanatory, and 'recent articles' hints at hours, but the description adds no explicit parameter semantics to compensate for the schema's lack of descriptions.
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 states a clear verb ('Generate') and resource ('markdown digest grouping recent articles and trending topics'), making the tool's core function obvious. It does not explicitly compare itself with siblings like recent or trending, but the grouping and digest format distinguish it enough.
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 description implies usage: call this when you want a consolidated markdown digest of recent articles and trending topics. It does not provide explicit when-to-use versus alternatives or mention exclusions, so guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_feedsA
List configured feeds with article counts.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. The verb 'List' clearly signals a read-only operation, and the phrase 'with article counts' discloses key behavior about the returned data. It does not mention auth, caching, or ordering, but these are minor for a zero-parameter listing tool.
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 description is a single short sentence with no filler. The verb and resource are front-loaded, and every word contributes meaning ('configured feeds', 'article 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?
For a zero-parameter tool with an output schema, the description is sufficient: it names the resource and the key expected output field. It could add ordering or live-vs-cached count details, but these are not required for correct invocation.
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 has zero parameters, so the input schema is already fully complete. The description adds no parameter detail, and none is needed; this matches the baseline for no-parameter tools.
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 states an explicit verb ('List') and resource ('configured feeds') and adds a useful output detail ('with article counts'). This clearly distinguishes it from siblings that operate on article content (search, recent, trending, digest) or mutate feeds (add_feed, remove_feed).
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 description implies when to use this tool: when the agent needs to see configured feeds and their article counts. However, it does not explicitly discuss when not to use it or point to alternatives such as source_health for feed status or refresh for live counts, leaving some routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recentC
Most recent articles across all feeds.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must carry the behavioral disclosure burden. It only says 'across all feeds' and does not mention ordering, freshness window, pagination, or any limitations. The description adds little beyond what the tool name already implies.
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 description is one short, front-loaded sentence with no filler or redundant statements. It is easy to scan and gets the core idea across quickly. The brevity comes at the cost of behavioral detail, but it is appropriately concise for a simple tool.
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?
The tool is simple and has an output schema, but with no annotations and no sibling differentiation, the description is not fully complete. An agent has little guidance for choosing this over 'trending' or 'digest,' and no information about default sorting or response shape. The output schema helps fill some gaps, but the description remains under-specified for confident 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 schema description coverage is 0%, and the description does not explain the 'limit' parameter at all. The schema provides the type and default, and the parameter name is fairly self-explanatory, but the description itself adds no parameter-level meaning. It partially compensates by being about a simple single-parameter tool.
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 states that the tool returns the most recent articles and scopes it 'across all feeds,' which is clear enough to convey the basic purpose. It lacks an explicit verb like 'list' or 'get,' but the intent is unambiguous. It does not explicitly differentiate from sibling tools like search, trending, or digest.
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?
There is an implied use case: fetch the newest articles from all feeds. However, the description provides no explicit 'when to use this vs. other tools' guidance, and it does not mention alternatives such as trending or digest. The usage context is minimal and largely inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
refreshA
Force-refresh all feeds now.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full transparency burden. It discloses that the refresh is forced and immediate, not a scheduled or passive update. It does not detail side-effects like network load or rate limiting, but for a zero-parameter command this level of disclosure is generally sufficient.
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 description is a single, tight sentence that leads with the action and immediately states scope. No filler or redundant phrasing.
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?
With no parameters, an existing output schema, and no overlapping siblings, this description supplies all the context an agent needs to select and invoke the tool correctly. Anything more would be unnecessary for such a simple command.
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 input schema confirms zero parameters, so there is nothing to document. The description adds no parameter-level detail, but none is needed; baseline 4 applies.
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 states a specific verb ('Force-refresh') and resource ('all feeds'), clearly identifying a manual refresh action. It is distinct from all sibling tools, which handle feed management, search, and digests, so an agent can easily understand what this tool does.
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 intended context is clear: use this when you want to force an immediate refresh of all feeds. No sibling tool overlaps with this action, and no exclusion is necessary. It stops short of explicitly stating when not to use it or citing alternatives, but the context is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_feedA
Remove a feed and all of its indexed articles.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and it explicitly discloses that the feed and all its indexed articles are removed, which is the key destructive side effect. It stops short of stating irreversibility or permission requirements, but the main behavioral risk is clearly surfaced.
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?
A single, front-loaded sentence with no filler: the subject, action, and destructive scope are all in few words. Every element earns its place.
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 one-parameter destructive tool with an output schema present, the description is nearly sufficient: it defines the action and the critical cascade. It could add a note about irreversibility or URL semantics, but output formatting is already covered by the output schema and the tool complexity is low.
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?
Schema description coverage is 0% and the description does not compensate: it never explains that the feed is identified by URL, what URL formats are accepted, or that the parameter is required. The schema only provides the parameter name and type, so the description adds no parameter meaning.
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 uses the specific verb 'Remove' with the resource 'feed' and adds the cascading effect on indexed articles, so an agent can unambiguously tell this from siblings like add_feed or list_feeds. It states a clear action and scope.
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 operation itself is self-evident: use it when a feed should no linger be present. However, the description gives no explicit when-to-use/when-not-to-use guidance, no alternatives, and no prerequisites or warnings beyond the action, so usage is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchC
Recency-boosted ranked search across indexed feeds.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | ||
| max_days | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description must carry the behavioral disclosure burden. It reveals one useful trait, recency-boosted ranking, but says nothing about search scope limits, time-window behavior, query semantics, or whether the operation is read-only. The agent gets only a partial picture.
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 description is a single concise sentence with no filler, and its most distinguishing trait ('recency-boosted') is front-loaded. It is not a complete specification, but as far as length and ordering go it is well formed.
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 with three parameters and no annotations, this description is thin. It leaves unclear what 'indexed feeds' means, how max_days works, and when search should be preferred over recent, trending, or digest. The output schema covers return shape, but invocation context is under-specified.
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?
Schema description coverage is 0%, and the description does not explain query, limit, or max_days beyond what the parameter names already suggest. 'Recency-boosted' only loosely hints at max_days, and the agent must infer how limit and max_days shape results. The description does not compensate for the missing schema descriptions.
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 identifies the tool as a search operation over indexed feeds and adds a meaningful ranking trait ('recency-boosted'). This makes its purpose distinct from sibling list tools like recent or trending, though the differentiation is implicit rather than explicit.
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 phrasing implies use when an agent needs to search previously indexed feed content, but it never says when to choose this over recent, trending, or digest. No alternatives or exclusion conditions are named, so the guidance is only implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
source_healthA
Check which feeds are healthy, late, or producing errors.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. The read-only verb 'Check' and the enumerated status categories communicate expected behavior and outcome shape. It does not elaborate on underlying mechanics (e.g., network requests), but for a zero-parameter status query this is not a critical omission.
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?
A single front-loaded sentence with no filler. Every phrase adds semantic value, and no redundant details are included.
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?
The tool is maximally simple: no params, no required inputs, and an output schema exists. The description is sufficient for an agent to correctly select and invoke the tool without missing context.
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?
There are zero parameters, so the schema already fully covers invocation inputs. Baseline 4 applies because there is no parameter information for the description to add.
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 uses a specific verb ('Check') with a clear resource ('feeds') and defines the exact health outcomes ('healthy, late, or producing errors'). This distinguishes it from siblings like list_feeds (plain listing) and refresh (manual trigger) without ambiguity.
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 context is clear: call this when the agent needs feed health status rather than feed content or management. It does not explicitly name when not to use it or alternative tools, but the single-purpose phrasing leaves little ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
trendingC
Topics trending across your feeds in the last N hours.
| Name | Required | Description | Default |
|---|---|---|---|
| hours | No | ||
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears the full burden of behavioral disclosure, yet it only states that topics are 'trending across your feeds in the last N hours.' It does not disclose whether the operation is read-only, how trending is computed, whether results are sorted, what happens with empty feeds, or what the returned topics look like beyond what the output schema provides.
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 single sentence is efficient and front-loads the core concept with no filler words. However, it is under-specified rather than tightly specified—brevity here comes at the cost of missing behavioral and parameter information, so the sentence does not fully earn its place.
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?
With an output schema present, return-value documentation is covered elsewhere, and the tool is low-complexity with two optional params. But at 0% schema parameter coverage and no annotations, the description still fails to differentiate from siblings like 'recent' and 'digest', explain 'limit', or define the trending criteria—leaving notable gaps for an agent deciding to invoke it.
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?
Schema description coverage is 0%, so the description must compensate. It partially clarifies that 'hours' controls the look-back window via 'in the last N hours', but it says nothing about the 'limit' parameter, leaving its behavior (maximum number of topics returned) undocumented in both schema and description.
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 states a specific verb ('trending'), resource ('topics across your feeds'), and time window ('last N hours'). It is distinct enough from siblings like search and refresh to convey the core function, though it does not define what 'trending' means (e.g., ranked by engagement, velocity, or mentions) or how it differs from 'recent'.
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?
No guidance is given on when to use this tool versus siblings such as 'recent' or 'digest'. The description implies it is for surfacing currently popular topics, but it never states exclusion criteria (e.g., 'use recent for chronological listing' or 'use digest for summaries'), leaving tool selection to inference.
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.
9 tool updates
v0.2.1- First observed
add_feed - First observed
digest - First observed
list_feeds - First observed
recent - First observed
refresh - First observed
remove_feed - First observed
search - First observed
source_health - First observed
trending
TDQS
Scored across 9 tools
Each tool targets a clearly distinct operation: feed lifecycle management, retrieval, aggregation, health monitoring, and refresh. There is no meaningful overlap between search, recent, trending, and digest—they serve different user intents.
The naming is readable but mixes conventions: some tools use verb_noun (add_feed, remove_feed, list_feeds), while others are bare verbs or nouns (search, recent, trending, digest). Also, add_feed/remove_feed use singular while list_feeds uses plural, creating minor inconsistency.
Nine tools is well-scoped for an RSS/feed aggregator. Each tool earns its place covering management, querying, aggregation, health, and refresh without unnecessary redundancy.
The tool surface covers the core feed lifecycle (add, remove, list, refresh), retrieval (search, recent), insight (trending, digest), and maintenance (source_health). Minor gaps exist like per-feed article listing or feed URL editing, but these are not critical for the intended use.
Maintenance
Related MCP Connectors
- NewsmindOAuthapp.newsmind
Read, search and track your RSS feeds: semantic search, story clustering, watches, OPML import.
One MCP server for all web data. Scrape, search, crawl, and AI research in one install.
Reddit MCP server: search posts, subreddit feeds, comments & user profiles as JSON. No API key.
Unified 15-tool SEO, SERP, clean Markdown & GEO (LLM citation Share-of-Voice) MCP server.
Related MCP Servers
- AlicenseBqualityDmaintenanceMCP server for fetching, parsing, and managing RSS feeds. Features Fetch and parse RSS/Atom feeds In-memory caching with TTL Batch fetching of multiple feeds Monitor feeds for new items Search content across multiple feeds Extract and format feed content631 npm12Apache 2.0
- AlicenseNot gradedqualityDmaintenanceAn MCP server that enables searching across multiple RSS feed sources simultaneously, with support for extensible feed sources and both STDIO and HTTP modes.MIT
- AlicenseAqualityCmaintenanceAn MCP server for managing and querying RSS/news feeds, enabling real-time fetching, searching, and retrieval of feed items.56 npm1MIT
- AlicenseBqualityAmaintenanceSecure MCP server for RSS/Atom feed reading with SQLite backend. Enables feed management, entry search, and OPML import/export.17AGPL 3.0