WaterScopeAI-Search / mcp_tools /metadata_tools.py
starfriend's picture
Upload 7 files
4f6fcea verified
Raw History Blame Contribute Delete
1.15 kB
"""Metadata search MCP tool implementations."""
from __future__ import annotations
import json
from metadata_search.search_service import document_ids_from_ranks, search_metadata, search_score_mode
def search_metadata_tool(
query: str,
top_k: int = 10,
year_from: int | None = None,
year_to: int | None = None,
) -> str:
results = search_metadata(
query,
top_k=top_k,
year_from=year_from,
year_to=year_to,
)
return json.dumps(
{"query": query, "results": results, "score_mode": search_score_mode()},
indent=2,
)
def select_papers_from_search_tool(
query: str,
ranks: list[int],
top_k: int = 10,
year_from: int | None = None,
year_to: int | None = None,
) -> str:
results = search_metadata(
query,
top_k=top_k,
year_from=year_from,
year_to=year_to,
)
document_ids = document_ids_from_ranks(results, ranks)
selected = [item for item in results if int(item["rank"]) in ranks]
return json.dumps(
{"query": query, "document_ids": document_ids, "papers": selected},
indent=2,
)