Skip to main content
Glama
ManiaSacha
by ManiaSacha

web-mcp

ci PyPI Python License: MIT

针对 AI 代理的 RSS/Atom 订阅源语义搜索——一个单文件 MCP 服务器。无需 API 密钥,无需云端,只需你选择的订阅源。

让它指向一些 RSS/Atom 订阅源,并给代理工具,按语义搜索(TF-IDF + 新鲜度加分)、查看趋势、生成摘要、监控订阅源健康——全部在本地运行,且订阅源由你控制。

web-mcp 演示

功能

  • 添加/移除/列订阅源 — 支持 RSS 2.0 和 Atom

  • 排名搜索 — TF-IDF 余弦相似度配合新度加分,纯标准库(无需嵌入,除获取订阅源本身外无需网络调用)

  • 热门话题 — 按最近文章中的高频词

  • 订阅源健康 — 标记出错、静默或过期的订阅源

  • Markdown 摘要 — 按订阅源分组的小结

  • 后台刷新 — 订阅源自动定时刷新

安装

需要 Python 3.10+。

关于包名: 项目是 web-mcp,但 PyPI 发行包是 feed-mcp——PyPI 拒绝 web-mcp,因为它与无关的现有包 webmcp 过于相似。所以你要 pip install feed-mcp,它会同时安装 web-mcpfeed-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 服务器会调用 web-mcp 命令,该命令由 pip 放入你的 PATH。

选项 B — 仅 MCP 服务器

pip install feed-mcp
claude mcp add web -- web-mcp --feeds https://hnrss.org/frontpage

对于 Claude 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 服务器

web

下面的 9 个工具

技能

feed-curation

添加、审计和整理订阅源

技能

feed-digest

将原始工具输出转化为综合简报

代理

pm

按单文件理念界定功能范围

代理

security-reviewer

审计 SSRF/获取面

代理

git-pipeline

分支、提交和审查交接

工具

工具

说明

add_feed(url)

添加 RSS/Atom 订阅源并索引其当前文章

remove_feed(url)

移除订阅源及其索引的文章

list_feeds()

列出已配置订阅源及其文章数

search(query, limit=10, max_days=30)

带时效加权的排名搜索

recent(limit=20)

返回所有订阅源的最近文章

trending(hours=24, limit=10)

最近 N 小时内的热门词汇

digest(hours=24, limit=8)

按订阅源分组的 Markdown 摘要

source_health()

哪些订阅源健康、延迟或报错

refresh()

立即强制刷新所有订阅源

安全说明

add_feed(url) 会让服务器获取一个 URL,该 URL 可能来自网页而非你本人,因此该路径被视为不可信:

  • 协议白名单 — 仅允许 http://https://。拒绝 file://ftp://gopher://data:

  • 仅限公网地址 — 除非某个 URL 解析得到的每个地址都为公网可路由,否则拒绝该 URL。环回、私有、链路本地(包括 169.298.298.169.254 云元数据端点)、组播和保留地址均被阻止,其 IPv4 映射的 IPv6 形式亦然。

  • 连接时 IP 固定 — 校验的地址即为实际拨号的地址,因此 DNS 无法在校验与连接之间给出不同解析(重绑定)。TLS 仍会根据主机名校验证书。

  • 逐跳重定向校验 — 手动跟随重定向,并在每一跳重新校验,因此公共 URL 无法通过重定向到内部主机。上限 5 跳。

  • 资源限制 —每个订阅源主体 5 MB,显式套接字超时,以及所有工具 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 sync

CI 在 Python 3.10–3.13 上运行全部这三个(Linux;macOS 和 Windows 在 3.12 上),并且额外安装构建好的 wheel,以确认控制台脚本正常。

工作流程见 CONTRIBUTING.md,版本历史见 CHANGELOG.md

许可证

MIT

-
license - not tested
-
quality - not tested
A
maintenance

Maintenance

Maintainers
Response time
Release cycle
3Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ManiaSacha/web-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server