Should I start X or Y? NFL fantasy compares, rankings, byes, matchups, schedule strength, checks
DraftCall MCP Server (io.draftcall/fantasy-football)
DraftCall provides NFL fantasy football data for the 2026 season via the Model Context Protocol. It supports questions that compare options such as “should I start X or Y,” including rankings, byes, matchups, schedule strength, and checks.
🛠️ Key Features
NFL fantasy football comparisons: rankings, byes, matchups
Schedule strength and start/sit “checks”
Model Context Protocol server: io.draftcall/fantasy-football
7 tools exposed by the server
🚀 Use Cases
Start/sit decisions in NFL fantasy matchups
Querying schedules by strength and team/player context
Comparing two or more players (e.g., “should I start Bijan Robin…”)
⚡ Developer Benefits
MCP-compatible endpoint for assistants: https://draftcall.io/mcp
Streamable HTTP transport
Stateless operation
No authentication required (free, read-only)
⚠️ Limitations
No auth and no account; access is read-only
Service scope is limited to NFL fantasy football for the 2026 season
Compare any two NFL players head to head for fantasy football: points per game in the requested scoring format, volume stats, bye weeks, and which one produced more. Use this for start/sit, draft, and trade questions about two specific players.
Parameters3
player_a
string
required
First player name, e.g. "Bijan Robinson".
player_b
string
required
Second player name, e.g. "Jahmyr Gibbs".
scoring_format
string
optional
Scoring format. ppr awards 1 point per reception, half_ppr 0.5, standard 0. Defaults to half_ppr, the most common league setting.
Raw schema
{
"type": "object",
"properties": {
"player_a": {
"type": "string",
"description": "First player name, e.g. \"Bijan Robinson\"."
},
"player_b": {
"type": "string",
"description": "Second player name, e.g. \"Jahmyr Gibbs\"."
},
"scoring_format": {
"type": "string",
"enum": [
"ppr",
"half_ppr",
"standard"
],
"default": "half_ppr",
"description": "Scoring format. ppr awards 1 point per reception, half_ppr 0.5, standard 0. Defaults to half_ppr, the most common league setting."
}
},
"required": [
"player_a",
"player_b"
]
}
get_rankings
Fantasy football rankings for a position in a given scoring format, ordered by points per game. Positions: qb, rb, wr, te, flex, k, def. Use this for "who are the best X" and draft board questions.
Parameters3
position
string
required
Position to rank. flex covers RB, WR, and TE together.
scoring_format
string
optional
Scoring format. ppr awards 1 point per reception, half_ppr 0.5, standard 0. Defaults to half_ppr, the most common league setting.
limit
integer
optional
How many players to return, newest ranking order.
Raw schema
{
"type": "object",
"properties": {
"position": {
"type": "string",
"enum": [
"qb",
"rb",
"wr",
"te",
"flex",
"k",
"def"
],
"description": "Position to rank. flex covers RB, WR, and TE together."
},
"scoring_format": {
"type": "string",
"enum": [
"ppr",
"half_ppr",
"standard"
],
"default": "half_ppr",
"description": "Scoring format. ppr awards 1 point per reception, half_ppr 0.5, standard 0. Defaults to half_ppr, the most common league setting."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 60,
"default": 15,
"description": "How many players to return, newest ranking order."
}
},
"required": [
"position"
]
}
get_player
A single player's fantasy profile: positional rank, points per game in all three scoring formats, season stats, games played, and bye week.
How steep the fantasy dropoff is at each position in a given scoring format, measured from the top player to replacement level. Use this for draft-strategy questions like whether to take a running back or a wide receiver first.
Parameters1
scoring_format
string
optional
Scoring format. ppr awards 1 point per reception, half_ppr 0.5, standard 0. Defaults to half_ppr, the most common league setting.
Raw schema
{
"type": "object",
"properties": {
"scoring_format": {
"type": "string",
"enum": [
"ppr",
"half_ppr",
"standard"
],
"default": "half_ppr",
"description": "Scoring format. ppr awards 1 point per reception, half_ppr 0.5, standard 0. Defaults to half_ppr, the most common league setting."
}
}
}
get_bye_conflicts
Given a list of players, report which bye weeks two or more of them share. Use this for roster planning and draft questions about stacking byes.
Who a player faces in a given week of the 2026 season, whether it is home or away, and how generous that opponent has been to that position. Use this for in-season start or sit questions that name a week, which the season-long tools cannot answer.
Parameters3
player
string
required
Player name, e.g. "Puka Nacua".
week
integer
required
Regular-season week, 1 through 18.
scoring_format
string
optional
Scoring format. ppr awards 1 point per reception, half_ppr 0.5, standard 0. Defaults to half_ppr, the most common league setting.
Raw schema
{
"type": "object",
"properties": {
"player": {
"type": "string",
"description": "Player name, e.g. \"Puka Nacua\"."
},
"week": {
"type": "integer",
"minimum": 1,
"maximum": 18,
"description": "Regular-season week, 1 through 18."
},
"scoring_format": {
"type": "string",
"enum": [
"ppr",
"half_ppr",
"standard"
],
"default": "half_ppr",
"description": "Scoring format. ppr awards 1 point per reception, half_ppr 0.5, standard 0. Defaults to half_ppr, the most common league setting."
}
},
"required": [
"player",
"week"
]
}
get_adp_market_gaps
Players whose consensus average draft position disagrees most with their actual production ranking. A player taken EARLIER than his production is being drafted on expectation (a rookie, a new situation, a bounce-back); one taken LATER is being drafted on doubt. Use this for draft-prep questions about who the room may be mispricing. This is a disagreement, NOT a recommendation: production is last season's, while ADP already prices in injuries, trades and rookies with no NFL snaps.
Parameters4
position
string
optional
Restrict to one position. Omit for all four.
direction
string
optional
earlier_than_production: the room drafts him sooner than his production ranks him. later_than_production: the room waits longer. Omit for both.
scoring_format
string
optional
Scoring format. ppr awards 1 point per reception, half_ppr 0.5, standard 0. Defaults to half_ppr, the most common league setting.
limit
integer
optional
Raw schema
{
"type": "object",
"properties": {
"position": {
"type": "string",
"enum": [
"qb",
"rb",
"wr",
"te"
],
"description": "Restrict to one position. Omit for all four."
},
"direction": {
"type": "string",
"enum": [
"earlier_than_production",
"later_than_production"
],
"description": "earlier_than_production: the room drafts him sooner than his production ranks him. later_than_production: the room waits longer. Omit for both."
},
"scoring_format": {
"type": "string",
"enum": [
"ppr",
"half_ppr",
"standard"
],
"default": "half_ppr",
"description": "Scoring format. ppr awards 1 point per reception, half_ppr 0.5, standard 0. Defaults to half_ppr, the most common league setting."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 50,
"default": 10
}
}
}
verify_claim
Check a number you are about to state, or one a user has stated, against DraftCall data for one player: points per game, games played, bye week, positional rank, or any season stat such as rushingYards or receptions. Returns whether the figure matches and the actual value when it does not. Use this before quoting a figure from memory, and whenever a user asserts a stat.
Parameters4
player
string
required
Player name, e.g. "Puka Nacua".
metric
string
required
Which figure to check. ppg is points per game in scoring_format; rank is positional rank; the rest are season totals.
value
number
required
The figure being checked.
scoring_format
string
optional
Scoring format. ppr awards 1 point per reception, half_ppr 0.5, standard 0. Defaults to half_ppr, the most common league setting.
Raw schema
{
"type": "object",
"properties": {
"player": {
"type": "string",
"description": "Player name, e.g. \"Puka Nacua\"."
},
"metric": {
"type": "string",
"enum": [
"ppg",
"games_played",
"bye_week",
"rank",
"fg50Plus",
"fgAttempted",
"fgMade",
"fgPct",
"passingTDs",
"passingYards",
"receivingTDs",
"receivingYards",
"receptions",
"rushingTDs",
"rushingYards",
"targets",
"xpMade"
],
"description": "Which figure to check. ppg is points per game in scoring_format; rank is positional rank; the rest are season totals."
},
"value": {
"type": "number",
"description": "The figure being checked."
},
"scoring_format": {
"type": "string",
"enum": [
"ppr",
"half_ppr",
"standard"
],
"default": "half_ppr",
"description": "Scoring format. ppr awards 1 point per reception, half_ppr 0.5, standard 0. Defaults to half_ppr, the most common league setting."
}
},
"required": [
"player",
"metric",
"value"
]
}
get_strength_of_schedule
How easy or hard a team's schedule is for one fantasy position, over the full season and over the fantasy playoff weeks (14 through 17), measured as the average fantasy points its opponents allowed to that position over the prior completed season. Give a team abbreviation or a player name; give only a position to rank all 32 teams. Use this for rest-of-season stash, trade deadline, and playoff planning questions.
Parameters3
team
string
optional
Team abbreviation, e.g. "KC". Optional when player is given.
player
string
optional
Player name; resolves the team and position. Optional when team is given.
position
string
optional
Position to grade the schedule for. Required with team, inferred from player, and on its own ranks every team.
Raw schema
{
"type": "object",
"properties": {
"team": {
"type": "string",
"description": "Team abbreviation, e.g. \"KC\". Optional when player is given."
},
"player": {
"type": "string",
"description": "Player name; resolves the team and position. Optional when team is given."
},
"position": {
"type": "string",
"enum": [
"qb",
"rb",
"wr",
"te",
"k",
"def"
],
"description": "Position to grade the schedule for. Required with team, inferred from player, and on its own ranks every team."
}
}
}
NFL fantasy football data for the 2026 season, over the Model Context Protocol.
Endpoint:https://draftcall.io/mcpTransport: streamable HTTP, stateless
Auth: none. Free, read-only, no API key, no account.
Docs:https://draftcall.io/mcp-server/
Ask an MCP-connected assistant "should I start Bijan Robinson or Jahmyr Gibbs in
PPR" and it can answer from live data instead of guessing. Every tool result
carries the draftcall.io URL the numbers came from, so answers stay citable.
Connect
Any client that accepts a remote MCP endpoint. No install, no clone.
Claude Code
code
claude mcp add --transport http draftcall https://draftcall.io/mcp
Claude Desktop, or any client that takes a JSON config
Some clients and registries cannot take a remote URL and require a command they
can run locally. For those, this repository ships a stdio bridge: it forwards
newline-delimited JSON-RPC to the same hosted endpoint, so the tools, prompts
and resources are identical and there is still only one server implementation.
bash
docker build -t draftcall-mcp .
docker run --rm -i draftcall-mcp
Or without Docker, using any Node 18 or newer:
bash
node stdio-proxy.mjs
The bridge has no dependencies and holds no state. Set DRAFTCALL_MCP_URL to
point it somewhere other than production. Prefer the remote URL above wherever
your client supports it; the bridge is a compatibility shim, not the main path.
Tools
Ten, all read-only. Nothing here can modify a league, a roster, or an account.
Tool
Arguments
What it answers
compare_players
player_a, player_b, scoring_format
Head to head: points per game in the requested format, volume stats, bye weeks, who produced more. Start/sit, draft and trade questions about two named players.
get_rankings
position, scoring_format, limit
Position rankings for QB, RB, WR, TE, FLEX, K or DEF.
get_player
name
One player's profile: production, tier, efficiency, bye week.
search_players
query, limit
Find players by partial name, team, or position.
get_positional_scarcity
scoring_format
How steep the scoring dropoff is at each position, for draft strategy.
get_bye_conflicts
players
Which bye weeks two or more rostered players share.
get_weekly_matchup
player, week, scoring_format
Who a player faces in a given week of the season, home or away, and how generous that opponent has been to the position. In-season start/sit questions that name a week.
get_strength_of_schedule
team + position, or player, or position alone
How easy or hard a schedule is for one position, over the full season and over fantasy playoff weeks 14 through 17. A position on its own ranks all 32 teams, easiest first.
get_adp_market_gaps
position, direction, scoring_format, limit
Players whose consensus average draft position disagrees most with their actual production ranking. Taken earlier than production means the room is drafting on expectation; later means it is drafting on doubt. A disagreement, not a recommendation.
verify_claim
player, metric, value, scoring_format
Check a stated figure (points per game, games played, bye week, rank, or any season stat) against the data. Confirms it, or returns the real number. Call it before quoting a stat from memory.
Prompts and resources
Three prompts, for clients that surface them in a picker or slash menu: start_sit, draft_pick, and bye_planning. Each one names the exact tools to call and the order to call them.
One resource, draftcall://methodology, a single markdown page describing how every derived figure is computed: season basis, scoring formats, tiers, scarcity, opponent difficulty, and strength of schedule.
scoring_format accepts PPR, half-PPR and standard. position accepts QB, RB,
WR, TE, FLEX, K and DEF. week accepts 1 through 18.
Data
Player names and statistics are public-domain factual data. Rankings refresh
daily. Every figure is labelled inline with the season it describes (2025
regular-season production until the 2026 season accrues a usable sample), and
every response carries a stats_season field, so a model cannot mistake a
completed season for a projection. DraftCall publishes no projections, ADP, or
injury status through this server.
This repository registers the hosted server, documents its tools, and carries
the stdio bridge for clients that need one. The server itself runs at the
endpoint above.
License
The contents of this repository (the registry manifest and these docs) are MIT
licensed. See LICENSE and NOTICE.
That covers this repo only. The DraftCall service, the data it returns, and the
DraftCall name are not covered: use of the endpoint is governed by
https://draftcall.io/terms/, and DraftCall is a trademark of Pizza Robot Studios
LLC (USPTO Serial 99762133).