Appearance
MCP Server Setup
sfs-mcp exposes Scottfree Sports data as Model Context Protocol tools for AI assistants. Premium subscribers can ask an assistant for model research, current odds, line movement, historical results, summaries, betting-strategy leaderboards, public consensus, weather, scores, injuries, rosters, and prediction-market context.
The assistant supplies the reasoning and writing. Scottfree Sports supplies the data tools.
Access
| Product | MCP access |
|---|---|
| Scottfree Sports Data | No |
| Scottfree Sports Basic | No |
| Scottfree Sports Premium | Yes |
If you need Premium, view pricing.
Install
The MCP server ships with the Python CLI package.
Requires Python 3.11 or newer:
bash
python3 --version
python3 -m pip install --upgrade scottfree-sports-cli
Verify:
bash
sfs --version
which sfs-mcp
Your Scottfree Sports API key should look like:
text
sk_alphapysports_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Find it on the Account page:
text
https://sports-app.scottfreellc.com/app/account
What The MCP Server Can Do
The server exposes 17 public customer tools.
| Tool | Parameters | Purpose |
|---|---|---|
get_daily_brief | sport | Daily model research brief for the slate |
get_predictions | sport, model_type | Current slate predictions and line fields |
get_results | sport, model_type, limit | Recent graded results |
get_summary | sport, model_type | Model performance summary |
get_strategies | sport, model_type, season | Betting-strategy leaderboard (ROI, win%, record) |
get_odds | sport | Current odds |
get_sports | none | Supported sports and model types |
get_account_info | none | Customer account details |
get_usage | none | Monthly API quota usage |
get_kalshi_markets | sport | Kalshi market prices |
get_polymarket_odds | sport | Polymarket market odds |
compare_market_odds | sport, model_type | Model predictions plus Kalshi/Polymarket context |
get_game_weather | sport | Outdoor venue weather |
get_live_scores | sport, date | Live or same-day scores through BALLDONTLIE |
get_injuries | sport | Injury reports through BALLDONTLIE GOAT tier |
get_players | sport, team_id, search, per_page | Player rosters through BALLDONTLIE |
get_betting_consensus | sport | Covers public betting consensus |
Sports:
text
mlb, nba, nfl, nhl, ncaaf, ncaab
Model types:
text
over_under, won_on_points, won_on_spread
For moneyline and spread, probabilities are home-team relative. For over/under, probabilities are over-relative.
Tool Call Examples
Your assistant calls tools for you. These examples show the exact argument shape each public tool expects.
text
get_daily_brief({"sport":"mlb"})
text
get_predictions({"sport":"mlb","model_type":"won_on_points"})
text
get_results({"sport":"mlb","model_type":"won_on_points","limit":25})
text
get_summary({"sport":"mlb","model_type":"won_on_points"})
text
get_strategies({"sport":"mlb","model_type":"won_on_points","season":"2026"})
text
get_odds({"sport":"mlb"})
text
get_sports({})
text
get_account_info({})
text
get_usage({})
text
get_kalshi_markets({"sport":"nfl"})
text
get_polymarket_odds({"sport":"nba"})
text
compare_market_odds({"sport":"mlb","model_type":"won_on_points"})
text
get_game_weather({"sport":"mlb"})
text
get_live_scores({"sport":"nba","date":"2026-05-23"})
text
get_injuries({"sport":"nba"})
text
get_players({"sport":"nba","search":"James","per_page":10})
text
get_betting_consensus({"sport":"mlb"})
Setup - Claude Desktop
Claude Desktop runs local command MCP servers well.
- Open Claude Desktop.
- Go to Settings, Developer, Edit Config.
- Add this server config:
json
{
"mcpServers": {
"scottfree-sports": {
"command": "sfs-mcp",
"env": {
"SFS_API_KEY": "sk_alphapysports_PASTE_YOUR_KEY",
"SFS_API_URL": "https://sports-api.scottfreellc.com"
}
}
}
}
- Fully quit and restart Claude Desktop.
- Start a new chat and ask: "List the Scottfree Sports tools you can use."
If Claude Desktop cannot find sfs-mcp, use the full path:
bash
which sfs-mcp
Then set:
json
"command": "/Users/you/.local/bin/sfs-mcp"
Config file locations:
| OS | Path |
|---|---|
| macOS | ~/Library/Application Support/Claude/claude_desktop_config.json |
| Windows | %APPDATA%\Claude\claude_desktop_config.json |
Setup - Claude Code
bash
claude mcp add scottfree-sports sfs-mcp \
--env SFS_API_KEY=sk_alphapysports_PASTE_YOUR_KEY \
--env SFS_API_URL=https://sports-api.scottfreellc.com
Verify:
bash
claude mcp list
Then start a new Claude Code session and ask:
text
Show me today's MLB moneyline model research and current odds.
Setup - Cursor Or Other Local MCP Hosts
Use the same local command pattern:
json
{
"mcpServers": {
"scottfree-sports": {
"command": "sfs-mcp",
"env": {
"SFS_API_KEY": "sk_alphapysports_PASTE_YOUR_KEY",
"SFS_API_URL": "https://sports-api.scottfreellc.com"
}
}
}
}
Some hosts require args instead of a single command. If so, use:
json
{
"command": "python3",
"args": ["-m", "sflow_cli.mcp_server"],
"env": {
"SFS_API_KEY": "sk_alphapysports_PASTE_YOUR_KEY",
"SFS_API_URL": "https://sports-api.scottfreellc.com"
}
}
Setup - ChatGPT
ChatGPT custom MCP support is managed through OpenAI's app/connector flow and may require developer mode, workspace approval, or a remote MCP server. OpenAI's current help docs state that local MCP servers are not directly connected in ChatGPT; remote MCP or a supported tunnel/app flow is required.
Use Scottfree Sports with ChatGPT only if your ChatGPT plan and workspace support custom MCP apps/connectors. See OpenAI's docs:
For most customers today, Claude Desktop or Claude Code is the fastest path for local sfs-mcp.
Optional BALLDONTLIE Key
The core Scottfree Sports tools do not require BALLDONTLIE. These tools do:
| Tool | BALLDONTLIE requirement |
|---|---|
get_live_scores | BALLDONTLIE key |
get_players | BALLDONTLIE key |
get_injuries | BALLDONTLIE GOAT tier |
Configure:
bash
sfs config set --balldontlie-api-key YOUR_BALLDONTLIE_KEY --use-keyring
If no BALLDONTLIE key is configured, those tools return a clear BALLDONTLIE API key not configured message instead of failing silently.
Tool Details
get_daily_brief
Parameters:
| Name | Type | Required | Notes |
|---|---|---|---|
sport | string | Yes | Best for active slate sports such as mlb, nba, nhl |
Returns a structured daily model brief across over/under and spread markets. Includes model pick labels, model probability, market-implied probability, signed Delta(Model-Implied), and model-position counts.
Good prompts:
text
Show me today's MLB daily brief. Sort the biggest model-vs-implied deltas first.
text
For tonight's NBA games, summarize where the model disagrees most with the market and explain what other context I should check.
get_predictions
Parameters:
| Name | Type | Required |
|---|---|---|
sport | string | Yes |
model_type | string | Yes |
Returns current slate prediction rows and line fields.
Good prompts:
text
Get MLB moneyline predictions and explain the biggest difference between BLEND and IMPLIED.
text
Get NHL over/under predictions. For each game, show the over probability, implied probability, and current total.
get_results
Parameters:
| Name | Type | Required | Default |
|---|---|---|---|
sport | string | Yes | |
model_type | string | Yes | |
limit | integer | No | 100 |
Returns recent graded result rows. Useful for checking whether a model has been running hot or cold recently.
get_summary
Parameters:
| Name | Type | Required |
|---|---|---|
sport | string | Yes |
model_type | string | Yes |
Returns the summary table for all model columns, including win percentage and recent windows when available.
get_odds
Parameters:
| Name | Type | Required |
|---|---|---|
sport | string | Yes |
Returns current odds and line fields for the sport.
get_sports
No parameters. Returns supported sports and model types.
get_account_info
No parameters. Returns current account, plan, subscription status, and monthly limit.
get_usage
No parameters. Returns monthly request count, limit, remaining requests, tier, and reset date.
get_kalshi_markets
Parameters:
| Name | Type | Required |
|---|---|---|
sport | string | Yes |
Returns Kalshi prediction-market data when available.
get_polymarket_odds
Parameters:
| Name | Type | Required |
|---|---|---|
sport | string | Yes |
Returns compact Polymarket event and market data.
compare_market_odds
Parameters:
| Name | Type | Required | Default |
|---|---|---|---|
sport | string | Yes | |
model_type | string | No | won_on_spread |
Returns Scottfree predictions, Kalshi markets, and Polymarket markets in one payload.
get_game_weather
Parameters:
| Name | Type | Required |
|---|---|---|
sport | string | Yes |
Best for outdoor sports: mlb, nfl, ncaaf.
get_live_scores
Parameters:
| Name | Type | Required | Notes |
|---|---|---|---|
sport | string | Yes | nba, nfl, mlb, nhl |
date | string | No | YYYY-MM-DD; defaults to today |
Requires BALLDONTLIE key.
get_injuries
Parameters:
| Name | Type | Required |
|---|---|---|
sport | string | Yes |
Requires BALLDONTLIE GOAT tier.
get_players
Parameters:
| Name | Type | Required | Default |
|---|---|---|---|
sport | string | Yes | |
team_id | integer | No | |
search | string | No | |
per_page | integer | No | 25 |
Requires BALLDONTLIE key.
get_betting_consensus
Parameters:
| Name | Type | Required |
|---|---|---|
sport | string | Yes |
Returns public betting consensus from Covers.
Example Premium Session
Try this sequence in Claude Desktop or Claude Code:
text
You are helping me research today's MLB slate. Use Scottfree Sports tools only as data sources. Do not invent missing data.
1. Call get_daily_brief for MLB.
2. Call get_predictions for MLB moneyline.
3. Call get_odds for MLB.
4. Call get_summary for MLB moneyline.
5. If useful, call get_betting_consensus and get_game_weather.
6. Present a table with game time, matchup, current line, BLEND probability, IMPLIED probability, Delta(Model-Implied), and any notable context.
7. Separate model disagreement from betting recommendation. Tell me what is data-backed and what is uncertain.
For multi-tool examples, see MCP Workflows. For a longer walkthrough, see the Premium MCP Demo.
Troubleshooting
sfs-mcp: command not found
Install or upgrade:
bash
python3 -m pip install --upgrade scottfree-sports-cli
Then locate it:
bash
which sfs-mcp
Use the full path in your MCP config if your assistant cannot find it.
The server starts but every tool returns 401
The API key is missing, revoked, expired, or copied incorrectly. Verify in a terminal:
bash
SFS_API_KEY=sk_alphapysports_PASTE_YOUR_KEY sfs account info
The server starts but tools return 403
Your key is valid but the subscription tier does not allow MCP. MCP is Premium-only.
Claude Desktop does not show the tools
Fully quit and restart Claude Desktop. On macOS, use Cmd+Q; closing the window is not enough.
Scores or injuries fail
Core Scottfree tools should still work. Scores, players, and injuries use BALLDONTLIE and need your own BALLDONTLIE key. Injuries require their GOAT tier.
Answers feel stale
Predictions refresh after scheduled pipeline runs. Ask the assistant to call get_predictions, then inspect the predictions_date field.
