FreshRSS管理协议服务器

一个基于Go的FreshRSS MCP服务器,提供高效的RSS订阅管理和数据处理功能。

  • by XimilalaXiang
  • Go
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 XimilalaXiang/freshrss-mcp-go

使用说明

弗雷德里克斯mcp去

用于FreshRSS的基于Go的MCP(模型上下文协议)服务器,将现有的最佳实现与令牌高效输出相结合。

特性

  • 15个MCP工具 完整的FreshRSS管理
  • HTML剥离 删除标签以获得干净的文本输出
  • 字边界截断 用于令牌高效摘要
  • 压缩JSON 与缩进相比,输出节省了20-30%的令牌
  • 身份验证重试 401(自动重新认证)
  • 健康终点 在 /health 用于Docker监控
  • 可流式传输的HTTP、SSE和stdio 运输方式
  • ~32MB Docker镜像 (Alpine多级构造)

工具

工具 描述 类型
freshrss_list_subscriptions 列出所有订阅的订阅源 阅读
freshrss_list_folders 列出文件夹/标签标签 已读
freshrss_get_unread_count 每个订阅源的未读计数 已读
freshrss_get_articles 使用过滤和分页功能获取文章 阅读
freshrss_search_articles 按关键字搜索文章(支持提要/文件夹范围) 阅读
freshrss_get_article_detail 获取完整的文章内容(无截断,直接查找API) 阅读
freshrss_mark_read 将文章标记为已读 写
freshrss_mark_unread 将文章标记为未读 写
freshrss_mark_all_read 将提要/文件夹中的所有内容标记为已读 写入
freshrss_star_article 明星文章 写
freshrss_unstar_article 从文章中删除星号 写
freshrss_add_label 为文章添加标签 写
freshrss_remove_label 从文章中删除标签/标记 写入
freshrss_subscribe 订阅订阅源 写
freshrss_unsubscribe 取消订阅源 写入

设置

环境变量

看 .env.example.必填:

  • FRESHRSS_URL --您的FreshRSS实例URL
  • FRESHRSS_EMAIL (或 FRESHRSS_USERNAME)--登录用户名
  • FRESHRSS_API_PASSWORD (或 FRESHRSS_PASSWORD)-API密码(在FreshRSS设置中设置→ 身份验证)

可选:

  • FRESHRSS_API_PATH -API路径(默认值: /api/greader.php)
  • MCP_TRANSPORT — http, sse,或stdio为空
  • MCP_PORT --HTTP/SSE模式的端口(默认值: 8080)

用Go奔跑

export FRESHRSS_URL=... FRESHRSS_EMAIL=... FRESHRSS_API_PASSWORD=...
go run .                                        # stdio
MCP_TRANSPORT=http MCP_PORT=8080 go run .       # Streamable HTTP
MCP_TRANSPORT=sse MCP_PORT=8080 go run .        # SSE

使用Docker运行

docker build -t freshrss-mcp-go .
docker run --rm \
  -e FRESHRSS_URL \
  -e FRESHRSS_EMAIL \
  -e FRESHRSS_API_PASSWORD \
  -e MCP_TRANSPORT=http \
  -p 8080:8080 \
  freshrss-mcp-go

Docker Compose

cp .env.example .env
# Edit .env with your credentials
docker compose up -d

健康检查

在HTTP模式下运行时,健康端点可用:

curl http://localhost:8080/health
# {"status":"healthy"}

当FreshRSS身份验证有效时返回200,否则返回503,并显示错误详细信息。

MCP客户端配置

流式HTTP(Docker)

{
  "mcpServers": {
    "freshrss": {
      "type": "streamableHttp",
      "url": "http://localhost:8080/mcp"
    }
  }
}

stdio(本地二进制)

{
  "mcpServers": {
    "freshrss": {
      "command": "/path/to/freshrss-mcp-go",
      "env": {
        "FRESHRSS_URL": "https://rss.example.com",
        "FRESHRSS_EMAIL": "user",
        "FRESHRSS_API_PASSWORD": "api-password"
      }
    }
  }
}

代币效率

这 get_articles 和 search_articles 工具支持三种令牌保存选项:

  • strip_html (默认值:true)--删除HTML标记,折叠空白
  • trim_content (默认值:true)--截断单词边界
  • max_summary_length (默认值:400)--内容/摘要的最大字符数

所有JSON输出都使用紧凑格式(无缩进),以减少令牌使用。典型节省: 减少约90% 与原始HTML内容相比,在令牌使用方面。