Add FreshRSS ingestion and rule filtering
This commit is contained in:
@@ -1,9 +1,13 @@
|
||||
from __future__ import annotations
|
||||
from __future__ import annotations
|
||||
|
||||
from mcp.server.fastmcp import FastMCP
|
||||
|
||||
from summary_mcp.core.pipeline import extract_content
|
||||
from summary_mcp.filters.engine import evaluate_filter_rules, load_filter_rules
|
||||
from summary_mcp.models.document import ExtractedArticle
|
||||
from summary_mcp.models.filtering import FilterContext, FilterInput
|
||||
from summary_mcp.models.item import Item
|
||||
from summary_mcp.models.llm_result import LlmSummaryResult
|
||||
from summary_mcp.models.summary_io import ExtractionInput
|
||||
|
||||
|
||||
@@ -32,6 +36,31 @@ def extract_item_content(item: dict) -> dict:
|
||||
return result.model_dump(mode="json")
|
||||
|
||||
|
||||
@mcp.tool()
|
||||
def filter_summary_result(
|
||||
summary_result: dict,
|
||||
extracted_article: dict | None = None,
|
||||
item: dict | None = None,
|
||||
context: dict | None = None,
|
||||
) -> dict:
|
||||
"""Apply deterministic filter rules to a structured summary result."""
|
||||
parsed_summary = LlmSummaryResult.model_validate(summary_result)
|
||||
parsed_article = ExtractedArticle.model_validate(extracted_article) if extracted_article else None
|
||||
parsed_item = Item.model_validate(item) if item else None
|
||||
parsed_context = FilterContext.model_validate(context or {})
|
||||
rules = load_filter_rules()
|
||||
decision = evaluate_filter_rules(
|
||||
FilterInput(
|
||||
item=parsed_item,
|
||||
article=parsed_article,
|
||||
summary=parsed_summary,
|
||||
context=parsed_context,
|
||||
),
|
||||
rules,
|
||||
)
|
||||
return decision.model_dump(mode="json")
|
||||
|
||||
|
||||
def main() -> None:
|
||||
mcp.run()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user