Statcast MCP Server
The Statcast MCP Server enables AI assistants to query MLB baseball data using natural language, drawing from Baseball Savant, FanGraphs, and Baseball Reference.
Core Capabilities:
Player Lookup — Find any player's MLBAM, FanGraphs, and Baseball Reference IDs, plus years active
Pitch-Level Data — Search pitch-by-pitch Statcast data by date range, team, batter, or pitcher (velocity, spin rate, exit velocity, launch angle)
Season Batting & Pitching Stats — Full-season leaderboards (AVG, OBP, wRC+, ERA, FIP, WAR, etc.) from FanGraphs with filtering options
Team Roster Stats — Full roster batting or pitching stats for a specific team and season
Expected Stats — Compare xBA, xSLG, xwOBA, and xERA vs. actual performance to identify over/under-performing players; supports batch queries for entire lineups or rotations
Pitch Arsenal Analysis — Break down a pitcher's mix (usage %, velocity, whiff rate) or a batter's performance against each pitch type
Exit Velocity & Barrel Rate — Leaderboards for hardest-hitting batters and pitchers who allow/suppress hard contact
Sprint Speed — Fastest players by Statcast sprint speed (ft/sec)
Team Standings — Division standings (W-L, win%, games back) for any season
Percentile Ranks — Statcast percentile rankings for hitters and pitchers across key metrics
Defensive Metrics — Outs Above Average (OAA) by position, including directional OAA for outfielders
Date-Range Stats — Aggregate batting or pitching stats over any custom date window for hot/cold streak analysis
Extended Tools — Additional data including schedules, player splits, prospect lists, draft info, WAR files, catcher framing, and more
Provides tools to query MLB Statcast data, including pitch-level information, player performance metrics, season leaderboards, and team standings from Baseball Savant, FanGraphs, and Baseball Reference.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Statcast MCP Server Who had the highest average exit velocity in 2024?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Statcast MCP Server
A MCP (Model Context Protocol) server that lets you query MLB Statcast data using plain English. Ask your AI assistant about players, games, stats, leaderboards, and more — no coding required.
Built on pybaseball, this server gives AI assistants direct access to data from Baseball Savant, FanGraphs, and Baseball Reference.
What Can You Ask?
Once connected, just talk to your AI assistant naturally:
"How did Aaron Judge hit in July 2024?"
"Show me Gerrit Cole's pitch arsenal this season"
"Who had the highest exit velocity in 2024?"
"What were the NL standings at the end of 2023?"
"Find me the most undervalued hitters — compare xBA to actual BA"
"Expected stats for the whole Yankees lineup and their five starters" (use
expected_stats_batchwith comma-separated names)"Who are the fastest players in baseball right now?"
"Show me every pitch from the Yankees-Red Sox game on July 4, 2024"
The AI translates your questions into the right data queries automatically.
Related MCP server: MLB SportRadar MCP Server
Example: Prompt & Response
Here's what a typical exchange looks like when you use the Statcast MCP:
Prompt
"What were Gerrit Cole's arsenal statistics in 2023?"
Response
Pitch Type | Usage | Pitches | PA | BA | SLG | Whiff% | K% | Run Val/100 |
4-Seam Fastball | 52.9% | 1,737 | 427 | .202 | .333 | 23.0% | 28.3% | +1.7 |
Slider | 20.8% | 683 | 175 | .186 | .251 | 32.7% | 29.1% | +1.4 |
Curveball | 12.1% | 396 | 97 | .215 | .269 | 24.4% | 27.8% | +1.4 |
Cutter | 7.0% | 231 | 65 | .262 | .377 | 31.1% | 23.1% | +1.6 |
Changeup | 7.1% | 233 | 54 | .235 | .510 | 28.6% | 13.0% | −1.3 |
His 4-seam fastball was his primary weapon (52.9% usage) with a .202 BA against and +1.7 run value per 100 pitches. The changeup was his only negative pitch (−1.3 run value).
Another prompt
"Who had the highest exit velocity in 2024?"
Response
The AI calls statcast_batter_exitvelo_barrels(year=2024) and returns the leaderboard — Aaron Judge led with a 97.0 mph average exit velocity and 21.8% barrel rate, followed by [other top hitters]...
Available Tools
Tool | What It Does |
| Find any player's ID, years active, and database links (default 10 rows; up to 5000 if many fuzzy matches) |
| Pitch-by-pitch data for a date range (optionally filtered by team); default 100 pitch rows, up to 5000 |
| Every pitch a specific batter saw in a date range (default 100 rows, up to 5000) |
| Batting stats by pitch type (BA, SLG, wOBA vs fastballs, sliders, etc.) |
| Every pitch a specific pitcher threw in a date range (default 100 rows, up to 5000) |
| Full-season batting from FanGraphs (AVG, OPS, WAR, wRC+, …). |
| Full-season pitching stats from FanGraphs (ERA, FIP, K/9, WAR, …); default 50 rows, up to 5000 via |
| Team batting — full roster actual stats (FG, or BRef fallback); default 200 rows, up to 5000 |
| Team pitching — rotation + bullpen actual stats (FG, or BRef fallback); default 200 rows, up to 5000 |
| xBA, xSLG, xwOBA leaderboard — who deserves better stats? |
| Expected stats allowed by pitchers |
| Expected stats for many batters and/or pitchers in one call (lineups, rotations) |
| Exit velocity and barrel rate leaders |
| Exit velocity and barrel rate allowed by pitchers |
| Pitch mix breakdown (% fastball, slider, curve, etc.) |
| Performance stats per pitch type (whiff rate, BA against, etc.) |
| Fastest players in baseball by sprint speed |
| Division standings for any season (15 teams per division table by default; adjustable via |
| Statcast percentile ranks for hitters (exit velo, barrel%, xwOBA, etc.) |
| Statcast percentile ranks for pitchers (stuff, spin, whiff%, etc.) |
| Defensive OAA leaderboard by position (SS, CF, |
| Outfield OAA by direction (back/in, L/R) |
| Batting stats over any date range (Baseball Reference) |
| Pitching stats over any date range (Baseball Reference) |
46 tools total. Most tables support optional max_output_rows (per-tool defaults: 10 / 50 / 100 / 200 / 250 — see REFERENCE.md); values are clamped to 5000 max. Core table above; extended tools add schedules, splits, Lahman history, draft/prospects, WAR files, extra Statcast defense/movement, league team totals, single-game pitch logs, and batter–pitcher matchup summaries. Call statcast_tool_directory for the full list, or see TOOLS_SUMMARY.md and REFERENCE.md.
Extended tools (high level)
Tool | What it does |
| Markdown catalog of all tools |
| Team schedule & scores (Baseball Reference) |
| BRef splits (platoon, home/away, …) |
| Every pitch in one game ( |
| Statcast summary for one batter vs one pitcher |
| Lahman / Baseball Data Bank slices |
| MLB Pipeline–style prospect list |
| Amateur draft by year + round |
| BRef WAR component files |
| FanGraphs fielding leaderboard |
| FG team lines (league-wide) |
| 90 ft sprint splits |
| OF catch prob / stars |
| OF jump metric |
| Catcher framing & pop time |
| Pitch movement & active spin (Statcast) |
Team seasons: Use team_season_batting_stats / team_season_pitching_stats with a 3-letter code (PHI, NYY, …) for a full roster’s actual stats (lineup + staff). FanGraphs is tried first; Baseball Reference is used if FG fails or returns nothing.
Player search: Nearly every leaderboard/stat tool accepts optional player_name (e.g. "Aaron Judge") so you get that player’s full rows instead of only the first 50 in the table. For groups (full lineup + rotation, “all starters”), use expected_stats_batch with comma-separated names — the server does not pull MLB rosters automatically; list names explicitly or resolve them first (e.g. web / player_lookup). Pitch-level tools already take a name via statcast_batter / statcast_pitcher. team_standings is team-only.
Quick Start
Prerequisites
Python 3.10+ — download here if you don't have it
An MCP-compatible client — such as Claude Desktop, Cursor, or VS Code with Copilot
Option 1: Install from PyPI (Recommended)
# Using uv (fastest)
uv pip install statcast-mcp
# Or using pip
pip install statcast-mcpOption 2: Install from Source
git clone https://github.com/YOUR_USERNAME/statcast-mcp.git
cd statcast-mcp
uv pip install .Setup
Claude Desktop
Add this to your Claude Desktop configuration file:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"statcast": {
"command": "statcast-mcp"
}
}
}If you installed from source and want to run it directly:
{
"mcpServers": {
"statcast": {
"command": "uv",
"args": ["run", "--directory", "/absolute/path/to/statcast-mcp", "statcast-mcp"]
}
}
}Cursor
Open Cursor Settings → MCP and add a new server:
Name:
statcastType:
commandCommand:
statcast-mcp
Or add to your .cursor/mcp.json:
{
"mcpServers": {
"statcast": {
"command": "statcast-mcp"
}
}
}VS Code (Copilot)
Add to your VS Code settings.json:
{
"mcp": {
"servers": {
"statcast": {
"command": "statcast-mcp"
}
}
}
}Example Queries
Looking Up a Player
"Look up Shohei Ohtani"
Returns the player's MLBAM ID, FanGraphs ID, Baseball Reference ID, and years active.
Pitch-Level Data
"Show me all the pitches from the Dodgers game on October 15, 2024"
statcast_search(start_date="2024-10-15", team="LAD")Batter Analysis
"What pitches did Juan Soto see from July 1 to July 31, 2024?"
statcast_batter(player_name="Juan Soto", start_date="2024-07-01", end_date="2024-07-31")"How does Aaron Judge hit against different pitch types?" (e.g. 2023, 106 games)
statcast_batter_pitch_arsenal(year=2023, player_name="Aaron Judge")Season Leaderboards
"Who were the top hitters in 2024 by wRC+?"
season_batting_stats(start_season=2024)"Top 200 hitters in 2023 by slugging, min 100 PA"
season_batting_stats(
start_season=2023,
min_plate_appearances=100,
sort_by="SLG",
max_output_rows=200,
)Expected Stats (Find Undervalued Players)
"Show me batters whose expected stats were way higher than their actual stats in 2024"
statcast_batter_expected_stats(year=2024)"What are Aaron Judge's expected stats vs actual in 2025?"
statcast_batter_expected_stats(year=2025, player_name="Aaron Judge")Exit Velocity Leaders
"Who hit the ball hardest in 2024?"
statcast_batter_exitvelo_barrels(year=2024)Pitcher Arsenal
"What pitches does Spencer Strider throw and how effective are they?"
statcast_pitcher_pitch_arsenal(year=2024)
statcast_pitcher_arsenal_stats(year=2024)Sprint Speed
"Who are the fastest players in baseball?"
sprint_speed_leaderboard(year=2024)Standings
"Show me the 2024 MLB standings"
team_standings(season=2024)Percentile ranks & defense
"What are Aaron Judge's Statcast percentile ranks in 2024?"
batter_percentile_ranks(year=2024, player_name="Aaron Judge")"Who were the best defensive shortstops by OAA in 2024?"
outs_above_average(year=2024, position="SS")Hot streaks (date ranges)
"Who hit the best from July 1 to July 31, 2024?"
batting_stats_date_range(start_date="2024-07-01", end_date="2024-07-31")Data Sources
All data is sourced from:
Baseball Savant — Statcast pitch-level and leaderboard data (2008+)
FanGraphs — Season-level batting and pitching statistics
Baseball Reference — Player identification, daily stat ranges, and cross-references
Reference Guide
For detailed tool-by-tool documentation, row limits, parameters, and usage patterns, see REFERENCE.md.
Social / sharing: Short descriptions and hashtag ideas for posts are in TOOLS_SUMMARY.md.
Notes
Date ranges: Statcast data is available from 2008 onward. Some metrics (exit velocity, launch angle) are only available from 2015+.
Query speed: Shorter date ranges return faster. For pitch-level data, keep ranges to 1-5 days when possible.
Rate limits: Baseball Savant limits individual requests to ~30,000 rows. The server handles splitting larger queries automatically.
Markdown row display: Each tool’s markdown table is capped by
max_output_rows(defaults vary; hard maximum 5000 per limits.py) so responses stay bounded in chat clients.Player names: Tools accept names like "Mike Trout", "Trout, Mike", or "Shohei Ohtani". The server resolves names to MLB IDs automatically.
Development
# Clone the repo
git clone https://github.com/YOUR_USERNAME/statcast-mcp.git
cd statcast-mcp
# Create a virtual environment and install in editable mode
uv venv
uv pip install -e ".[dev]"
# Run the server locally
statcast-mcp
# Test with the MCP Inspector
npx @modelcontextprotocol/inspector statcast-mcp
# Smoke-test all 46 tools (needs network; ~2024 fixtures)
PYTHONPATH=src python scripts/verify_tools.pyContributing
Contributions are welcome! Some ideas:
Add more tools (game scores, team batting/pitching, historical data)
Improve player name resolution
Add data caching for faster repeated queries
Create prompt templates for common analyses
License
MIT
Available Tools
24 toolsbatter_percentile_ranksA
Statcast percentile ranks for hitters vs the league (exit velo, barrel%, xwOBA, etc.).
Each metric is 0–100 where higher is better for that stat. Use to answer "How elite is this hitter on Statcast?" or compare league-wide.
Args: year: Season year (e.g. 2024). player_name: Optional. If set, returns only that player's row (e.g. "Aaron Judge").
Qualifying batters: ~2.1 PA per team game (Statcast default).
Inputs: year (required), player_name. Returns: result
batting_stats_date_rangeA
Batting stats aggregated over a custom date range (Baseball Reference).
Use for hot/cold streaks, post-deadline samples, or any window between two dates.
Args:
start_date: Start date YYYY-MM-DD (2008+).
end_date: End date YYYY-MM-DD (inclusive).
player_name: Optional. Filter to one player (matches BRef Name / mlbID).
Returns rate stats (AVG, OBP, SLG, OPS) and counting stats for that span. Row limit applies — many players may qualify in long ranges.
Inputs: start_date (required), end_date (required), player_name. Returns: result
expected_stats_batchA
Expected stats (xBA, xSLG, xwOBA vs actual) for multiple batters and/or pitchers in one call.
Use this when the user asks for a lineup, rotation, "team starters", or any named group (e.g. Yankees 1–9 and five starters). Pass comma-separated names. The MCP does not fetch MLB rosters automatically — use current player names from context or a quick web lookup, then list them here.
Args:
year: Season year (e.g. 2026). If Savant has not published that season’s leaderboard
yet (common before Opening Day or in early April), the table may be empty — use
the prior year for full-season expected stats, or lower min_plate_appearances
once enough games are played.
batters: Comma-separated hitter names, e.g.
"Aaron Judge, Juan Soto, Giancarlo Stanton, Anthony Volpe, ..."
pitchers: Comma-separated pitcher names, e.g.
"Gerrit Cole, Carlos Rodon, Marcus Stroman, Clarke Schmidt, Luis Gil"
min_plate_appearances: Minimum PA to qualify (default 50).
Provide at least one of batters or pitchers. Semicolons and newlines also separate names.
Inputs: year (required), batters, pitchers, min_plate_appearances. Returns: result
outfield_directional_oaaA
Outfielders' Outs Above Average broken out by direction (back/in, left/right).
Shows where outfielders add or lose value relative to average.
Args: year: Season year (e.g. 2024). min_opportunities: Minimum opportunities, or "q" for qualified (default). player_name: Optional. Filter to one outfielder.
Inputs: year (required), min_opportunities, player_name. Returns: result
outs_above_averageA
Outs Above Average (OAA) leaderboard by defensive position.
OAA estimates how many outs a fielder saved vs an average defender.
Args: year: Season year (e.g. 2024). position: One of: SS, 2B, 3B, 1B, LF, CF, RF, or ALL (all infield + outfield positions supported by Savant). Not available for catcher in this leaderboard. min_attempts: Minimum fielding attempts, or "q" for qualified (default). player_name: Optional. Filter to one fielder (use a position they actually play).
Inputs: year (required), position (required), min_attempts, player_name. Returns: result
pitcher_percentile_ranksA
Statcast percentile ranks for pitchers vs the league (spin, whiff%, xERA, etc.).
Each metric is 0–100. Use for "How does this pitcher's stuff compare?"
Args: year: Season year (e.g. 2024). player_name: Optional. Filter to one pitcher (e.g. "Gerrit Cole").
Qualifying pitchers: Statcast minimum innings/appearance thresholds.
Inputs: year (required), player_name. Returns: result
pitching_stats_date_rangeA
Pitching stats aggregated over a custom date range (Baseball Reference).
Args: start_date: Start date YYYY-MM-DD (2008+). end_date: End date YYYY-MM-DD (inclusive). player_name: Optional. Filter to one pitcher.
Returns ERA, WHIP, K/9, IP, W-L, etc. for that span.
Inputs: start_date (required), end_date (required), player_name. Returns: result
player_lookupA
Look up a baseball player to find their MLBAM ID, years active, and database IDs.
Accepts names like 'Mike Trout', 'Trout, Mike', or 'Shohei Ohtani'. Useful for verifying a player's identity or finding their MLBAM / FanGraphs / Baseball-Reference IDs before running other queries.
Inputs: player_name (required). Returns: result
season_batting_statsA
Get season-level batting statistics from FanGraphs.
Returns comprehensive stats: AVG, OBP, SLG, wOBA, wRC+, HR, SB, WAR, and many more for every qualifying batter.
Args: start_season: First season to include (e.g. 2024). end_season: Last season to include. Omit for a single year. min_plate_appearances: Minimum plate appearances to qualify. Leave blank to use the FanGraphs default qualified threshold. player_name: Optional. Filter to one player (e.g. 'Aaron Judge').
Great for finding league leaders, comparing players, or reviewing a full season.
Inputs: start_season (required), end_season, min_plate_appearances, player_name. Returns: result
season_pitching_statsA
Get season-level pitching statistics from FanGraphs.
Returns comprehensive stats: ERA, FIP, WHIP, K/9, BB/9, WAR, and many more for every qualifying pitcher.
Args: start_season: First season to include (e.g. 2024). end_season: Last season to include. Omit for a single year. min_innings: Minimum innings pitched to qualify. Leave blank to use the FanGraphs default qualified threshold. player_name: Optional. Filter to one pitcher (e.g. 'Gerrit Cole').
Great for finding pitching leaders, comparing pitchers, or analyzing a season.
Inputs: start_season (required), end_season, min_innings, player_name. Returns: result
sprint_speed_leaderboardA
Get the Statcast sprint speed leaderboard.
Returns each player's sprint speed in feet per second, measured on competitive running plays. Sprint speed is one of the best measures of raw speed and baserunning ability.
Args: year: Season year (e.g. 2024). min_opportunities: Minimum competitive run opportunities (default 10). player_name: Optional. Filter to one player (e.g. 'Ronald Acuna Jr.').
Great for finding the fastest players in baseball.
Inputs: year (required), min_opportunities, player_name. Returns: result
statcast_batterA
Get pitch-level Statcast data for a specific batter in a date range.
Returns every pitch the batter saw — pitch type, velocity, exit velocity, launch angle, expected batting average, and much more.
Args: player_name: Full name of the batter (e.g. 'Aaron Judge'). start_date: Start date in YYYY-MM-DD format. end_date: End date in YYYY-MM-DD format (defaults to start_date).
Great for analyzing a hitter's performance over a specific period.
Inputs: player_name (required), start_date (required), end_date. Returns: result
statcast_batter_exitvelo_barrelsA
Get exit velocity and barrel rate leaderboard for batters.
Returns average exit velocity, max exit velocity, barrel percentage, hard-hit rate, and batted ball quality metrics. A 'barrel' is a batted ball with the ideal combination of exit velocity and launch angle that almost always results in a hit.
Args: year: Season year (e.g. 2024). min_batted_ball_events: Minimum batted ball events to qualify (default 50). player_name: Optional. Filter to one batter (e.g. 'Aaron Judge').
Great for finding the hardest hitters and best contact quality in baseball.
Inputs: year (required), min_batted_ball_events, player_name. Returns: result
statcast_batter_expected_statsA
Get expected batting stats (xBA, xSLG, xwOBA vs actual) from Statcast.
Returns xBA, xSLG, xwOBA and the gap from actual stats — what a batter deserves based on quality of contact.
Args: year: Season year (e.g. 2024). min_plate_appearances: Minimum PA to qualify (default 50). player_name: Optional. If set (e.g. 'Aaron Judge'), returns only that player's row — use this so a star is not cut off by the 50-row leaderboard limit.
Great for identifying lucky/unlucky hitters or a single player's expected line.
Inputs: year (required), min_plate_appearances, player_name. Returns: result
statcast_batter_pitch_arsenalA
Get batting stats broken down by pitch type for batters.
Returns BA, SLG, wOBA, whiff rate, K rate, run value, and hard-hit rate for each pitch type a batter faced (4-seam, slider, curve, changeup, etc.).
Args: year: Season year (e.g. 2024). player_name: Optional. Filter to a specific batter (e.g. 'Aaron Judge'). If omitted, returns the full leaderboard. min_plate_appearances: Minimum PA per pitch type to qualify (default 10).
Great for analyzing how a hitter performs against fastballs vs. breaking balls.
Inputs: year (required), player_name, min_plate_appearances. Returns: result
statcast_pitcherA
Get pitch-level Statcast data for a specific pitcher in a date range.
Returns every pitch thrown — pitch type, velocity, spin rate, movement, exit velocity allowed, and more.
Args: player_name: Full name of the pitcher (e.g. 'Gerrit Cole'). start_date: Start date in YYYY-MM-DD format. end_date: End date in YYYY-MM-DD format (defaults to start_date).
Great for analyzing a pitcher's stuff, outings, or trends over time.
Inputs: player_name (required), start_date (required), end_date. Returns: result
statcast_pitcher_arsenal_statsA
Get performance stats broken down by pitch type for each pitcher.
Shows batting average, slugging, whiff rate, put-away rate, and run values for every individual pitch type a pitcher throws.
Args: year: Season year (e.g. 2024). min_plate_appearances: Minimum PA for each pitch type (default 25). player_name: Optional. Filter to one pitcher (all their pitch types).
Great for evaluating which specific pitches are most (or least) effective.
Inputs: year (required), min_plate_appearances, player_name. Returns: result
statcast_pitcher_exitvelo_barrelsA
Get exit velocity and barrel rate allowed by pitchers.
Returns average exit velocity, barrel percentage, and hard-hit rate allowed. Lower values indicate a pitcher who limits hard contact.
Args: year: Season year (e.g. 2024). min_batted_ball_events: Minimum batted ball events against (default 50). player_name: Optional. Filter to one pitcher (e.g. 'Gerrit Cole').
Great for finding pitchers who suppress hard contact most effectively.
Inputs: year (required), min_batted_ball_events, player_name. Returns: result
statcast_pitcher_expected_statsA
Get expected stats allowed by pitchers from Statcast.
Returns xBA, xSLG, xwOBA, xERA allowed vs actual — contact quality vs results.
Args: year: Season year (e.g. 2024). min_plate_appearances: Minimum PA against to qualify (default 50). player_name: Optional. If set (e.g. 'Gerrit Cole'), returns only that pitcher's row (avoids missing them in the truncated leaderboard).
Great for finding pitchers who outperformed or underperformed their contact quality.
Inputs: year (required), min_plate_appearances, player_name. Returns: result
statcast_pitcher_pitch_arsenalA
Get pitch arsenal breakdown for all pitchers in a season.
Shows average velocity (and related columns) per pitch type for qualifying pitchers.
Args: year: Season year (e.g. 2024). min_pitches: Minimum total pitches thrown to qualify (default 100). player_name: Optional. Filter to one pitcher (e.g. 'Spencer Strider').
Great for understanding what pitches a pitcher throws and how often.
Inputs: year (required), min_pitches, player_name. Returns: result
statcast_searchA
Search for pitch-level Statcast data within a date range.
Returns pitch-by-pitch data including pitch type, velocity, spin rate, exit velocity, launch angle, expected stats, and more.
Args: start_date: Start date in YYYY-MM-DD format (e.g. '2024-07-04'). end_date: End date in YYYY-MM-DD format. Defaults to start_date for single-day queries. team: Optional three-letter team abbreviation to filter results (e.g. 'NYY', 'LAD', 'BOS').
Data is available from the 2008 season onward. Tip: keep date ranges to 1-5 days for faster results.
Inputs: start_date (required), end_date, team. Returns: result
team_season_batting_statsA
Full-season actual batting stats for one MLB team (entire roster).
Uses FanGraphs when available; if that fails or returns no rows, falls back to scraping Baseball Reference's team page (same numbers as the site: PA, HR, AVG/OBP/SLG, OPS+, WAR, etc.).
Args:
team: 3-letter team abbreviation — same as Baseball Reference
(e.g. PHI, NYY, LAD, ARI).
season: Calendar year of the season (e.g. 2025).
min_plate_appearances: Minimum PA to include on the FanGraphs pull (default 1).
Ignored for the BRef fallback, which lists everyone who appeared.
player_name: Optional. Restrict to one player (e.g. Bryce Harper).
Use this for “Phillies lineup stats”, “Yankees 2024 hitters”, etc. For league
leaderboards without a team filter, use season_batting_stats instead.
Inputs: team (required), season (required), min_plate_appearances, player_name. Returns: result
team_season_pitching_statsA
Full-season actual pitching stats for one MLB team (rotation + bullpen).
Uses FanGraphs when available; otherwise scrapes Baseball Reference's team pitching table (W, L, ERA, G, GS, SV, IP, SO, WAR, etc.).
Args:
team: 3-letter abbreviation (e.g. PHI, NYY).
season: Season year (e.g. 2025).
min_innings: Minimum IP for the FanGraphs pull (default 1). Ignored for BRef
fallback (full staff).
player_name: Optional. One pitcher (e.g. Zack Wheeler).
Split rotation vs bullpen by sorting on GS in the table (starters vs relievers).
For league-wide pitching only, use season_pitching_stats.
Inputs: team (required), season (required), min_innings, player_name. Returns: result
team_standingsA
Get MLB division standings for a given season.
Returns win-loss records, winning percentage, and games back for all 30 teams organised by division (AL East, AL Central, AL West, NL East, NL Central, NL West).
Args: season: The season year (e.g. 2024).
Inputs: season (required). Returns: result
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 24 tools
Most tools have distinct purposes focused on specific baseball statistics domains (batting, pitching, fielding, team stats), but there is some overlap between tools like 'statcast_batter_expected_stats' and 'expected_stats_batch' that could cause confusion about when to use each. The descriptions help clarify, but an agent might need to carefully parse the differences.
Tool names follow a consistent snake_case pattern throughout, with clear descriptive naming (e.g., 'batter_percentile_ranks', 'statcast_pitcher_arsenal_stats'). There are minor deviations like 'player_lookup' (more generic) and 'statcast_search' (broader scope), but overall the naming is predictable and well-structured.
With 24 tools, the count feels heavy for a Statcast-focused server, though it covers a comprehensive range of baseball analytics. Some tools could potentially be consolidated (e.g., multiple expected stats tools), making the surface somewhat bloated compared to a more streamlined set.
The tool set provides excellent coverage of baseball statistics, including batting, pitching, fielding, team stats, and player lookup across multiple data sources (Statcast, FanGraphs, Baseball Reference). There are no obvious gaps—it supports detailed analysis, comparisons, and historical queries with flexible date ranges and filtering options.
Related MCP Connectors
Provides easy access to MLB, Baseball Savant, Statcast, and Fangraphs baseball data. Query detaile…
Live sports stats and pre-computed analysis for AI assistants across NBA, MLB, NFL, and NHL.
NFL analytics tools for AI agents: stats, fantasy, injuries, schedules, and advanced analysis.
Query your SEO data in plain language: rankings, audits, backlinks, competitors and AI visibility.
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceProvides access to comprehensive MLB baseball statistics through the MLB Stats API, pybaseball library, Statcast data, FanGraphs, and Baseball Reference, including support for generating matplotlib visualizations.34-
- AlicenseAqualityDmaintenanceConnects Claude to the SportRadar MLB API to access real-time baseball data including game schedules, live scores, player statistics, team standings, injury reports, and play-by-play information through natural language queries.191MIT
- AlicenseNot gradedqualityDmaintenanceProvides comprehensive baseball analytics through 32 tools covering pitching, batting, defensive metrics, and visualizations via the Model Context Protocol, enabling natural language queries for advanced Statcast and MLB statistics.MIT
- FlicenseNot gradedqualityDmaintenanceManages Yahoo Fantasy Baseball teams via AI, allowing natural language queries for roster updates, trade analysis, waiver wire, and league insights.4-