MCP.Market

The Blue Alliance MCP server

by withinfocus·io.github.withinfocus/tba·v1.4.0·1 stars

The Blue Alliance MCP Server

B83/100grade B
What users say
No reviews yet
Be the first
Safety scan
B83/100

full report

Adoption
Growing

1 stars81 downloads/wk

Reviews

Write one

Nobody has reviewed The Blue Alliance yet.

If you have run it, two minutes of your experience saves the next person an afternoon.

The Blue Alliance tools (61)

write = sends, deletes, buys or posts

Read from the package source without running it. The installed server may list more.

  • get_district_events

    List every FRC event in a district (e.g., all 2024 FIRST in Michigan district qualifying events plus the district championship). Returns full event records. Lighter variants: get_district_events_simple, get_district_events_keys.

  • get_district_events_keys

    List event keys in an FRC district. Lightest enumeration of district events; ideal for driving per-event lookups across a district season.

  • get_district_events_simple

    List events in an FRC district with reduced event fields. Lighter than get_district_events.

  • get_district_rankings

    Retrieve season-end district rankings for all teams in an FRC district. Returns each team's overall rank, total district points, rookie bonus, and per-event point breakdown (qualification, alliance, elimination, award, district championship boolean). Determines which teams qualify for the district championship and the FIRST Championship via the district point system.

  • get_district_teams

    List every team affiliated with an FRC district in a given year. Returns full team profiles. Use to enumerate a district's competitive field. Lighter variants: get_district_teams_simple, get_district_teams_keys.

  • get_district_teams_keys

    List team keys in an FRC district. Lightest enumeration of a district's teams; ideal for driving per-team lookups.

  • get_district_teams_simple

    List teams in an FRC district with reduced team fields. Lighter than get_district_teams.

  • get_districts

    List every active FRC district for a given season year (FIRST in Michigan 'fim', New England 'ne', Chesapeake 'chs', Pacific Northwest 'pnw', FIRST In Texas 'fit', Indiana 'in', Ontario 'ont', Israel 'isr', etc.). Returns each district's abbreviation, display name, district key, and year.

  • get_event

    Retrieve the full record for a single FRC event by event key (e.g., '2023casj' for the 2023 Silicon Valley Regional). Returns event name, code, type (regional/district/championship), location with lat/lng and timezone, date range, district affiliation, week number, webcast channels (Twitch/YouTube), division keys (for championships), parent event key, and playoff type. For a lighter payload see ge

  • get_event_alliances

    Retrieve playoff alliance selections for an FRC event. Returns each alliance in seed order with captain and pick team keys, declined teams, backup robot info (in/out swap), and playoff progression status (current level, win/loss/tie record, playoff average score, final result string like 'won' or 'eliminated'). Available after alliance selection concludes; null/empty before selection.

  • get_event_awards

    List every award given out at a specific FRC event. Returns each award's name, type code, recipient team key, awardee name (for individual honors like Woodie Flowers Finalist or Dean's List), and year. Available once awards ceremony has concluded.

  • get_event_district_points

    Retrieve district championship qualifying points awarded at an event for each participating team. Returns per-team breakdown of qualification points, alliance selection points, elimination points, and award points (the official FIRST district point system) plus tiebreaker stats (highest qual scores, qual wins). Only meaningful for district-affiliated events; non-district events return null.

  • get_event_insights

    Retrieve aggregated game-specific statistics computed by The Blue Alliance for an event, separated into qualification and playoff phases. Includes per-task averages, scoring trends, bonus (ranking point) achievement rates, and other game-specific metrics. Field structure varies per game year (e.g., Charged Up, Crescendo, Reefscape).

  • get_event_matches

    Fetch every match played at a specific FRC event, including qualification, playoff, and finals. Returns full match records with alliance compositions, final scores, game-specific score breakdown (auto/teleop/endgame components), winning alliance, video links, and timing (scheduled/predicted/actual/post-result). Lighter variants: get_event_matches_simple, get_event_matches_keys.

  • get_event_matches_keys

    List match keys at an event (strings like '2023casj_qm1', '2023casj_sf1m1'). Lightest enumeration of an event's matches.

  • get_event_matches_simple

    List matches at an event with reduced match fields (no game-specific score breakdown or videos). Lighter than get_event_matches.

  • get_event_oprs

    Retrieve OPR (Offensive Power Rating), DPR (Defensive Power Rating), and CCWM (Calculated Contribution to Winning Margin) for every team at an event, returned as three team_key→number maps. Computed via least-squares regression on match scores. Standard scouting/alliance-selection metrics for estimating per-team contribution.

  • get_event_predictions

    Retrieve TBA-generated match score predictions and end-of-event ranking predictions for an event when computed. Returns predicted red/blue scores keyed by match key plus predicted final ranks keyed by team key. Availability and field structure vary by event and game year; some events return null or partial data.

  • get_event_rankings

    Retrieve the live or final qualification rankings for an FRC event. Returns ordered ranking rows (team key, rank, win/loss/tie record, matches played, qualification average, sort orders, extra stats, DQ count) plus metadata describing each sort criterion (e.g., Ranking Points, Auto, Endgame). Used to determine alliance selection order, seed playoff alliances, and assess team performance during qua

  • get_event_simple

    Retrieve a reduced FRC event profile (key, name, event_code, type, location, dates, year). Lighter than get_event; use when district, webcast, division, and playoff metadata are not needed.

  • get_event_teams

    List every FRC team registered to compete at a specific event, with full team profiles (number, nickname, name, location, website, motto, rookie year). Use to enumerate the field at a regional, district event, or championship division for scouting or programmatic outreach. Lighter variants: get_event_teams_simple, get_event_teams_keys.

  • get_event_teams_keys

    List team keys competing at an event (strings like 'frc86'). Lightest enumeration of an event's competing teams; ideal for driving downstream per-team lookups.

  • get_event_teams_simple

    List teams competing at an event with reduced team fields (key, team_number, nickname, name, location). Lighter than get_event_teams.

  • get_events

    List every FRC event scheduled or completed for a given season year, worldwide. Returns full event records (name, event code, dates, location, district affiliation, week number, webcast channels, event type, division keys for championships, parent event key, playoff type). Use to discover regionals, district qualifying events, district championships, off-season events, and FIRST Championship divis

  • get_events_keys

    List every FRC event key for a season year (strings like '2024casj', '2024nyro', '2024micmp4'). Lightest events enumeration; useful for driving subsequent per-event queries with minimal bandwidth.

  • get_events_simple

    List every FRC event for a season year with reduced event fields. Lighter than get_events.

  • get_match

    Retrieve the full record for a single match by match key (e.g., '2023casj_qm1'). Returns red/blue alliance compositions (team keys, surrogates, DQ list), final scores, game-specific score breakdown (auto, teleop, endgame, fouls, ranking-point achievements), winning alliance, predicted vs. actual times, and video links. For a lighter payload see get_match_simple. For Zebra MotionWorks robot trackin

  • get_match_simple

    Retrieve a single match with reduced fields (alliances, scores, winning alliance, timing). Omits game-specific score breakdown and video links. Lighter than get_match.

  • get_match_zebra

    Retrieve Zebra MotionWorks robot-tracking telemetry for a match: per-timestep XY field positions for every robot on red and blue alliances, plus the timestamp series. Only available for events with Zebra tracking installed (typically FIRST Championship divisions and a subset of regionals/district championships). Useful for advanced scouting, defense analysis, and trajectory visualization.

  • get_status

    Retrieve TBA API status: current FRC season, max season available, datafeed health flag, list of currently down event keys, max team page index, and minimum/latest mobile app versions for iOS and Android. Useful for sanity-checking the API, discovering season bounds, and detecting outages before issuing other queries.

  • get_team

    Retrieve the full profile of a single FIRST Robotics Competition (FRC) team identified by team key (e.g., 'frc86'). Returns team number, nickname, full sponsor/school name, location (city, state/province, country, address, postal code, lat/lng, Google Maps place id), website, motto, rookie year, and home championship affiliation. Use for in-depth team lookups, scouting research, or generating team

  • get_team_awards

    Retrieve every award won by a team during a single FRC season year. Returns award name, award type code, event key where the award was given, year, and recipient list (team key plus individual awardee for honors like Woodie Flowers Finalist). Useful for tracking annual recognition such as the Impact Award (formerly Chairman's Award), Engineering Inspiration, regional/district event winners, Excell

  • get_team_awards_all

    Retrieve every award won by a team across its entire FRC competition history. Returns the full award list (name, year, event key, recipient list, type code). Use for lifetime award tallies, retrospectives, and Hall of Fame analysis. For a single year see get_team_awards.

  • get_team_districts

    List the FRC district affiliations a team has held across its history. Returns district records (abbreviation, display name, district key, year). Useful for tracking when a team participated in district play (FIRST in Michigan, New England, Chesapeake, Pacific Northwest, FIRST In Texas, etc.) versus open regional competition, and for analyzing a team's geographic competition history.

  • get_team_event_awards

    Retrieve every award won by a specific team at a specific event. Returns award records (name, type, year, recipient list including team key and individual awardee names).

  • get_team_event_matches

    Fetch every match a team played at a single specific event in one call. Returns full match records (alliances, scores, score breakdowns, videos, timing). Combines team and event filters server-side, avoiding client-side filtering of get_team_matches or get_event_matches. Lighter variants: get_team_event_matches_simple, get_team_event_matches_keys.

  • get_team_event_matches_keys

    Lightest variant returning only match keys for a team at a specific event. Ideal for driving downstream per-match queries.

  • get_team_event_matches_simple

    Lighter variant of get_team_event_matches: every match a team played at a single event with reduced match fields (no game-specific score breakdown or videos).

  • get_team_event_status

    Retrieve a team's competitive status and standings at a specific event. Returns qualification ranking row (rank, record, sort orders, qual average), alliance selection result (alliance number, pick slot, backup status), playoff progression (level, current-level record, overall record, playoff average, final status), and human-readable summary strings (overall_status_str, alliance_status_str, playo

  • get_team_event_statuses

    Retrieve a team's per-event status for every event the team attended in a given year, returned as an object keyed by event_key. Each entry mirrors get_team_event_status (rank, alliance, playoff progression, summary strings, next/last match key). Use to render a season status dashboard in one call.

  • get_team_events

    List every FRC event a team registered for in a given season year. Returns full event records (name, dates, location, district affiliation, week number, webcasts, event type, division keys). Use to build a team's seasonal schedule or determine which events to scout. Lighter variants: get_team_events_simple, get_team_events_keys.

  • get_team_events_all

    List every FRC event a team has competed at across all years it has participated. Returns full event records. Use to map a team's complete competition history, generate timelines, or feed per-event aggregations. For a single year see get_team_events.

  • get_team_events_keys

    List the event keys a team registered for in a given FRC season year. Lightest variant of get_team_events; useful for driving per-event queries scoped to a team's schedule.

  • get_team_events_simple

    List a team's FRC events in a season year with reduced event fields. Lighter than get_team_events.

  • get_team_history

    Retrieve a team's full FRC competition history aggregated into a single response: every event, every match, every award, and every robot. High-payload call — use sparingly when a complete archive is needed (e.g., generating a team retrospective). For narrower queries prefer get_team_events_all, get_team_awards_all, or year-scoped variants.

  • get_team_matches

    List every qualification, playoff, and finals match a team played during a given FRC season year, across all events. Returns full match records: alliance compositions (red/blue with team keys, surrogates, DQ list), final scores, game-specific score breakdown, winning alliance, video links (YouTube/TBA), and predicted vs. actual times. Lighter variants: get_team_matches_simple (omits score breakdow

  • get_team_matches_keys

    List every match key a team played in a given FRC season year. Lightest variant of get_team_matches; useful for driving per-match queries scoped to a team's season.

  • get_team_matches_simple

    List every match a team played in a season year with reduced match fields (no game-specific score breakdown or videos). Lighter than get_team_matches.

  • get_team_media

    Retrieve media (photos, videos, presentations, essays) submitted for a team in a given FRC season year. Returns media records with type (e.g., 'youtube', 'imgur', 'instagram-image', 'cdphotothread'), foreign_key, view URL, direct URL, and the 'preferred' flag highlighting the team's chosen primary image. Useful for surfacing official reveal videos, robot photos, and Impact/Chairman's submissions.

  • get_team_media_by_tag

    Retrieve a team's media filtered by a specific TBA tag (e.g., 'chairmans_video', 'chairmans_essay', 'chairmans_presentation', 'imagery') across all years. Useful for surfacing Impact/Chairman's Award submissions or pinned imagery.

  • get_team_media_by_tag_year

    Retrieve a team's media filtered by both tag and season year. Use to fetch a single year's Impact/Chairman's submission package or other tagged media.

  • get_team_robots

    List the named robots a team has built and registered each year (e.g., 'Stronghold' for 2016, 'Citrus Circuits Quokka' patterns). Returns robot records with year, robot_name, robot key, and team key. Useful for retrospective profiles and historical references.

  • get_team_simple

    Retrieve a reduced FRC team profile (key, team_number, nickname, name, city, state_prov, country). Lighter than get_team; use when website, motto, address, and lat/lng are not needed.

  • get_team_social_media

    Retrieve a team's official social media handles registered with The Blue Alliance (Twitter/X, Instagram, Facebook, YouTube channel, GitHub, team website link, etc.). Returned as media records where 'type' is the platform and 'foreign_key' is the handle, slug, or URL fragment.

  • get_team_years_participated

    Retrieve every season year in which a team has competed in FRC, sorted ascending. Returns a flat array of year integers. Use to bound year-based queries, drive per-year iteration, or determine a team's longevity and rookie year.

  • get_teams

    List all FRC teams ever registered, paginated in groups of 500. Returns full team profiles. Increment page_num starting at 0 until the response is empty to enumerate every team in TBA's database. For lighter payloads use get_teams_simple; for team keys only use get_teams_keys.

  • get_teams_by_year

    List every FRC team that competed in a given season year, paginated in groups of 500. Returns full team profiles. Use to scope team enumeration to a single competition season. Lighter variants: get_teams_by_year_simple, get_teams_by_year_keys.

  • get_teams_by_year_keys

    Paginated list of team keys that competed in a given FRC season year. Lightest variant; ideal for building per-year team indices or driving downstream per-team lookups.

  • get_teams_by_year_simple

    Paginated list of FRC teams that competed in a given year with reduced team fields (key, team_number, nickname, name, location). Lighter than get_teams_by_year.

  • get_teams_keys

    Paginated listing of every registered FRC team key only (strings like 'frc86'). Lightest team enumeration option; ideal for building team-key indices or driving subsequent per-team queries with minimal payload size.

  • get_teams_simple

    Paginated listing of every registered FRC team with reduced fields (key, team_number, nickname, name, city, state_prov, country). Lighter than get_teams; use when website, motto, address, and geocoded location are not needed.

Public scan report

scanner v0.1.9 · 2026-09-23 · same rubric, same numbers if you re-run it

no findings
  • Code scan11 source files scanned25/25
  • –Live reliabilityno gateway calls yet and no remote to proben/a
  • –Tool poisoningtools not inspected (local package is not executed); not countedn/a
  • Auth qualitystatic API keys via environment variables6/15
  • Maintenancelast push 1 days ago15/15
  • Maintainer identityregistry namespace matches repository owner; GitHub account older than a year8/10
Overall 83/100. Components that don't apply are left out of the denominator. Any critical finding is an F.RubricAppeal a findingJSON

How The Blue Alliance compares

Against every graded MCP server, from our own scans and uptime checks. Updated after each scan run.

Safety score
83/100
higher than 65% of 48,255 servers
Tools
61
the typical server has 7
Tools that change things
0%
typical: 0%. Fewer write tools means less an agent can break
GitHub stars
1
more than 65% of 28,688 servers
Downloads a week
81
more than 58% of 12,191 servers with a package

What its tools let an agent do: 61 read

Install The Blue Alliance in Claude Code, Cursor or VS Code

Runs npx -y @withinfocus/tba-mcp-server on your machine. Read the scan report first; the gateway never runs local packages.

claude mcp add tba -- npx -y @withinfocus/tba-mcp-server
Add to Cursor

What the publisher says

From the The Blue Alliance repository's README, as published. We do not edit it. Read it on GitHub

The Blue Alliance MCP Server

A Model Context Protocol (MCP) server that provides access to The Blue Alliance API for FIRST Robotics Competition data. Enables AI assistants and other MCP clients to retrieve comprehensive FRC team, event, and match information.

Features

  • Team Information: Get detailed team profiles, participation history, awards, and media
  • Event Data: Access event details, rankings, matches, and elimination alliances
  • Match Results: Retrieve match data with scores, alliances, and breakdowns
  • Historical Data: Query data from 1992 to the current year
  • Type Safety: All responses validated with Zod schemas
  • Comprehensive Coverage: 35+ tools covering all major TBA API endpoints

Installation

npm (Recommended)

npm install -g @withinfocus/tba-mcp-server

Docker

Pull the image from GitHub Container Registry:

docker pull ghcr.io/withinfocus/tba-mcp-server:latest

Or build locally:

git clone https://github.com/withinfocus/tba-mcp-server.git
cd tba-mcp-server
docker build -t tba-mcp-server .

Configuration

  1. Get an API key from The Blue Alliance
  1. Set your API key as an environment variable:
export TBA_API_KEY=your_api_key_here

Or create a .env file:

TBA_API_KEY=your_api_key_here

Usage

With npm

Add to your MCP client configuration (e.g., Claude Desktop):

{
  "mcpServers": {
    "tba": {
      "command": "npx",
      "args": ["-y", "@withinfocus/tba-mcp-server"],
      "env": {
        "TBA_API_KEY": "your_api_key_here"
      }
    }
  }
}

With Docker

Add to your MCP client configuration:

{
  "mcpServers": {
    "tba": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "--init",
        "-e",
        "TBA_API_KEY=your_api_key_here",
        "ghcr.io/withinfocus/tba-mcp-server:latest"
      ]
    }
  }
}

Or run directly:

docker run --rm -i --init \
  -e TBA_API_KEY=your_api_key_here \
  ghcr.io/withinfocus/tba-mcp-server:latest

Available Tools

Team Information (24 tools)

Access comprehensive team data including profiles, participation history, events, matches, awards, and media.

Key tools: getteam, getteamevents, getteammatches, getteamawards, getteam_media

Event Information (19 tools)

Query event details, participants, rankings, matches, and analytics.

Key tools: getevent, getevents, geteventteams, geteventrankings, geteventmatches, geteventoprs

Match Information (3 tools)

Retrieve detailed match data including scores, alliances, and robot tracking.

Key tools: getmatch, getmatchsimple, getmatch_zebra

District Tools (8 tools)

Access district rankings, events, and team information.

Key tools: getdistricts, getdistrictrankings, getdistrictevents, getdistrict_teams

General/Utility Tools (6 tools)

Paginated team listings and API status information.

Key tools: getteams, getteamsbyyear, get_status

Complete Documentation

  • All Tools - Complete reference for all 35+ tools with parameters and examples
  • Data Schemas - Detailed schema documentation for all response types

Quick Examples

Get team information

// Get detailed team profile
get_team(team_key: "frc86")

// Get team's events in a year
get_team_events(team_key: "frc86", year: 2024)

// Get team's awards
get_team_awards(team_key: "frc86", year: 2024)

Analyze an event

// Get event details
get_event(event_key: "2024casj")

// Get participating teams
get_event_teams(event_key: "2024casj")

// Get rankings
get_event_rankings(event_key: "2024casj")

// Get elimination alliances
get_event_alliances(event_key: "2024casj")

Get match data

Shortened. The full README is on GitHub.

Nothing above is checked by us. What we check is on the safety report.

The Blue Alliance: common questions

Is The Blue Alliance MCP server safe?
Mostly: it is graded B (83/100). Read the The Blue Alliance safety report
How do I install The Blue Alliance?
It runs on your machine. Copy the Claude Code, Cursor, VS Code or Claude Desktop config from the install section.
Does The Blue Alliance need an API key?
Yes. The registry entry asks for TBA_API_KEY.
Is The Blue Alliance maintained?
The last commit was 42 days ago (2026-09-23). The latest release is v1.4.0.
How does The Blue Alliance compare with other MCP servers?
safety score 83/100 (higher than 65% of 48,255 servers); tools 61 (the typical server has 7); tools that change things 0% (typical: 0%. Fewer write tools means less an agent can break). Full comparison.