# How to integrate College football data MCP with OpenAI Agents SDK

```json
{
  "title": "How to integrate College football data MCP with OpenAI Agents SDK",
  "toolkit": "College football data",
  "toolkit_slug": "college_football_data",
  "framework": "OpenAI Agents SDK",
  "framework_slug": "open-ai-agents-sdk",
  "url": "https://composio.dev/toolkits/college_football_data/framework/open-ai-agents-sdk",
  "markdown_url": "https://composio.dev/toolkits/college_football_data/framework/open-ai-agents-sdk.md",
  "updated_at": "2026-05-12T10:07:13.308Z"
}
```

## Introduction

This guide walks you through connecting College football data to the OpenAI Agents SDK using the Composio tool router. By the end, you'll have a working College football data agent that can show betting lines for this week's games, get tv schedule for sec games this weekend, list advanced box scores for ohio state through natural language commands.
This guide will help you understand how to give your OpenAI Agents SDK agent real control over a College football data account through Composio's College football data MCP server.
Before we dive in, let's take a quick look at the key ideas and tools involved.

## Also integrate College football data with

- [Claude Agent SDK](https://composio.dev/toolkits/college_football_data/framework/claude-agents-sdk)
- [Claude Code](https://composio.dev/toolkits/college_football_data/framework/claude-code)
- [Claude Cowork](https://composio.dev/toolkits/college_football_data/framework/claude-cowork)
- [Codex](https://composio.dev/toolkits/college_football_data/framework/codex)
- [OpenClaw](https://composio.dev/toolkits/college_football_data/framework/openclaw)
- [Hermes](https://composio.dev/toolkits/college_football_data/framework/hermes-agent)
- [CLI](https://composio.dev/toolkits/college_football_data/framework/cli)
- [Google ADK](https://composio.dev/toolkits/college_football_data/framework/google-adk)
- [LangChain](https://composio.dev/toolkits/college_football_data/framework/langchain)
- [Vercel AI SDK](https://composio.dev/toolkits/college_football_data/framework/ai-sdk)
- [Mastra AI](https://composio.dev/toolkits/college_football_data/framework/mastra-ai)
- [LlamaIndex](https://composio.dev/toolkits/college_football_data/framework/llama-index)
- [CrewAI](https://composio.dev/toolkits/college_football_data/framework/crew-ai)

## TL;DR

Here's what you'll learn:
- Get and set up your OpenAI and Composio API keys
- Install the necessary dependencies
- Initialize Composio and create a Tool Router session for College football data
- Configure an AI agent that can use College football data as a tool
- Run a live chat session where you can ask the agent to perform College football data operations

## What is OpenAI Agents SDK?

The OpenAI Agents SDK is a lightweight framework for building AI agents that can use tools and maintain conversation state. It provides a simple interface for creating agents with hosted MCP tool support.
Key features include:
- Hosted MCP Tools: Connect to external services through hosted MCP endpoints
- SQLite Sessions: Persist conversation history across interactions
- Simple API: Clean interface with Agent, Runner, and tool configuration
- Streaming Support: Real-time response streaming for interactive applications

## What is the College football data MCP server, and what's possible with it?

The College football data MCP server is an implementation of the Model Context Protocol that connects your AI agent and assistants like Claude, Cursor, etc directly to your College Football Data account. It provides structured and secure access to comprehensive college football stats, schedules, advanced analytics, and recruiting data, so your agent can fetch game results, analyze team performance, retrieve broadcast info, and explore historical metrics on your behalf.
- Retrieve game schedules and results: Instantly fetch upcoming games, past scores, and matchup outcomes filtered by season, week, team, or conference.
- Analyze advanced team and player stats: Have your agent pull in-depth box scores, advanced metrics, and season-long analytics to compare team or player performance.
- Access media and broadcast information: Quickly get details on TV, radio, and streaming coverage for selected games, including broadcast schedules and platforms.
- Review team talent and recruiting rankings: Let your agent track composite team talent scores and recruiting class data across seasons for any program.
- Explore historical conference and division data: Effortlessly trace a team's conference membership history, division alignment, and related metadata over time.

## Supported Tools

| Tool slug | Name | Description |
|---|---|---|
| `COLLEGE_FOOTBALL_DATA_ADVANCED_BOX_SCORE` | Advanced Box Score | Retrieves advanced analytics for a single college football game including: - Team metrics: PPA (Predicted Points Added), success rates, rushing efficiency, havoc rates, scoring opportunities - Player metrics: Usage rates by quarter and play type, individual PPA breakdowns - Game info: Teams, scores, win probabilities, excitement index Requires a valid gameId from Get Games and Results action. Returns detailed breakdown by quarter. |
| `COLLEGE_FOOTBALL_DATA_ADVANCED_GAME_STATS` | Advanced Game Stats | Tool to retrieve advanced team metrics at the game level. Use when detailed offensive and defensive metrics (success rates, explosiveness, havoc) are needed. |
| `COLLEGE_FOOTBALL_DATA_ADVANCED_SEASON_STATS_TEAM` | Advanced Season Stats by Team | Retrieve advanced season-level team statistics including PPA (Predicted Points Added), success rates, explosiveness, havoc metrics, and rushing/passing efficiency breakdowns. Use this for in-depth team performance analysis beyond basic stats. At least one of 'year' or 'team' must be provided. |
| `COLLEGE_FOOTBALL_DATA_BETTING_LINES` | Betting Lines | Tool to fetch betting lines and totals by game and provider. Use when you need current or historical betting line data filtered by specific criteria. |
| `COLLEGE_FOOTBALL_DATA_COMPOSITE_TEAM_TALENT` | Composite Team Talent | Fetches 247Sports composite team talent rankings for a given season. Returns a list of all FBS teams ranked by their composite talent score, which is based on aggregate recruit ratings. Higher scores indicate rosters with more highly-rated recruits. |
| `COLLEGE_FOOTBALL_DATA_CONFERENCE_MEMBERSHIPS_HISTORY` | Conference Memberships | Tool to retrieve current conference memberships for college football teams. Returns which teams belong to which conference, optionally filtered by conference. Use to find all teams in a specific conference or to see the current conference landscape. |
| `COLLEGE_FOOTBALL_DATA_DIVISIONS_BY_CONFERENCE` | Divisions by Conference | Tool to list FBS/FCS conference divisions with active years and metadata. Use after specifying an optional season year to filter active divisions. |
| `COLLEGE_FOOTBALL_DATA_GET_CONFERENCE_SP` | Get Conference SP+ Ratings | Retrieve aggregated historical conference SP+ (Success Rate + Points Per Play) ratings for college football conferences. Use this to get conference-level offensive, defensive, and special teams metrics aggregated from all teams in each conference. Filter by year to get specific season data, or by conference name to get historical ratings for a specific conference. |
| `COLLEGE_FOOTBALL_DATA_GET_DRIVE_DATA` | Get Drive Data | Retrieves college football drive-level data including offensive/defensive teams, yards gained, drive results (TD, PUNT, INT, etc.), time elapsed, and scoring information. Use to analyze drive efficiency, red zone performance, or game flow. Requires year; optionally filter by week, team, conference, or season type (regular/postseason). |
| `COLLEGE_FOOTBALL_DATA_GET_FIELD_GOAL_EXPECTED_POINTS` | Get Field Goal Expected Points | Retrieves field goal expected points values for various field positions and distances. Returns static model data showing expected points for field goal attempts based on distance. Useful for analyzing field goal decision-making and expected value calculations. |
| `COLLEGE_FOOTBALL_DATA_GET_FPI` | FPI Ratings | Retrieves historical Football Power Index (FPI) ratings for college football teams. FPI is ESPN's measure that predicts team strength and game outcomes. Use this to get team ratings, efficiency metrics, and resume rankings. Specify a year to get all teams' ratings for that season, or a team name to get historical ratings, or both for a specific team-season combination. |
| `COLLEGE_FOOTBALL_DATA_GET_GAME_HAVOC_STATS` | Get Game Havoc Stats | Tool to retrieve havoc statistics aggregated by game. Use when you need game-level havoc metrics including DB havoc rate, front seven havoc rate, and total havoc events for offense and defense. |
| `COLLEGE_FOOTBALL_DATA_GET_GAME_MEDIA` | Get Game Media | Retrieve broadcast information for college football games including TV channels, streaming platforms, and radio outlets. Use this to find where games are being broadcast. Returns information about the broadcaster/outlet, start time, and teams involved. Common use cases: - Find TV channel for a specific game: set year, week, and team - Get all broadcasts for a conference: set year and conference - Find streaming options: set mediaType='web' - Get bowl game broadcasts: set seasonType='postseason' |
| `COLLEGE_FOOTBALL_DATA_GET_GAMES_AND_RESULTS` | Get Games and Results | Tool to retrieve college American football games and results for a given season/week/team. Use when you need game schedules or outcomes filtered by specific criteria. Covers NCAA only; NFL and other sports return no data. Overly narrow filter combinations (e.g., mismatched `team` and `conference`) may yield zero results — relax filters if the response is empty. |
| `COLLEGE_FOOTBALL_DATA_GET_PLAYER_GAME_STATS` | Get Player Game Stats | Fetches detailed player statistics for college football games. Returns individual player stats (passing, rushing, receiving, defensive, kicking, etc.) organized by game and team. Use cases: - Get QB passing stats for a specific team's games - View rushing leaders for a conference in a given week - Analyze defensive stats for postseason games NOTE: Requires 'year' plus at least one of: 'week', 'team', or 'conference'. Use 'category' filter to limit results to specific stat types (recommended for faster responses). |
| `COLLEGE_FOOTBALL_DATA_GET_PLAYER_USAGE` | Get Player Usage | Retrieves player usage data for a given season. Returns usage percentages across different play situations (overall, passing, rushing, by down, etc.). Use this to analyze how frequently players are involved in plays, filtered by team, conference, position, or specific player. |
| `COLLEGE_FOOTBALL_DATA_GET_PLAY_TYPES` | Get Play Types | Tool to fetch all available play types. Use when you need a catalog of play types for filtering or referencing play data. |
| `COLLEGE_FOOTBALL_DATA_GET_PREDICTED_POINTS_ADDED_BY_TEAM` | Get Predicted Points Added By Team | Tool to retrieve historical team Predicted Points Added (PPA) metrics by season. Use when you need season-level PPA performance data for teams to analyze offensive and defensive efficiency across play types and down situations. |
| `COLLEGE_FOOTBALL_DATA_GET_PREGAME_WIN_PROBABILITIES` | Get Pregame Win Probabilities | Tool to retrieve pregame win probabilities for college football games. Use when you need predictive data about game outcomes before they are played, filtered by season, week, or team. |
| `COLLEGE_FOOTBALL_DATA_GET_RECRUITS` | Get Recruits | Retrieves player recruiting rankings from the College Football Data API. Returns detailed information about high school, prep school, and junior college recruits including star ratings, composite ratings, rankings, physical measurements, and commitment status. Use this action to analyze recruiting classes by year or team, compare recruits by position or location, or track where top prospects commit. At least one of year or team parameters must be provided. |
| `COLLEGE_FOOTBALL_DATA_GET_STATS_CATEGORIES` | Get Stats Categories | Tool to fetch all available team statistical categories. Use when you need to discover valid category names for statistical analysis or filtering team stats. |
| `COLLEGE_FOOTBALL_DATA_GET_TEAM_GAME_STATS` | Get Team Game Stats | Fetch team-level box score statistics for college football games. Returns detailed game stats including offense (rushing/passing yards, TDs, turnovers), defense (tackles, sacks, interceptions), and special teams (kick/punt returns) for each team. Use cases: - Get box scores for a specific team's games in a season - Compare team performance across conference games in a given week - Analyze offensive/defensive stats for a specific matchup Note: At least one of week, team, or conference must be provided to filter results. |
| `COLLEGE_FOOTBALL_DATA_GET_TEAM_RECRUITING_RANKINGS` | Get Team Recruiting Rankings | Retrieve team recruiting rankings from the College Football Data API. Returns composite recruiting rankings based on recruit star ratings and commitments. Use to compare recruiting success across teams or track a team's recruiting performance over time. |
| `COLLEGE_FOOTBALL_DATA_GET_TEAMS_ATS` | Get Teams ATS Records | Tool to retrieve against-the-spread (ATS) summary by team. Use when you need historical betting performance data showing how teams performed relative to point spreads. |
| `COLLEGE_FOOTBALL_DATA_GET_USER_INFO` | Get User Info | Retrieves information about the authenticated user from the College Football Data API. Returns the user's Patreon subscription level and remaining API calls for rate limit monitoring. Use this to check your current API quota and subscription status. |
| `COLLEGE_FOOTBALL_DATA_GET_WIN_PROBABILITY` | Get Win Probability | Tool to query play-by-play win probabilities for a specific game. Use when you need detailed probability metrics showing how win likelihood changed throughout the game. |
| `COLLEGE_FOOTBALL_DATA_LIST_COACHES_AND_HISTORY` | List Coaches and History | Tool to get coaching records and history. Use when you need coaches’ season-by-season data with optional filters. |
| `COLLEGE_FOOTBALL_DATA_LIST_CONFERENCES` | List Conferences | Retrieves all college football conferences from the College Football Data API. Returns conferences across all NCAA divisions (FBS, FCS, Division II, Division III). Use this to get conference IDs for filtering other API calls or to display conference information. No parameters required - returns the complete list of conferences. |
| `COLLEGE_FOOTBALL_DATA_LIST_FBS_TEAMS` | List FBS Teams | Tool to list FBS teams for a given season. Use after selecting the season year to retrieve all FBS teams. |
| `COLLEGE_FOOTBALL_DATA_LIST_FCS_TEAMS` | List FCS Teams | Tool to list FCS teams for a given season and conference. Use when you need a list of FCS programs filtered by season year and conference. |
| `COLLEGE_FOOTBALL_DATA_LIST_TEAMS` | List Teams | Retrieve a list of college football teams from the CFBD (College Football Data) API. Use this action to: - Get all college football teams (call with no parameters) - Get teams from a specific season (use year parameter) - Get teams from a specific conference (use conference parameter) - Combine filters to get conference teams for a specific season Returns team details including: name, mascot, abbreviation, conference, classification (FBS/FCS/D2/D3), team colors, logos, Twitter handle, and stadium/venue information. |
| `COLLEGE_FOOTBALL_DATA_LIST_VENUES_STADIUMS` | List Venues and Stadiums | Tool to list college football venues with metadata (name, capacity, location, etc.). Use when you need detailed venue information for a specific season. |
| `COLLEGE_FOOTBALL_DATA_NFL_DRAFT_PICKS` | NFL Draft Picks | Tool to list NFL Draft picks. Use when you need draft pick data by year, round, team, player, etc. |
| `COLLEGE_FOOTBALL_DATA_NFL_DRAFT_POSITIONS` | NFL Draft Positions | Retrieves the standardized list of NFL draft positions. Returns all position names and abbreviations used to classify players in NFL drafts. Useful for filtering draft picks by position or understanding position categories in draft analysis. No parameters required. |
| `COLLEGE_FOOTBALL_DATA_NFL_DRAFT_TEAMS` | NFL Draft Teams | Tool to list NFL teams used in draft endpoints. Use when preparing to retrieve NFL draft data by team. |
| `COLLEGE_FOOTBALL_DATA_PLAY_BY_PLAY_DATA` | Play-by-Play Data | Tool to fetch play-by-play data for college football games. Use when you need detailed play logs filtered by season, week, team, or game. |
| `COLLEGE_FOOTBALL_DATA_PLAY_STATS_PLAYER` | Play Stats Player | Fetch player-level statistics tied to individual plays. Returns detailed stats for each player's contribution to a play (rushes, receptions, completions, etc.). Use this when you need: - Play-by-play player statistics - Granular data on individual player performance per play - Analysis of a specific athlete's game contributions Note: Recommend filtering by year/week/team or gameId to limit result size. |
| `COLLEGE_FOOTBALL_DATA_PLAY_STAT_TYPES` | Play Stat Types | Tool to fetch all play-level stat type definitions. Use when you need a catalog of available play stat types for filtering or referencing. |
| `COLLEGE_FOOTBALL_DATA_PPA_PLAYER_BY_GAME_ACTION` | Player PPA by Game | Retrieve player-level PPA (Predicted Points Added) / EPA (Expected Points Added) stats for individual games. PPA measures how many points a player adds/subtracts compared to average performance on similar plays. Use this tool to analyze individual player contributions per game, filtered by season, week, team, or position. IMPORTANT: Either 'week' OR 'team' must be specified in the request. |
| `COLLEGE_FOOTBALL_DATA_PPA_PLAYER_BY_SEASON` | PPA Player By Season | Tool to fetch player-level PPA/EPA aggregated by season. Use when you need seasonal PPA metrics for specific players or groups after applying filters. |
| `COLLEGE_FOOTBALL_DATA_PPA_PREDICTED_POINTS_EP` | Predict Expected Points (EP) | Get expected points (EP) for all field positions given a specific down and distance scenario. Returns expected points values for yard lines 1-99, useful for analyzing game situations and fourth-down decisions. Common scenarios: 1st and 10, 3rd and short, 4th and goal. |
| `COLLEGE_FOOTBALL_DATA_PPA_TEAM_BY_GAME` | PPA Team By Game | Tool to retrieve team Predicted Points Added (PPA) by game. Use when you need team-level PPA metrics for games after filtering by season, week, team, or date. |
| `COLLEGE_FOOTBALL_DATA_RANKINGS_POLLS` | Rankings Polls | Retrieve college football poll rankings (AP Top 25, Coaches Poll, Playoff Committee, FCS, Division II/III). Returns weekly rankings including team rank, school name, conference, first-place votes, and points. Use this tool to look up historical or current poll standings for any season from 1900 to present. Required: year (e.g., 2023). Optional: season_type (regular/postseason), week number. |
| `COLLEGE_FOOTBALL_DATA_RATINGS_ELO` | Elo Ratings | Tool to retrieve Elo ratings for college football teams. Use when you need historical Elo ratings by season or for a specific team. |
| `COLLEGE_FOOTBALL_DATA_RATINGS_SP_PLUS` | SP+ Ratings | Retrieve SP+ (Success Rate + Points Per Play) team ratings for college football. SP+ is an advanced tempo- and opponent-adjusted measure of college football efficiency. Use this to get overall team ratings, offensive/defensive rankings, and special teams metrics. Specify a year to get all teams' ratings for that season, or a team name to get historical ratings across seasons, or both for a specific team-season combination. |
| `COLLEGE_FOOTBALL_DATA_RATINGS_SRS` | SRS Ratings | Retrieves Simple Rating System (SRS) team ratings. SRS measures team strength based on point differential adjusted for strength of schedule. Either year or team parameter must be provided. Use year to get all teams' ratings for a season, or team to get historical ratings for a specific team. |
| `COLLEGE_FOOTBALL_DATA_RECRUITING_GROUP_DICTIONARY` | Recruiting Group Dictionary | Retrieves aggregated college football recruiting data grouped by position. Use this tool to analyze recruiting performance by position group for specific teams or conferences. Returns composite ratings, star averages, and commit counts by position group (e.g., Quarterback, Receiver, Defensive Back). Useful for comparing recruiting strength across different positions or evaluating team/conference recruiting patterns. |
| `COLLEGE_FOOTBALL_DATA_RECRUITING_TRANSFER_PORTAL` | Recruiting Transfer Portal | Retrieves NCAA college football transfer portal entries for a given season. Returns player transfer information including origin school, destination school (if committed), position, star rating, transfer rating, transfer date, and eligibility status. Useful for tracking player movement between schools, analyzing transfer trends, and identifying key transfers. Data is available from 2021 onwards when the transfer portal became widely used. |
| `COLLEGE_FOOTBALL_DATA_RETURNING_PRODUCTION_TEAM` | Returning Production by Team | Tool to fetch Bill Connelly–style returning production splits by team and season. Use when evaluating returning offense, defense, and overall production for teams in a given season. |
| `COLLEGE_FOOTBALL_DATA_SEARCH_PLAYERS` | Search Players | Search for college football players by name. Returns top 100 results matching the search term. Use this action to find players by name and optionally filter by year, team, or position. |
| `COLLEGE_FOOTBALL_DATA_SEASON_STATS_PLAYER` | Season Stats Player | Fetch aggregated season statistics for college football players. Returns individual player stats by category (passing, rushing, receiving, defensive, kicking, etc.) for a specified year. Useful for comparing player performance across a season or filtering by team/conference. |
| `COLLEGE_FOOTBALL_DATA_SEASON_STATS_TEAM` | Season Team Stats | Tool to get basic season stats aggregated by team and season. Use when you need a summary of team-level statistics for a particular season. |
| `COLLEGE_FOOTBALL_DATA_SEASON_TYPES_DICTIONARY` | Season Types Dictionary | Retrieve the list of available season types for a specific college football year. Returns types like 'regular', 'postseason', and for certain years 'spring_regular', 'spring_postseason'. Use this to discover valid seasonType values to pass to other endpoints. |
| `COLLEGE_FOOTBALL_DATA_TEAM_MATCHUP_HISTORY` | Team Matchup History | Tool to retrieve head-to-head team matchup records over a date range. Use after selecting two FBS teams to compare their matchup history. |
| `COLLEGE_FOOTBALL_DATA_TEAM_RECORDS` | Get team season records | Retrieve college football team win-loss records for a specific season. Returns detailed breakdowns including total, conference, home, away, neutral site, regular season, and postseason records. Requires a year parameter. Optionally filter by team name, conference, division, or season type. |
| `COLLEGE_FOOTBALL_DATA_TEAM_ROSTER` | Get Team Roster | Fetches the roster for a college football team for a specific season. Returns player details including name, position, height, weight, jersey number, academic year, and hometown info. Use this to get player information for any FBS or FCS team from 2009 onwards. |

## Supported Triggers

None listed.

## Creating MCP Server - Stand-alone vs Composio SDK

The College football data MCP server is an implementation of the Model Context Protocol that connects your AI agent to College football data. It provides structured and secure access so your agent can perform College football data operations on your behalf through a secure, permission-based interface.
With Composio's managed implementation, you don't have to create your own developer app. For production, if you're building an end product, we recommend using your own credentials. The managed server helps you prototype fast and go from 0-1 faster.

## Step-by-step Guide

### 1. Prerequisites

Before starting, make sure you have:
- Composio API Key and OpenAI API Key
- Primary know-how of OpenAI Agents SDK
- A live College football data project
- Some knowledge of Python or Typescript

### 1. Getting API Keys for OpenAI and Composio

OpenAI API Key
- Go to the [OpenAI dashboard](https://platform.openai.com/settings/organization/api-keys) and create an API key. You'll need credits to use the models, or you can connect to another model provider.
- Keep the API key safe.
Composio API Key
- Log in to the [Composio dashboard](https://dashboard.composio.dev?utm_source=toolkits&utm_medium=framework_docs).
- Go to Settings and copy your API key.

### 2. Install dependencies

Install the Composio SDK and the OpenAI Agents SDK.
```python
pip install composio_openai_agents openai-agents python-dotenv
```

```typescript
npm install @composio/openai-agents @openai/agents dotenv
```

### 3. Set up environment variables

Create a .env file and add your OpenAI and Composio API keys.
```bash
OPENAI_API_KEY=sk-...your-api-key
COMPOSIO_API_KEY=your-api-key
USER_ID=composio_user@gmail.com
```

### 4. Import dependencies

What's happening:
- You're importing all necessary libraries.
- The Composio and OpenAIAgentsProvider classes are imported to connect your OpenAI agent to Composio tools like College football data.
```python
import asyncio
import os
from dotenv import load_dotenv

from composio import Composio
from composio_openai_agents import OpenAIAgentsProvider
from agents import Agent, Runner, HostedMCPTool, SQLiteSession
```

```typescript
import 'dotenv/config';
import { Composio } from '@composio/core';
import { OpenAIAgentsProvider } from '@composio/openai-agents';
import { Agent, hostedMcpTool, run, OpenAIConversationsSession } from '@openai/agents';
import * as readline from 'readline';
```

### 5. Set up the Composio instance

No description provided.
```python
load_dotenv()

api_key = os.getenv("COMPOSIO_API_KEY")
user_id = os.getenv("USER_ID")

if not api_key:
    raise RuntimeError("COMPOSIO_API_KEY is not set. Create a .env file with COMPOSIO_API_KEY=your_key")

# Initialize Composio
composio = Composio(api_key=api_key, provider=OpenAIAgentsProvider())
```

```typescript
dotenv.config();

const composioApiKey = process.env.COMPOSIO_API_KEY;
const userId = process.env.USER_ID;

if (!composioApiKey) {
  throw new Error('COMPOSIO_API_KEY is not set. Create a .env file with COMPOSIO_API_KEY=your_key');
}
if (!userId) {
  throw new Error('USER_ID is not set');
}

// Initialize Composio
const composio = new Composio({
  apiKey: composioApiKey,
  provider: new OpenAIAgentsProvider(),
});
```

### 6. Create a Tool Router session

What is happening:
- You give the Tool Router the user id and the toolkits you want available. Here, it is only college_football_data.
- The router checks the user's College football data connection and prepares the MCP endpoint.
- The returned session.mcp.url is the MCP URL that your agent will use to access College football data.
- This approach keeps things lightweight and lets the agent request College football data tools only when needed during the conversation.
```python
# Create a College football data Tool Router session
session = composio.create(
    user_id=user_id,
    toolkits=["college_football_data"]
)

mcp_url = session.mcp.url
```

```typescript
// Create Tool Router session for College football data
const session = await composio.create(userId as string, {
  toolkits: ['college_football_data'],
});
const mcpUrl = session.mcp.url;
```

### 7. Configure the agent

No description provided.
```python
# Configure agent with MCP tool
agent = Agent(
    name="Assistant",
    model="gpt-5",
    instructions=(
        "You are a helpful assistant that can access College football data. "
        "Help users perform College football data operations through natural language."
    ),
    tools=[
        HostedMCPTool(
            tool_config={
                "type": "mcp",
                "server_label": "tool_router",
                "server_url": mcp_url,
                "headers": {"x-api-key": api_key},
                "require_approval": "never",
            }
        )
    ],
)
```

```typescript
// Configure agent with MCP tool
const agent = new Agent({
  name: 'Assistant',
  model: 'gpt-5',
  instructions:
    'You are a helpful assistant that can access College football data. Help users perform College football data operations through natural language.',
  tools: [
    hostedMcpTool({
      serverLabel: 'tool_router',
      serverUrl: mcpUrl,
      headers: { 'x-api-key': composioApiKey },
      requireApproval: 'never',
    }),
  ],
});
```

### 8. Start chat loop and handle conversation

No description provided.
```python
print("\nComposio Tool Router session created.")

chat_session = SQLiteSession("conversation_openai_toolrouter")

print("\nChat started. Type your requests below.")
print("Commands: 'exit', 'quit', or 'q' to end\n")

async def main():
    try:
        result = await Runner.run(
            agent,
            "What can you help me with?",
            session=chat_session
        )
        print(f"Assistant: {result.final_output}\n")
    except Exception as e:
        print(f"Error: {e}\n")

    while True:
        user_input = input("You: ").strip()
        if user_input.lower() in {"exit", "quit", "q"}:
            print("Goodbye!")
            break

        result = await Runner.run(
            agent,
            user_input,
            session=chat_session
        )
        print(f"Assistant: {result.final_output}\n")

asyncio.run(main())
```

```typescript
// Keep conversation state across turns
const conversationSession = new OpenAIConversationsSession();

// Simple CLI
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
  prompt: 'You: ',
});

console.log('\nComposio Tool Router session created.');
console.log('\nChat started. Type your requests below.');
console.log("Commands: 'exit', 'quit', or 'q' to end\n");

try {
  const first = await run(agent, 'What can you help me with?', { session: conversationSession });
  console.log(`Assistant: ${first.finalOutput}\n`);
} catch (e) {
  console.error('Error:', e instanceof Error ? e.message : e, '\n');
}

rl.prompt();

rl.on('line', async (userInput) => {
  const text = userInput.trim();

  if (['exit', 'quit', 'q'].includes(text.toLowerCase())) {
    console.log('Goodbye!');
    rl.close();
    process.exit(0);
  }

  if (!text) {
    rl.prompt();
    return;
  }

  try {
    const result = await run(agent, text, { session: conversationSession });
    console.log(`\nAssistant: ${result.finalOutput}\n`);
  } catch (e) {
    console.error('Error:', e instanceof Error ? e.message : e, '\n');
  }

  rl.prompt();
});

rl.on('close', () => {
  console.log('\n👋 Session ended.');
  process.exit(0);
});
```

## Complete Code

```python
import asyncio
import os
from dotenv import load_dotenv

from composio import Composio
from composio_openai_agents import OpenAIAgentsProvider
from agents import Agent, Runner, HostedMCPTool, SQLiteSession

load_dotenv()

api_key = os.getenv("COMPOSIO_API_KEY")
user_id = os.getenv("USER_ID")

if not api_key:
    raise RuntimeError("COMPOSIO_API_KEY is not set. Create a .env file with COMPOSIO_API_KEY=your_key")

# Initialize Composio
composio = Composio(api_key=api_key, provider=OpenAIAgentsProvider())

# Create Tool Router session
session = composio.create(
    user_id=user_id,
    toolkits=["college_football_data"]
)
mcp_url = session.mcp.url

# Configure agent with MCP tool
agent = Agent(
    name="Assistant",
    model="gpt-5",
    instructions=(
        "You are a helpful assistant that can access College football data. "
        "Help users perform College football data operations through natural language."
    ),
    tools=[
        HostedMCPTool(
            tool_config={
                "type": "mcp",
                "server_label": "tool_router",
                "server_url": mcp_url,
                "headers": {"x-api-key": api_key},
                "require_approval": "never",
            }
        )
    ],
)

print("\nComposio Tool Router session created.")

chat_session = SQLiteSession("conversation_openai_toolrouter")

print("\nChat started. Type your requests below.")
print("Commands: 'exit', 'quit', or 'q' to end\n")

async def main():
    try:
        result = await Runner.run(
            agent,
            "What can you help me with?",
            session=chat_session
        )
        print(f"Assistant: {result.final_output}\n")
    except Exception as e:
        print(f"Error: {e}\n")

    while True:
        user_input = input("You: ").strip()
        if user_input.lower() in {"exit", "quit", "q"}:
            print("Goodbye!")
            break

        result = await Runner.run(
            agent,
            user_input,
            session=chat_session
        )
        print(f"Assistant: {result.final_output}\n")

asyncio.run(main())
```

```typescript
import 'dotenv/config';
import { Composio } from '@composio/core';
import { OpenAIAgentsProvider } from '@composio/openai-agents';
import { Agent, hostedMcpTool, run, OpenAIConversationsSession } from '@openai/agents';
import * as readline from 'readline';

const composioApiKey = process.env.COMPOSIO_API_KEY;
const userId = process.env.USER_ID;

if (!composioApiKey) {
  throw new Error('COMPOSIO_API_KEY is not set. Create a .env file with COMPOSIO_API_KEY=your_key');
}
if (!userId) {
  throw new Error('USER_ID is not set');
}

// Initialize Composio
const composio = new Composio({
  apiKey: composioApiKey,
  provider: new OpenAIAgentsProvider(),
});

async function main() {
  // Create Tool Router session
  const session = await composio.create(userId as string, {
    toolkits: ['college_football_data'],
  });
  const mcpUrl = session.mcp.url;

  // Configure agent with MCP tool
  const agent = new Agent({
    name: 'Assistant',
    model: 'gpt-5',
    instructions:
      'You are a helpful assistant that can access College football data. Help users perform College football data operations through natural language.',
    tools: [
      hostedMcpTool({
        serverLabel: 'tool_router',
        serverUrl: mcpUrl,
        headers: { 'x-api-key': composioApiKey },
        requireApproval: 'never',
      }),
    ],
  });

  // Keep conversation state across turns
  const conversationSession = new OpenAIConversationsSession();

  // Simple CLI
  const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout,
    prompt: 'You: ',
  });

  console.log('\nComposio Tool Router session created.');
  console.log('\nChat started. Type your requests below.');
  console.log("Commands: 'exit', 'quit', or 'q' to end\n");

  try {
    const first = await run(agent, 'What can you help me with?', { session: conversationSession });
    console.log(`Assistant: ${first.finalOutput}\n`);
  } catch (e) {
    console.error('Error:', e instanceof Error ? e.message : e, '\n');
  }

  rl.prompt();

  rl.on('line', async (userInput) => {
    const text = userInput.trim();

    if (['exit', 'quit', 'q'].includes(text.toLowerCase())) {
      console.log('Goodbye!');
      rl.close();
      process.exit(0);
    }

    if (!text) {
      rl.prompt();
      return;
    }

    try {
      const result = await run(agent, text, { session: conversationSession });
      console.log(`\nAssistant: ${result.finalOutput}\n`);
    } catch (e) {
      console.error('Error:', e instanceof Error ? e.message : e, '\n');
    }

    rl.prompt();
  });

  rl.on('close', () => {
    console.log('\nSession ended.');
    process.exit(0);
  });
}

main().catch((err) => {
  console.error('Fatal error:', err);
  process.exit(1);
});
```

## Conclusion

This was a starter code for integrating College football data MCP with OpenAI Agents SDK to build a functional AI agent that can interact with College football data.
Key features:
- Hosted MCP tool integration through Composio's Tool Router
- SQLite session persistence for conversation history
- Simple async chat loop for interactive testing
You can extend this by adding more toolkits, implementing custom business logic, or building a web interface around the agent.

## How to build College football data MCP Agent with another framework

- [Claude Agent SDK](https://composio.dev/toolkits/college_football_data/framework/claude-agents-sdk)
- [Claude Code](https://composio.dev/toolkits/college_football_data/framework/claude-code)
- [Claude Cowork](https://composio.dev/toolkits/college_football_data/framework/claude-cowork)
- [Codex](https://composio.dev/toolkits/college_football_data/framework/codex)
- [OpenClaw](https://composio.dev/toolkits/college_football_data/framework/openclaw)
- [Hermes](https://composio.dev/toolkits/college_football_data/framework/hermes-agent)
- [CLI](https://composio.dev/toolkits/college_football_data/framework/cli)
- [Google ADK](https://composio.dev/toolkits/college_football_data/framework/google-adk)
- [LangChain](https://composio.dev/toolkits/college_football_data/framework/langchain)
- [Vercel AI SDK](https://composio.dev/toolkits/college_football_data/framework/ai-sdk)
- [Mastra AI](https://composio.dev/toolkits/college_football_data/framework/mastra-ai)
- [LlamaIndex](https://composio.dev/toolkits/college_football_data/framework/llama-index)
- [CrewAI](https://composio.dev/toolkits/college_football_data/framework/crew-ai)

## Related Toolkits

- [Excel](https://composio.dev/toolkits/excel) - Microsoft Excel is a robust spreadsheet application for organizing, analyzing, and visualizing data. It's the go-to tool for calculations, reporting, and flexible data management.
- [21risk](https://composio.dev/toolkits/_21risk) - 21RISK is a web app built for easy checklist, audit, and compliance management. It streamlines risk processes so teams can focus on what matters.
- [Abstract](https://composio.dev/toolkits/abstract) - Abstract provides a suite of APIs for automating data validation and enrichment tasks. It helps developers streamline workflows and ensure data quality with minimal effort.
- [Addressfinder](https://composio.dev/toolkits/addressfinder) - Addressfinder is a data quality platform for verifying addresses, emails, and phone numbers. It helps you ensure accurate customer and contact data every time.
- [Agentql](https://composio.dev/toolkits/agentql) - Agentql is a toolkit that connects AI agents to the web using a specialized query language. It enables structured web interaction and data extraction for smarter automations.
- [Agenty](https://composio.dev/toolkits/agenty) - Agenty is a web scraping and automation platform for extracting data and automating browser tasks—no coding needed. It streamlines data collection, monitoring, and repetitive online actions.
- [Ambee](https://composio.dev/toolkits/ambee) - Ambee is an environmental data platform providing real-time, hyperlocal APIs for air quality, weather, and pollen. Get precise environmental insights to power smarter decisions in your apps and workflows.
- [Ambient weather](https://composio.dev/toolkits/ambient_weather) - Ambient Weather is a platform for personal weather stations with a robust API for accessing local, real-time, and historical weather data. Get detailed environmental insights directly from your own sensors for smarter apps and automations.
- [Anonyflow](https://composio.dev/toolkits/anonyflow) - Anonyflow is a service for encryption-based data anonymization and secure data sharing. It helps organizations meet GDPR, CCPA, and HIPAA data privacy compliance requirements.
- [Api ninjas](https://composio.dev/toolkits/api_ninjas) - Api ninjas offers 120+ public APIs spanning categories like weather, finance, sports, and more. Developers use it to supercharge apps with real-time data and actionable endpoints.
- [Api sports](https://composio.dev/toolkits/api_sports) - Api sports is a comprehensive sports data platform covering 2,000+ competitions with live scores and 15+ years of stats. Instantly access up-to-date sports information for analysis, apps, or chatbots.
- [Apify](https://composio.dev/toolkits/apify) - Apify is a cloud platform for building, deploying, and managing web scraping and automation tools called Actors. It lets you automate data extraction and workflow tasks at scale—no infrastructure headaches.
- [Autom](https://composio.dev/toolkits/autom) - Autom is a lightning-fast search engine results data platform for Google, Bing, and Brave. Developers use it to access fresh, low-latency SERP data on demand.
- [Beaconchain](https://composio.dev/toolkits/beaconchain) - Beaconchain is a real-time analytics platform for Ethereum 2.0's Beacon Chain. It provides detailed insights into validators, blocks, and overall network performance.
- [Big data cloud](https://composio.dev/toolkits/big_data_cloud) - BigDataCloud provides APIs for geolocation, reverse geocoding, and address validation. Instantly access reliable location intelligence to enhance your applications and workflows.
- [Bigpicture io](https://composio.dev/toolkits/bigpicture_io) - BigPicture.io offers APIs for accessing detailed company and profile data. Instantly enrich your applications with up-to-date insights on 20M+ businesses.
- [Bitquery](https://composio.dev/toolkits/bitquery) - Bitquery is a blockchain data platform offering indexed, real-time, and historical data from 40+ blockchains via GraphQL APIs. Get unified, reliable access to complex on-chain data for analytics, trading, and research.
- [Brightdata](https://composio.dev/toolkits/brightdata) - Brightdata is a leading web data platform offering advanced scraping, SERP APIs, and anti-bot tools. It lets you collect public web data at scale, bypassing blocks and friction.
- [Builtwith](https://composio.dev/toolkits/builtwith) - BuiltWith is a web technology profiler that uncovers the technologies powering any website. Gain actionable insights into analytics, hosting, and content management stacks for smarter research and lead generation.
- [Byteforms](https://composio.dev/toolkits/byteforms) - Byteforms is an all-in-one platform for creating forms, managing submissions, and integrating data. It streamlines workflows by centralizing form data collection and automation.

## Frequently Asked Questions

### What are the differences in Tool Router MCP and College football data MCP?

With a standalone College football data MCP server, the agents and LLMs can only access a fixed set of College football data tools tied to that server. However, with the Composio Tool Router, agents can dynamically load tools from College football data and many other apps based on the task at hand, all through a single MCP endpoint.

### Can I use Tool Router MCP with OpenAI Agents SDK?

Yes, you can. OpenAI Agents SDK fully supports MCP integration. You get structured tool calling, message history handling, and model orchestration while Tool Router takes care of discovering and serving the right College football data tools.

### Can I manage the permissions and scopes for College football data while using Tool Router?

Yes, absolutely. You can configure which College football data scopes and actions are allowed when connecting your account to Composio. You can also bring your own OAuth credentials or API configuration so you keep full control over what the agent can do.

### How safe is my data with Composio Tool Router?

All sensitive data such as tokens, keys, and configuration is fully encrypted at rest and in transit. Composio is SOC 2 Type 2 compliant and follows strict security practices so your College football data data and credentials are handled as safely as possible.

---
[See all toolkits](https://composio.dev/toolkits) · [Composio docs](https://docs.composio.dev/llms.txt)
