File size: 1,880 Bytes
e23172f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
"""HF Space MCP server for Trifecta Pro predictions."""

from __future__ import annotations

import json
from pathlib import Path
from typing import Any

from .prediction_model import Race, Runner, TrifectaPredictor


def load_predictions(date: str) -> dict[str, Any]:
    path = Path(__file__).resolve().parents[1] / "data" / "predictions" / f"predictions-{date}.json"
    if not path.exists():
        return {"error": f"No predictions for {date}", "path": str(path)}
    return json.loads(path.read_text())


def list_pdfs() -> dict[str, Any]:
    pdf_dir = Path(__file__).resolve().parents[1] / "data" / "pdfs"
    pdfs = sorted([p.name for p in pdf_dir.glob("*.pdf")]) if pdf_dir.exists() else []
    return {"pdfs": pdfs}


class HFMCPServer:
    def __init__(self, space_name: str = "Brettapps/trifecta-bro", access_token: str | None = None) -> None:
        self.space_name = space_name
        self.access_token = access_token
        self.predictor = TrifectaPredictor()

    def get_latest_predictions(self, date: str | None = None) -> dict[str, Any]:
        if not date:
            from datetime import date as d, timedelta
            date = (d.today() + timedelta(days=1)).isoformat()
        return load_predictions(date)

    def get_pdf_list(self) -> dict[str, Any]:
        return list_pdfs()

    def download_pdf(self, pdf_name: str) -> dict[str, Any]:
        pdf_dir = Path(__file__).resolve().parents[1] / "data" / "pdfs"
        path = pdf_dir / pdf_name
        if not path.exists():
            return {"error": f"PDF not found: {pdf_name}"}
        return {"path": str(path), "name": pdf_name}

    def get_space_status(self) -> dict[str, Any]:
        return {
            "space": self.space_name,
            "status": "ok",
            "predictor": "trifecta-model-v1",
        }


def create_mcp_server() -> HFMCPServer:
    return HFMCPServer()