WaterScopeAI-Search / mcp_tools /local_rag_tools.py
starfriend's picture
Upload 40 files
881aff7 verified
Raw History Blame Contribute Delete
1.24 kB
"""Summary MCP tools for paper-grounded chat."""
from __future__ import annotations
import json
from backend.chat_settings import truncate_summary
from local_rag.summaries import summaries_for_documents
def get_paper_summaries_tool(document_ids: list[str]) -> str:
return json.dumps({"sources": summaries_for_documents(document_ids)}, indent=2)
def build_paper_context_tool(document_ids: list[str], question: str = "") -> str:
sources = summaries_for_documents(document_ids)
if not sources:
return json.dumps({"error": "No summaries found for the selected papers."}, indent=2)
n_papers = len(sources)
parts: list[str] = []
for index, source in enumerate(sources, start=1):
parts.append(
f"Paper {index}: {source['title']}\n"
f"File: {source['file_name']}\n\n"
f"{truncate_summary(source['text'], n_papers=n_papers, question=question)}"
)
context = "\n\n---\n\n".join(parts)
return json.dumps(
{
"context": context,
"sources": [{"document_id": s["document_id"], "title": s["title"]} for s in sources],
"n_papers": n_papers,
"question": question,
},
indent=2,
)