Spaces:
Sleeping
Sleeping
File size: 1,939 Bytes
881aff7 4f6fcea 881aff7 4f6fcea 881aff7 4f6fcea 881aff7 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 | """MCP retrieval tools used by the agent loop (summaries)."""
from __future__ import annotations
import os
from dotenv import load_dotenv
load_dotenv(override=True)
from mcp.server.fastmcp import FastMCP
from mcp_tools.local_rag_tools import build_paper_context_tool, get_paper_summaries_tool
from mcp_tools.metadata_tools import search_metadata_tool, select_papers_from_search_tool
mcp = FastMCP("waterscope-retrieval")
@mcp.tool()
def search_metadata(
query: str,
top_k: int = 10,
year_from: int | None = None,
year_to: int | None = None,
) -> str:
"""Search title, abstract, and keywords with optional publication-year bounds."""
return search_metadata_tool(
query,
top_k=top_k,
year_from=year_from,
year_to=year_to,
)
@mcp.tool()
def select_papers_from_search(
query: str,
ranks: list[int],
top_k: int = 10,
year_from: int | None = None,
year_to: int | None = None,
) -> str:
"""Return document_ids for 1-based search result ranks."""
return select_papers_from_search_tool(
query,
ranks,
top_k=top_k,
year_from=year_from,
year_to=year_to,
)
@mcp.tool()
def get_paper_summaries(document_ids: list[str]) -> str:
"""Load pre-written summaries for chat context."""
return get_paper_summaries_tool(document_ids)
@mcp.tool()
def build_paper_context(document_ids: list[str], question: str = "") -> str:
"""Assemble truncated multi-paper context for WaterScope /agent_run."""
return build_paper_context_tool(document_ids, question=question)
if __name__ == "__main__":
transport = os.getenv("MCP_TRANSPORT", "stdio")
if transport == "streamable-http":
mcp.run(
transport="streamable-http",
host=os.getenv("MCP_HOST", "127.0.0.1"),
port=int(os.getenv("MCP_PORT", "8001")),
)
else:
mcp.run(transport="stdio")
|