Skip to main content
Glama
gedin-eth

College Football MCP

by gedin-eth

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

Installation

  1. Clone the repository:

git clone https://github.com/gedin-eth/cfb-mcp.git
cd cfb-mcp
  1. Create a virtual environment:

python3 -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate
  1. Install dependencies:

pip install -r requirements.txt
  1. Set up environment variables:

cp .env.example .env
# Edit .env and add your API keys

Running the Server

uvicorn src.server:app --host 0.0.0.0 --port 8000

Docker Deployment

Build the Docker image:

docker build -t cfb-mcp .

Run the container:

docker run -p 8000:8000 --env-file .env cfb-mcp

For VPS deployment, pull and run:

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:

{
  "team1": "Alabama",
  "team2": "Auburn"  // optional
}

Response:

{
  "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:

{
  "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:

{
  "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:

{
  "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:

{
  "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:

# 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

  2. CollegeFootballData API: Get a free key at collegefootballdata.com

  3. OpenAI API: Get your key from 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:

    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:

    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

docker build -t cfb-mcp .
docker run -p 8000:8000 --env-file .env cfb-mcp

Agent Service Only

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:

docker compose logs -f

View logs for specific service:

docker compose logs -f agent
docker compose logs -f mcp-server
docker compose logs -f caddy

Development

Running Locally (without Docker)

  1. MCP Server:

    cd /path/to/cfb-mcp
    source venv/bin/activate
    uvicorn src.server:app --host 0.0.0.0 --port 8000
  2. Agent Service:

    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

-
security - not tested
F
license - not found
-
quality - not tested

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