Skip to main content
Glama
gedin-eth

College Football MCP

by gedin-eth
README.md9.2 kB
# College Football MCP (cfb-mcp) A Python-based Model Context Protocol (MCP) server that provides real-time college football game information, betting odds, and historical performance data for teams and players. ## Features - **Live Game Scores & Odds**: Get real-time scores and betting odds for NCAA college football games - **Player Statistics**: Retrieve last 5 games' stats for any player - **Team Performance**: Get recent game results and team information - **Next Game Odds**: Find upcoming games and their betting lines ## Quick Start ### Prerequisites - Python 3.11+ - Docker (optional, for containerized deployment) - API Keys: - [The Odds API](https://the-odds-api.com/) - for live scores and betting odds - [CollegeFootballData API](https://collegefootballdata.com/) - for team and player statistics ### Installation 1. Clone the repository: ```bash git clone https://github.com/gedin-eth/cfb-mcp.git cd cfb-mcp ``` 2. Create a virtual environment: ```bash python3 -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate ``` 3. Install dependencies: ```bash pip install -r requirements.txt ``` 4. Set up environment variables: ```bash cp .env.example .env # Edit .env and add your API keys ``` ### Running the Server ```bash uvicorn src.server:app --host 0.0.0.0 --port 8000 ``` ### Docker Deployment Build the Docker image: ```bash docker build -t cfb-mcp . ``` Run the container: ```bash docker run -p 8000:8000 --env-file .env cfb-mcp ``` For VPS deployment, pull and run: ```bash docker pull <your-registry>/cfb-mcp:latest docker run -d -p 8000:8000 --env-file .env --name cfb-mcp cfb-mcp ``` ## API Endpoints The MCP server exposes the following functions via both MCP protocol (`/mcp/*`) and REST API (`/api/*`) endpoints: ### 1. `get_game_odds_and_score` Get live game scores and betting odds for a specific matchup. **POST** `/mcp/get_game_odds_and_score` or **GET** `/api/get_game_odds_and_score` **Request:** ```json { "team1": "Alabama", "team2": "Auburn" // optional } ``` **Response:** ```json { "home_team": "Alabama", "away_team": "Auburn", "start_time": "2025-11-25T19:00:00Z", "status": "completed", "score": { "home": 28, "away": 14 }, "odds": { "spread": {...}, "moneyline": {...}, "over_under": {...} } } ``` ### 2. `get_recent_player_stats` Get player's last 5 games statistics. **POST** `/mcp/get_recent_player_stats` or **GET** `/api/get_recent_player_stats` **Request:** ```json { "player_name": "Jalen Milroe", "team": "Alabama" // optional, for disambiguation } ``` ### 3. `get_team_recent_results` Get team's last 5 game results. **POST** `/mcp/get_team_recent_results` or **GET** `/api/get_team_recent_results` **Request:** ```json { "team": "Alabama" } ``` ### 4. `get_team_info` Get team's current season overview including record and rankings. **POST** `/mcp/get_team_info` or **GET** `/api/get_team_info` **Request:** ```json { "team": "Alabama" } ``` ### 5. `get_next_game_odds` Get next scheduled game and betting odds for a team. **POST** `/mcp/get_next_game_odds` or **GET** `/api/get_next_game_odds` **Request:** ```json { "team": "Alabama" } ``` ## Architecture ### Phase 1: MCP Server (Completed ✅) - FastAPI-based REST API server - 5 core functions for college football data - Integration with The Odds API and CollegeFootballData API ### Phase 2: Full Web Application (In Progress) - **Agent Service**: FastAPI chat service with LLM integration - **Web UI**: Single-page chat interface (mobile-friendly) - **Caddy**: Reverse proxy with automatic HTTPS - **Docker Compose**: Multi-container orchestration ## Development This project follows the Model Context Protocol standard for AI agent integration. ### Project Structure ``` cfb-mcp/ ├── src/ │ ├── server.py # FastAPI MCP server │ ├── odds_api.py # The Odds API client │ └── cfbd_api.py # CollegeFootballData API client ├── agent_service/ # Agent service (Phase 2) ├── web_ui/ # Web UI (Phase 2) ├── Dockerfile # MCP server container ├── docker-compose.yml # Multi-container setup (Phase 2) ├── Caddyfile # Reverse proxy config (Phase 2) └── requirements.txt # Python dependencies ``` ## Environment Variables Create a `.env` file in the project root with the following variables: ```bash # MCP Server API Keys ODDS_API_KEY=your_odds_api_key CFB_API_KEY=your_cfbd_api_key # Agent Service Configuration APP_TOKEN=choose-a-long-random-string-here OPENAI_API_KEY=your_openai_api_key_here # Optional: MCP Server URL (defaults to http://localhost:8000) # MCP_SERVER_URL=http://localhost:8000 ``` ### Getting API Keys 1. **The Odds API**: Sign up at [the-odds-api.com](https://the-odds-api.com/) 2. **CollegeFootballData API**: Get a free key at [collegefootballdata.com](https://collegefootballdata.com/) 3. **OpenAI API**: Get your key from [platform.openai.com](https://platform.openai.com/) ## Architecture Overview ### System Components ``` ┌─────────────┐ │ Web UI │ (Static HTML/JS) │ (nginx) │ └──────┬──────┘ │ │ HTTPS │ ┌──────▼──────┐ │ Caddy │ (Reverse Proxy) │ (HTTPS) │ └──────┬──────┘ │ ┌───┴───┐ │ │ ┌──▼───┐ ┌─▼────┐ │ Web │ │Agent │ │ UI │ │Service│ └──────┘ └───┬──┘ │ ┌────▼────┐ │ MCP │ │ Server │ └────┬────┘ │ ┌────────┴────────┐ │ │ ┌───▼───┐ ┌───────▼──────┐ │ Odds │ │ CFBD API │ │ API │ │ │ └───────┘ └──────────────┘ ``` ### Component Details 1. **MCP Server** (`src/`): FastAPI server exposing 5 core functions for college football data 2. **Agent Service** (`agent_service/`): FastAPI service that orchestrates LLM + MCP calls 3. **Web UI** (`web_ui/`): Single-page chat interface (mobile-friendly) 4. **Caddy**: Reverse proxy providing HTTPS and routing ## Deployment ### Quick Start with Docker Compose 1. **Set up environment variables:** ```bash cp .env.example .env # Edit .env and add your API keys ``` 2. **Update Caddyfile:** Edit `Caddyfile` and replace `cfb.yourdomain.com` with your actual domain. 3. **Deploy:** ```bash docker compose up -d --build ``` 4. **Access:** - Web UI: `https://cfb.yourdomain.com` - API: `https://cfb.yourdomain.com/api/*` ### Domain Setup for Caddy 1. **Point your domain** to your VPS IP address (A record) 2. **Ensure ports are open:** - Port 80 (HTTP) - Port 443 (HTTPS) 3. **Caddy will automatically:** - Obtain SSL certificate from Let's Encrypt - Renew certificates automatically - Handle HTTPS redirects ### Individual Service Deployment #### MCP Server Only ```bash docker build -t cfb-mcp . docker run -p 8000:8000 --env-file .env cfb-mcp ``` #### Agent Service Only ```bash cd agent_service docker build -t cfb-agent . docker run -p 8000:8000 --env-file ../.env cfb-agent ``` ## Troubleshooting ### Common Issues 1. **"Missing Bearer token" error:** - Ensure `APP_TOKEN` is set in `.env` - Check that the token is being sent in the Authorization header 2. **"ODDS_API_KEY is not configured":** - Verify `.env` file exists and contains `ODDS_API_KEY` - Check that the MCP server container has access to the `.env` file 3. **Caddy certificate issues:** - Ensure domain DNS points to your server - Check that ports 80 and 443 are open - Verify Caddyfile domain matches your actual domain 4. **Agent service can't reach MCP server:** - Check `MCP_SERVER_URL` environment variable - Verify both services are on the same Docker network - Check service names in docker-compose.yml 5. **OpenAI API errors:** - Verify `OPENAI_API_KEY` is set correctly - Check API key has sufficient credits - Review OpenAI API rate limits ### Logs View logs for all services: ```bash docker compose logs -f ``` View logs for specific service: ```bash docker compose logs -f agent docker compose logs -f mcp-server docker compose logs -f caddy ``` ## Development ### Running Locally (without Docker) 1. **MCP Server:** ```bash cd /path/to/cfb-mcp source venv/bin/activate uvicorn src.server:app --host 0.0.0.0 --port 8000 ``` 2. **Agent Service:** ```bash cd agent_service python -m venv venv source venv/bin/activate pip install -r requirements.txt uvicorn main:app --host 0.0.0.0 --port 8001 ``` 3. **Web UI:** - Serve with any static file server, or use nginx locally - Update `API_BASE` in `index.html` to point to agent service ## License MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/gedin-eth/cfb-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server