Knuckles-Team

FreshRSS

Community Knuckles-Team
Updated

FreshRSS API + MCP Server + A2A Server — curated, relevance-gated RSS world-model intake for the Knowledge Graph

FreshRSS

CLI or API | MCP | Agent

PyPI - VersionMCP ServerPyPI - DownloadsGitHub Repo starsPyPI - LicenseGitHub last commit (by committer)

Version: 0.1.0

Documentation — Installation, deployment, usage across the API, CLI, and MCPinterfaces, the integrated A2A agent server, and guidance for provisioning thebacking platform are maintained in theofficial documentation.

Table of Contents

  • Overview
  • Key Features
  • MCP
    • Available MCP Tools
    • Environment Variables
    • Transport Configuration Examples
    • Additional Deployment Options
  • Usage
  • Installation
  • Documentation

Overview

FreshRSS MCP Server + A2A Agent

A connector for the self-hosted FreshRSS RSS reader,wrapping its Google Reader compatible API (GReader). It exposes twoaction-routed MCP tool domains:

  • freshrss_readerstream_contents (feed items + continuation), item_contents, unread_count.
  • freshrss_subscriptionslist, subscribe, unsubscribe, label, categories, mark_read, star.

This repository is actively maintained - Contributions are welcome!

Key Features

  • Consolidated Action-Routed MCP Tools: Two togglable tool domains group everyGReader operation, minimizing token overhead and tool bloat in LLM contexts.
  • Google Reader Compatible: Wraps the FreshRSS GReader API — ClientLogin auth,transparent re-authentication on 401, and automatic write-token handling.
  • Enterprise-Grade Security: OIDC token delegation (RFC 8693), Eunomia policyenforcement, and per-instance credential resolution.
  • Integrated A2A Agent: Built-in Pydantic AI agent server alongside the MCP server.
  • Native Telemetry & Tracing: Out-of-the-box OpenTelemetry exports and Langfuse tracing.

MCP

Install the slim [mcp] extra. All MCP examples below installfreshrss-agent[mcp] — the MCP-server extra that pulls only the FastMCP /FastAPI tooling (agent-utilities[mcp]). It deliberately excludes the heavyagent runtime (the epistemic-graph engine, pydantic-ai, dspy, llama-index,tree-sitter), so uvx/container installs are dramatically smaller and faster.Use the full [agent] extra only when you need the integrated Pydantic AI agent(see Installation).

Available MCP Tools

Auto-generated from the live MCP server — do not edit by hand.

MCP Tool Toggle Env Var Description
freshrss_reader READERTOOL Read FreshRSS streams via the Google Reader API. CONCEPT:FRSS-001
freshrss_subscriptions SUBSCRIPTIONSTOOL Curate FreshRSS feeds, categories and item tags. CONCEPT:FRSS-002

2 action-routed tools (default MCP_TOOL_MODE=condensed). Each is enabled unless its toggle is set false; set MCP_TOOL_MODE=verbose (or both) for the 1:1 per-operation surface. Auto-generated — do not edit.

Detailed tool schemas, parameter shapes, and validation constraints are preserved indocs/usage.md.

Environment Variables

Package environment variables
Variable Example Description
HOST 0.0.0.0
PORT 8000
TRANSPORT stdio options: stdio, streamable-http, sse
ENABLE_OTEL True
OTEL_EXPORTER_OTLP_ENDPOINT http://localhost:8080/api/public/otel
OTEL_EXPORTER_OTLP_PUBLIC_KEY pk-...
OTEL_EXPORTER_OTLP_SECRET_KEY sk-...
OTEL_EXPORTER_OTLP_PROTOCOL http/protobuf
EUNOMIA_TYPE none options: none, embedded, remote
EUNOMIA_POLICY_FILE mcp_policies.json
EUNOMIA_REMOTE_URL http://eunomia-server:8000
FRESHRSS_URL http://localhost:8080
FRESHRSS_USER admin
FRESHRSS_API_PASSWORD your_api_password_here
FRESHRSS_SSL_VERIFY True
READERTOOL True
SUBSCRIPTIONSTOOL True
Inherited agent-utilities variables (apply to every connector)
Variable Example Description
MCP_TOOL_MODE condensed Tool surface: condensed
MCP_ENABLED_TOOLS Comma-separated tool allow-list
MCP_DISABLED_TOOLS Comma-separated tool deny-list
MCP_ENABLED_TAGS Comma-separated tag allow-list
MCP_DISABLED_TAGS Comma-separated tag deny-list
MCP_CLIENT_AUTH Outbound MCP auth (oidc-client-credentials for fleet calls)
OIDC_CLIENT_ID OIDC client id (service-account auth)
OIDC_CLIENT_SECRET OIDC client secret (service-account auth)
DEBUG False Verbose logging
PYTHONUNBUFFERED 1 Unbuffered stdout (recommended in containers)
MCP_URL http://localhost:8000/mcp URL of the MCP server the agent connects to
PROVIDER openai LLM provider for the agent
MODEL_ID gpt-4o Model id for the agent
ENABLE_WEB_UI True Serve the AG-UI web interface

17 package + 14 inherited variable(s). Auto-generated from .env.example + the shared agent-utilities set — do not edit.

Every variable the server reads. A copy-paste template lives in .env.example.

Connection & Credentials

Variable Description Default
FRESHRSS_URL Base URL of the FreshRSS instance (e.g. http://freshrss.arpa) http://localhost:8080
FRESHRSS_USER FreshRSS username (GReader Email field)
FRESHRSS_API_PASSWORD FreshRSS API password (Settings → Authentication)
FRESHRSS_SSL_VERIFY Whether to verify TLS certificates True

MCP server / transport

Variable Description Default
TRANSPORT stdio, streamable-http, or sse stdio
HOST Bind host (HTTP transports) 0.0.0.0
PORT Bind port (HTTP transports) 8000
MCP_TOOL_MODE Tool surface: condensed, verbose, or both condensed

Telemetry & governance

Variable Description Default
ENABLE_OTEL Enable OpenTelemetry / Langfuse export True
EUNOMIA_TYPE Authorization mode: none, embedded, remote none
EUNOMIA_POLICY_FILE Embedded policy file mcp_policies.json
EUNOMIA_REMOTE_URL Remote Eunomia server URL

Tool toggles — each action-routed tool domain can be disabled via its toggle env var(set to false): READERTOOL, SUBSCRIPTIONSTOOL (see theAvailable MCP Tools table above).

stdio Transport (local IDEs - Cursor, Claude Desktop, VS Code)
{
  "mcpServers": {
    "freshrss-mcp": {
      "command": "uvx",
      "args": ["--from", "freshrss-agent[mcp]", "freshrss-mcp"],
      "env": {
        "FRESHRSS_URL": "https://service.example.com",
        "FRESHRSS_USER": "admin",
        "FRESHRSS_API_PASSWORD": "your_api_password"
      }
    }
  }
}
Streamable-HTTP Transport (networked / production)
{
  "mcpServers": {
    "freshrss-mcp": {
      "command": "uvx",
      "args": ["--from", "freshrss-agent[mcp]", "freshrss-mcp", "--transport", "streamable-http", "--port", "8000"],
      "env": {
        "TRANSPORT": "streamable-http",
        "HOST": "0.0.0.0",
        "PORT": "8000",
        "FRESHRSS_URL": "https://service.example.com",
        "FRESHRSS_USER": "admin",
        "FRESHRSS_API_PASSWORD": "your_api_password"
      }
    }
  }
}

Additional Deployment Options

freshrss-agent can also run as a local container (Docker / Podman / uv) or beconsumed from a remote deployment. TheDeployment guide has full,copy-paste mcp_config.json for all four transports — stdio, streamable-http,local container / uv, and remote URL:

  • Local container / uv — launch the server from mcp_config.json via uvx,docker run, or podman run, or point at a local streamable-http container by url.
  • Remote URL — connect to a server deployed behind Caddy athttp://freshrss-mcp.arpa/mcp using the "url" key.

Usage

Once configured, an LLM (or a direct caller) invokes a tool domain with an actionand a JSON params_json payload. Examples:

// Fetch the 50 most recent unread items, newest first
{
  "tool": "freshrss_reader",
  "action": "stream_contents",
  "params_json": "{\"count\": 50, \"order\": \"n\"}"
}

// Subscribe to a feed and file it under a category
{
  "tool": "freshrss_subscriptions",
  "action": "subscribe",
  "params_json": "{\"feed_url\": \"http://example.com/rss\", \"category\": \"News\"}"
}

// Mark items as read
{
  "tool": "freshrss_subscriptions",
  "action": "mark_read",
  "params_json": "{\"item_ids\": [\"tag:google.com,2005:reader/item/0001\"]}"
}

Invoking a tool with an unknown or omitted action returns the discovery payloadlisting every valid action for that domain.

Installation

Pick the extra that matches what you want to run:

Extra Installs Use when
freshrss-agent[mcp] Slim MCP server only (agent-utilities[mcp] — FastMCP/FastAPI) You only run the MCP server (smallest install / image)
freshrss-agent[agent] Full agent runtime (agent-utilities[agent,logfire] — Pydantic AI + the epistemic-graph engine) You run the integrated agent
freshrss-agent[all] Everything (mcp + agent + logfire) Development / both surfaces
# MCP server only (recommended for tool hosting — slim deps)
uv pip install "freshrss-agent[mcp]"

# Full agent runtime (Pydantic AI + epistemic-graph engine)
uv pip install "freshrss-agent[agent]"

# Everything (development)
uv pip install "freshrss-agent[all]"      # or: python -m pip install "freshrss-agent[all]"

After installation two console scripts are available:

freshrss-mcp      # run the MCP server
freshrss-agent    # run the A2A agent server

Container images (:mcp vs :agent)

One multi-stage docker/Dockerfile builds two right-sized images, selected by --target:

Image tag Build target Contents Entrypoint
knucklessg1/freshrss-agent:mcp --target mcp freshrss-agent[mcp]slim, no engine/pydantic-ai/dspy/llama-index/tree-sitter freshrss-mcp
knucklessg1/freshrss-agent:latest --target agent (default) freshrss-agent[agent]full agent runtime + epistemic-graph engine freshrss-agent
docker build --target mcp   -t knucklessg1/freshrss-agent:mcp    docker/   # slim MCP server
docker build --target agent -t knucklessg1/freshrss-agent:latest docker/   # full agent

docker/mcp.compose.yml runs the slim :mcp server; docker/agent.compose.yml runs theagent (:latest) with a co-located :mcp sidecar.

Knowledge-graph database (epistemic-graph)

The full agent ([agent] / :latest) embeds the epistemic-graph engine (pulled intransitively via agent-utilities[agent]). For production — or to share one knowledge graphacross multiple agents — run epistemic-graph as its own database container and point theagent at it instead of embedding it. Deployment recipes (single-node + Raft HA), connectionconfig, and the full database architecture (with diagrams) are documented in theepistemic-graph deployment guide.The slim [mcp] server does not require the database.

Documentation

Full installation, deployment, usage, and platform-provisioning guides live in thedocs/ directory and are published via mkdocs + GitHub Pages at theofficial documentation site:

  • Overview · Installation ·Usage · Deployment ·Platform · Concepts

MCP Server · Populars

MCP Server · New

    trendsmcp-ai

    Trends MCP

    MCP server for live trend data. Query Google Search, YouTube, TikTok, Reddit, Amazon, Wikipedia, News sentiment, Web Traffic, App Downloads, Steam, npm and more. Works with Claude, Cursor, VS Code, GitHub Copilot, ChatGPT, Windsurf, Cline, Raycast and any MCP-compatible.

    Community trendsmcp-ai
    jacob-bd

    Gemini Notebook (formerly Google NotebookLM) CLI & MCP Server

    Programmatic access to Gemini Notebook - via command-line interface (CLI), Model Context Protocol (MCP) server, and AI agent skills.

    Community jacob-bd
    PxyUp

    Fitter — web data for AI agents

    New way for collect information from the API's/Websites

    Community PxyUp
    kayhendriksen

    foehn

    Download MeteoSwiss Open Government Data — weather stations, radar, hail, forecasts and climate series — via Python API, CLI, or MCP server, as DataFrames, Parquet, xarray Datasets or Zarr stores

    Community kayhendriksen
    mldsveda

    pyscrappy

    All-in-one Web Scrapper for Python

    Community mldsveda