web-mcp
A local MCP server for semantic search over RSS/Atom feeds, providing tools for ranked search, trending topics, digests, and feed health monitoring without requiring an API key.
README
web-mcp
Semantic search over RSS/Atom feeds for AI agents — a single-file MCP server. No API key, no cloud, just the feeds you choose.
Point it at a handful of RSS/Atom feeds and give an agent tools to search them by meaning (TF-IDF + recency boost), see what's trending, generate a digest, and monitor feed health — all running locally against feeds you control.

Features
- Add/remove/list feeds — RSS 2.0 and Atom
- Ranked search — TF-IDF cosine similarity with a recency boost, pure stdlib (no embeddings, no network calls beyond fetching the feeds themselves)
- Trending topics — most frequent terms across recent articles
- Source health — flags feeds that are erroring, silent, or stale
- Markdown digests — grouped-by-feed summary of recent articles
- Background refresh — feeds are refreshed on a timer automatically
Install
Requires Python 3.10+.
On the package name: the project is
web-mcp, but the PyPI distribution isfeed-mcp— PyPI rejectsweb-mcpas too similar to an unrelated existingwebmcppackage. So youpip install feed-mcp, and it installs both aweb-mcpand afeed-mcpcommand; they're the same program, use whichever you prefer.
Option A — Claude Code plugin (recommended)
Installs the MCP server and the bundled skills and agents in one step:
pip install feed-mcp
Then, inside Claude Code:
/plugin marketplace add ManiaSacha/web-mcp
/plugin install web-mcp@maniasacha-web-mcp
The plugin registers the web MCP server automatically and prompts you for a starting feed list. If the install summary says Run /reload-plugins to activate., run that.
The
pip installstep is required: the plugin's MCP server invokes theweb-mcpcommand, which pip puts on your PATH.
Option B — MCP server only
pip install feed-mcp
claude mcp add web -- web-mcp --feeds https://hnrss.org/frontpage
For Claude Desktop, add this to claude_desktop_config.json:
{
"mcpServers": {
"web": {
"command": "web-mcp",
"args": ["--feeds", "https://hnrss.org/frontpage,https://github.blog/feed/"]
}
}
}
Option C — from source
git clone https://github.com/ManiaSacha/web-mcp.git
cd web-mcp
./install.sh # Windows: .\install.ps1
The install scripts check your Python version, install the package, and print the exact next command for your setup.
Quick start
Run the server directly to check it works:
web-mcp --feeds https://hnrss.org/frontpage,https://github.blog/feed/
It speaks MCP over stdio, so it will sit silently waiting for a client — that's correct behavior, not a hang. Press Ctrl+C to exit.
Once connected, ask your agent things like:
- "What's trending across my feeds today?"
- "Search my feeds for anything about Postgres performance."
- "Give me a digest of the last 24 hours."
- "Are any of my feeds broken?"
What's included
| Component | Name | Purpose |
|---|---|---|
| MCP server | web |
The 9 tools below |
| Skill | feed-curation |
Add, audit, and prune feeds |
| Skill | feed-digest |
Turn raw tool output into a synthesized brief |
| Agent | pm |
Scopes features against the single-file philosophy |
| Agent | security-reviewer |
Audits the SSRF/fetch surface |
| Agent | git-pipeline |
Branching, commits, and review handoff |
Tools
| Tool | Description |
|---|---|
add_feed(url) |
Add an RSS/Atom feed and index its current articles |
remove_feed(url) |
Remove a feed and its indexed articles |
list_feeds() |
List configured feeds with article counts |
search(query, limit=10, max_days=30) |
Recency-boosted ranked search |
recent(limit=20) |
Most recent articles across all feeds |
trending(hours=24, limit=10) |
Trending terms in the last N hours |
digest(hours=24, limit=8) |
Markdown digest grouped by feed |
source_health() |
Which feeds are healthy, late, or erroring |
refresh() |
Force-refresh all feeds immediately |
Security notes
add_feed(url) makes the server fetch a URL that may have reached your agent from a web page rather than from you, so that path is treated as untrusted:
- Scheme allowlist — only
http://andhttps://.file://,ftp://,gopher://, anddata:are refused. - Public addresses only — a URL is rejected unless every address it resolves to is publicly routable. Loopback, private, link-local (including the
169.254.169.254cloud metadata endpoint), multicast, and reserved addresses are blocked, as are their IPv4-mapped IPv6 forms. - Connect-time IP pinning — the address that was validated is the one actually dialed, so DNS cannot answer differently between the check and the connection (rebinding). TLS still validates certificates against the hostname.
- Per-hop redirect validation — redirects are followed manually and re-validated at every hop, so a public URL cannot bounce the fetch to an internal host. Capped at 5 hops.
- Resource bounds — 5 MB per feed body, an explicit socket timeout, and a clamp on every tool's
limit.
Two things this does not do: it has no authentication (it's meant to run locally over stdio — don't expose it on a network), and it does not vet feed content. Indexed article text is written by whoever controls the feed, so treat it as data, never as instructions.
Full detail, including the limits that remain, is in docs/SECURITY-MODEL.md. To report a vulnerability, see SECURITY.md.
Development
pip install -e ".[dev]"
pytest # 53 tests, no network access
ruff check . # lint
python scripts/validate_plugin.py # manifests, frontmatter, version sync
CI runs all three on Python 3.10–3.13 (Linux, plus macOS and Windows on 3.12), and additionally installs the built wheel to confirm the console scripts work.
See CONTRIBUTING.md for the workflow and CHANGELOG.md for release history.
License
MIT
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。