Hudl Volleyball MCP Server
Exports volleyball match actions and player statistics in compact formats compatible with pandas DataFrames for further analysis.
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., "@Hudl Volleyball MCP Serverdiagnose our P4 rotation sideout issues"
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.
🏐 Hudl Volleyball MCP Server (hudl-volleyball-mcp)
A 5/5 production-grade Model Context Protocol (MCP) server that connects AI clients (Claude Desktop, Cursor, Antigravity, or custom LLM agents) to Hudl and Balltime volleyball analytics.
Transform your AI into a Staff Volleyball Performance Analyst capable of scouting opponents, diagnosing rotation breakdowns (P1–P6), analyzing serve-receive stability, generating box scores, and exporting event-by-event touches directly to DataVolley (.dvw) and Pandas.
⚖️ Legal Disclaimer
This is an independent, open-source community project and is not affiliated with, maintained by, authorized by, or endorsed by Hudl, Agile Sports Technologies, Volleymetrics, or Balltime.
All product and company names are trademarks™ or registered® trademarks of their respective holders. Use of them does not imply any affiliation with or endorsement by them. This integration operates under a strict, client-side, read-only policy to access data belonging to your authenticated team account.
🌟 Why Coaches & Analysts Love This Server
🛡️ Zero Password Storage: Interactive browser login (
login_to_hudl) lets you log in via 1Password, Bitwarden, Apple/Google SSO, or 2FA. Your password is never stored or seen by the AI or environment files.📦 1-Click
.mcpbInstallation: Distribute a single double-clickable.mcpbbundle that non-technical coaches can install into Claude Desktop without touching a terminal.⚡ Zero-Setup
uvx: Run instantly viauvx mcp-hudl-volleyballwithout manually managing virtual environments or dependencies.🪟 Context-Window Optimized: Strips bloated API metadata and UI JSON dumps. Tools return either clean Markdown tables or token-efficient compact dictionaries (
output_format="markdown"or"compact").🛡️ Defensive Networking & Account Protection:
Strict Read-Only: Enforces zero mutation policy; any mutating request is immediately blocked before transmission.
Rate Limiting: Built-in 2 requests/second token bucket rate limiter with jittered exponential backoff on HTTP 429/5xx.
Multi-Tier Disk Caching: 7-day persistent cache for match box scores and play-by-play touches; 15-minute cache for schedules and team rosters.
🏐 Volleyball Domain Semantics: Native support for Rotations P1 through P6, setter distribution, First-Ball Sideout (FBSO), and DataVolley
.dvwskill codes (S,R,E,A,B,D,F) and evaluation codes (#,+,!,-,=).🤖 5 Built-In FastMCP Prompts (
@mcp.prompt): Pre-packaged, professional coaching workflows for opponent scouting, rotation diagnostics, MVP evaluation, DataVolley export, and serve-receive audits.
Related MCP server: ValorLens
🚀 Quick Start & Installation
Option 1: 1-Click MCP Bundle (.mcpb) for Claude Desktop (Recommended for Coaches)
No terminal or programming required!
Download the latest
hudl-volleyball-mcp.mcpbbundle from the GitHub Releases page.Double-click the file, or open Claude Desktop > Settings > Extensions > Install Extension and select
hudl-volleyball-mcp.mcpb.In Claude Desktop chat, simply say:
"Log me into Hudl". A browser window opens to let you log in securely.
(Developers: To build the .mcpb bundle yourself, run npx @anthropic-ai/mcpb pack in the project root).
Option 2: Zero-Setup uvx (Recommended for Cursor & Terminal Users)
Requires Astral's ultra-fast uv. No virtual environment activation needed.
Claude Desktop Configuration
Add this to your claude_desktop_config.json:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"hudl-volleyball": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/onnobos/hudle_volleyball_mcp.git",
"mcp-hudl-volleyball"
]
}
}
}Cursor IDE Configuration
In Cursor, open Settings > Features > MCP Servers > Add New MCP Server (or edit .cursor/mcp.json):
{
"mcpServers": {
"hudl-volleyball": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/onnobos/hudle_volleyball_mcp.git",
"mcp-hudl-volleyball"
]
}
}
}Option 3: Local Development Installation
# 1. Clone the repository
git clone https://github.com/onnobos/hudle_volleyball_mcp.git
cd hudl_mcp
# 2. Create and activate virtual environment
python3.11 -m venv .venv
source .venv/bin/activate
# 3. Install in editable mode with hatchling
pip install -e .
# 4. Install Playwright Chromium browser for interactive login
playwright install chromium🔐 Frictionless Authentication & Auto-Refresh
We believe coaches should never have to paste sensitive passwords into plain text files.
Interactive Pop-Up Browser Login (Zero Credential Storage)
In your AI chat, say:
"Log me into Hudl"(or trigger thelogin_to_hudltool).A visible Chromium browser pops up to
https://www.hudl.com/login.Log in with your password manager (1Password, Bitwarden, iCloud Keychain), Apple/Google SSO, or 2FA.
As soon as you reach
hudl.com/home, session tokens are automatically saved to your OS Keyring and~/.hudl_mcp/auth_state.json. The browser closes automatically.You stay logged in for weeks without touching credentials again.
Automatic 401 Re-Authentication
If your session ever expires while running queries, the server automatically attempts to refresh the session token, clears stale caches, and retries the request without failing your prompt.
🛠️ Available MCP Tools
Tool Name | Parameters | Description |
|
| Automatically discovers all teams on your Hudl account with team IDs, club/school names, and coach roles. |
|
| Lists recent volleyball matches with match IDs, dates, opponents, and set scores. |
|
| Retrieves official player box scores: Kills, Errors, Total Attacks, Hitting %, Assists, Aces, Digs, Blocks, and Points. |
|
| Analyzes rotations P1 through P6: sideout %, point-scoring %, first-ball sideout (FBSO), and setter distribution tendencies. |
|
| Retrieves event-by-event volleyball touches with video timestamps, start/dest zones, routes, blockers, and DataVolley |
|
| Opens interactive browser window to log in safely via password manager or SSO. |
| — | Refreshes session authentication tokens and resets cache. |
Format Tip: All data tools accept
output_format="markdown"(clean human-readable tables) oroutput_format="compact"(token-efficient minified JSON for large analytics queries).
🧠 FastMCP Coaching Prompts (@mcp.prompt)
The server exposes 5 built-in workflows that structure complex multi-step volleyball analysis:
scout_opponent(opponent_name): Searches matches, calculates offensive kill distributions, isolates weak sideout rotations, evaluates passer stability, and outputs a complete tactical game plan.analyze_rotation_weaknesses(match_id): Audits P1–P6 sideout efficiencies, detects unforced errors vs blocked attacks, assesses predictable setter choices, and suggests rotational adjustments.match_mvp_breakdown(match_id): Evaluates True Points, hitting efficiency, clutch performance in late-set situations (set score 20+), and selects Match MVP, Offensive Player, Defensive Anchor, and Unsung Hero.datavolley_export(match_id, set_number): Converts all video touches into standard DataVolley.dvwformat strings ready for import into scouting software.serve_receive_audit(match_id): Calculates passer ratings(3 * perfect + 2 * positive + 1 * medium) / total, setter in-system rates, and opponent serving heatmaps.
📊 OpenVolley & Pandas Compatibility
OpenVolley / DataVolley (.dvw) Syntax
All match touches retrieved via get_game_actions include DataVolley .dvw standard codes:
[Team (* or a)][Jersey (2 digits)][Skill (S/R/E/A/B/D)][Evaluation (#/+/!/-/=)][Zones/Combo]Skills:
S(Serve),R(Receive),E(Set),A(Attack),B(Block),D(Dig),F(Freeball)Evaluations:
#(Perfect / Kill / Ace),+(Positive),!(Medium),-(Poor / Negative),=(Error)
Python pandas Integration
Pass output_format="compact" to load match actions or player statistics directly into a Pandas DataFrame:
import json
import pandas as pd
from hudl_mcp.server import get_game_actions
# Retrieve touches in compact JSON format
raw_json = await get_game_actions(match_id="your-match-id", output_format="compact", limit=200)
df = pd.DataFrame(json.loads(raw_json))
# Filter in-system attack kills
kills = df[(df["action"] == "attack") & (df["quality"] == "kill")]
print(f"Total Kills: {len(kills)}, Pipe Kills: {len(kills[kills['route'] == 'pipe'])}")📋 5 Ready-to-Use Volleyball Scouting Prompts
Copy and paste these directly into Claude Desktop or Cursor:
1. Opponent Pre-Match Scouting Report
"We play Voléro this weekend. Run the
scout_opponentprompt for 'Voléro'. Find our last match against them, break down their top outside hitter's hitting percentage, identify their weakest sideout rotation, and recommend our serving targets."
2. Rotation Diagnostic & Sideout Droughts
"Analyze our rotation weaknesses for match
LUTRY. Which rotation had the lowest sideout percentage? Were the lost points caused by direct reception errors or blocked attacks? Recommend adjustments for our serve-receive formation."
3. Match MVP & Clutch Performance Breakdown
"Run the
match_mvp_breakdownworkflow for match123456. Calculate True Points and net point differential for each player. Who scored the most clutch kills after 20 points in Set 3? Name the Match MVP and Defensive Player of the Match."
4. Serve-Receive & Passer Stability Audit
"Perform a serve-receive audit on our last match. Calculate the 3-point passing efficiency rating for each passer:
(3*perfect + 2*positive + 1*medium) / attempts. Which rotation conceded the most aces?"
5. DataVolley Touch Export for Setter Distribution
"Export all attacks and sets from Set 2 of match
LUTRYinto DataVolley.dvwformat. Group setter distribution by pass quality (in-system vs out-of-system) and show attack kill rates from Zone 4, Zone 3, Zone 2, and the pipe."
🔒 Security & Strict Read-Only Policy
This server is designed for elite athletic programs that prioritize data security:
No Mutations: Operates exclusively in READ-ONLY mode. All GraphQL mutation keywords are intercepted and rejected with
HudlSecurityError. It cannot alter rosters, delete videos, or overwrite match data.Credential Isolation: Tokens are stored in OS Keyring or local user cache (
~/.hudl_mcp/). No passwords are committed to git or exposed to LLM context.WAF & Rate-Limit Shield: Token-bucket rate limiting (2 req/s) prevents aggressive LLM tool loops from triggering IP bans or rate limits.
🧪 Testing
Run the comprehensive unit test suite:
# Run all tests
pytest tests/ -v
# Run connection diagnostics against your live account
hudl-test📄 License
Distributed under the MIT License. See LICENSE for details.
This server cannot be deployed
Maintenance
Related MCP Connectors
Live sports stats and pre-computed analysis for AI assistants across NBA, MLB, NFL, and NHL.
Esports cognitive-combine data over MCP: free cohort stats, paid player & team scouting reports.
A paid remote MCP for AI SDK data query MCP, built to return verdicts, receipts, usage logs, and aud
Schedules, scores, odds, splits & explainable AI bet confidence — 8+ sports, free instant key.
Related MCP Servers
- FlicenseBqualityDmaintenanceEnables querying volleyball match, team, and tournament data from VolleyballWorld API through SQL queries on a SQLite database.1-
- AlicenseNot gradedqualityCmaintenanceProvides structured Valorant esports analytics data and metrics through MCP, including match analysis, player profiling, scouting reports, and ad-hoc SQL queries. Enables AI models to generate accurate coaching insights from pre-computed analytics tables.Apache 2.0
- AlicenseNot gradedqualityAmaintenanceEnables plain-language cricket analytics for MCP clients, including calibrated win probability, ball-by-ball match archives, career and matchup records, venue and phase stats, and live scores, all without an API key.BSD 3-Clause
- AlicenseAqualityBmaintenanceEnables AI agents to browse and filter experiment runs, retrieve metrics, logs, tables, and artifacts, plot comparisons as PNG images, and download full-fidelity training history for local analysis against a self-hosted Open Train server. It also provides diagnostic tooling that surfaces metric evidence and investigation leads without asserting causality.16MIT