Skip to main content
Glama
omniviewai

gamedai-nfl-mcp

by omniviewai

gamedai-nfl-mcp

Part of gamedai, the interactive sports radio. This MIT-licensed MCP server exposes five read-only NFL tools backed by the public gamedai API.

The default backend is https://gamedai-v2-preview.fly.dev. Override it with GAMEDAI_API_BASE. Scout calls optionally use GAMEDAI_SCOUT_API_KEY; the legacy GAMEDAI_PUBLIC_API_KEY name is accepted as an alias.

Install

cd tools/gamedai-mcp
python3.12 -m venv .venv
. .venv/bin/activate
python -m pip install -e ".[test]"

Related MCP server: sleeper-mcp

Tools

  • get_game_scores(date?, event_id?) reads the public slate. date is sent to the backend; event_id filters the returned slate locally.

  • get_wire_news(page?, page_size?) reads the paginated Wire feed.

  • get_player_grade(player, season?, week?) reads Scout player grades.

  • get_start_sit_recommendation(player_a, player_b, week, season?) reads the Scout start/sit comparison. week is required.

  • get_scout_rankings(position?, scoring?, week?) reads the Scout rankings board.

When season is omitted, get_player_grade and get_start_sit_recommendation use the latest complete NFL stats season: today.year - 1 when the month is March or later, otherwise today.year - 2. An explicit season always wins. Rankings derive their source season in the backend.

All backend errors are returned as structured objects with code, http_status, and a bounded message. Scout keys are sent only to /v1/scout/* calls.

Hosted mode

The hosted service uses streamable HTTP:

gamedai-nfl-mcp --transport streamable-http --host 0.0.0.0 --port 8080

The MCP endpoint is /mcp; process liveness is /healthz; backend readiness is /readyz. The Fly app is the existing gamedai-mcp app and deploys from this directory with flyctl deploy.

The pinned MCP SDK enables stateless HTTP when its FastMCP constructor supports stateless_http=True. Older SDKs keep normal sessions, as a safe fallback.

Environment

export GAMEDAI_API_BASE="https://gamedai-v2-preview.fly.dev"
export GAMEDAI_SCOUT_API_KEY="<server-provisioned Scout key>"

OPENAI_APPS_CHALLENGE_TOKEN is only needed for the existing public Apps challenge route. Never commit keys or expose the Scout key to an MCP model.

Tests

Tests use mocked HTTP clients and do not call the live backend:

pytest

The canonical backend contract is generated at backend/openapi/scout_public_contract.openapi.json; run python scripts/mcp/check_contract_drift.py from the repository root to check for route or schema drift.

License: MIT.

Available Tools

5 tools
get_game_scoresB
Read-only

Return the public NFL slate, optionally filtered by event id.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNo
event_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is established. The description adds that the data is public and that filtering is optional, which is useful, but it does not describe behavior like whether live/current scores are returned or how the date argument affects results.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence that conveys the core purpose and primary optional filter without wasted words or redundant schema repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the low complexity, strong read-only annotations, and presence of an output schema, the description is close to sufficient. However, the unexplained date parameter and lack of any usage context prevent it from being fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It explains event_id as a filter but completely omits date, leaving one of the two parameters effectively undocumented in both schema and description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Return') and resource ('public NFL slate'), and the optional event_id filter adds scope. It is distinguishable from sibling tools, which focus on news, player grades, start/sit advice, and rankings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given about when to use this tool versus the siblings, nor when to supply date versus event_id. The phrase 'optionally filtered by event id' hints at one use case but offers no context such as needing scores for a given date or specific game.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_player_gradeB
Read-only

Return a public Scout player grade.

ParametersJSON Schema
NameRequiredDescriptionDefault
weekNo
playerYes
seasonNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds a small extra behavioral detail by noting the grade is 'public' (implying no auth needed) and 'Scout' (indicating the grading source), but it does not disclose behavior around defaults or missing data. This is adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no wasted words. Every term ('Return', 'public', 'Scout', 'player grade') contributes meaning, making it highly concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Even with an output schema present and safety annotations covering side effects, the description leaves gaping holes: no usage guidance, no parameter semantics, and no context for what week/season mean or what happens when they are omitted. An agent would struggle to call this correctly beyond the simplest case.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description provides no parameter meanings. 'Player' is inferable from the resource name, but 'week' and 'season' are completely unexplained, including their default behavior (both default to null). The description fails to compensate for the schema's lack of detail.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Return') and a specific resource ('public Scout player grade'), which clearly identifies the tool's function. The term 'grade' distinguishes it from sibling tools like get_scout_rankings, get_game_scores, and get_wire_news without needing to name them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance about when to use this tool versus alternatives. The description does not mention conditions, prerequisites, or exclusions, and it never references sibling tools like get_scout_rankings for comparative scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_scout_rankingsC
Read-only

Return the public Scout rankings board.

ParametersJSON Schema
NameRequiredDescriptionDefault
weekNo
scoringNoPPR
positionNoALL

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is established. The description adds the 'public' qualifier, hinting at accessibility, but discloses no further behavioral traits such as data freshness, pagination, or default behavior. This is acceptable but not enriched.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no filler. It is concise and immediately names the resource, though it is arguably too sparse to fully serve the tool's needs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return-value documentation is less critical, but the lack of parameter semantics and usage guidance leaves a meaningful gap. Sibling context helps disambiguate the tool's purpose, yet an agent cannot reliably know how to filter results without more detail.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description provides no explanation of the three parameters (week, scoring, position) or their allowed values. The agent is left to guess what 'PPR', 'ALL', or a null week mean. The description fails to compensate for the missing schema documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Return') and names a distinct resource ('public Scout rankings board'), which clearly separates it from the sibling tools like get_game_scores or get_wire_news. It is clear but terse; it does not explicitly contrast itself with siblings, though the unique resource name largely accomplishes that.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives, no mention of prerequisites, and no indication of how week/scoring/position filters should be used. The description states only what the tool returns, leaving the agent to infer appropriate usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_start_sit_recommendationB
Read-only

Return a public Scout start/sit comparison.

ParametersJSON Schema
NameRequiredDescriptionDefault
weekYes
seasonNo
player_aYes
player_bYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, and destructiveHint=false. The description adds 'public' and 'Scout' as source context, but discloses no additional behavioral traits such as data freshness, rate limits, or how missing optional parameters are handled.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence with no filler, front-loading the action and resource. It is concise, though the brevity contributes to under-specification in other dimensions.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema, read-only annotations, and self-explanatory parameter names, the description is minimally viable. It still lacks usage context and explicit parameter semantics, so it is not complete enough for confident invocation in ambiguous situations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description needed to explain what player_a, player_b, week, and season mean. It does not mention any of them; 'start/sit comparison' only weakly implies the two players involved.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific resource ('a public Scout start/sit comparison') and a clear action ('Return'), which makes it distinguishable from sibling tools like get_game_scores or get_player_grade. It is clear, though it does not explicitly say that the comparison is between player_a and player_b.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given about when to choose this tool over siblings or when not to use it. The description only states what it returns, leaving the agent to infer contexts such as comparing two players for a given week.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_wire_newsA
Read-only

Return paginated Wire NFL news.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
page_sizeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, non-destructive, and open-world behavior, so the description only needs to add extra behavioral context. It adds that results are paginated, but does not mention ordering, rate limits, or how the open-world nature affects repeated calls.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One short sentence with zero filler, front-loading the resource and pagination behavior. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple with optional params and an output schema, so the short description is mostly viable, but it omits parameter semantics and any behavioral context beyond pagination. An agent invoking with defaults succeeds, but custom pagination or expectations about the news feed are not covered.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description does not explain the page or page_size parameters beyond the word 'paginated'. It relies on the schema's defaults and self-evident names; no ranges, limits, or pagination mechanics are provided.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Return') and identifies a distinct content type ('Wire NFL news'), which clearly separates it from sibling tools focused on scores, grades, recommendations, and rankings. The pagination qualifier also sets expectations about output format.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit when-to-use or alternatives guidance appears; the description only states what it returns. The intended context (retrieving NFL news) is inferable from the name and sibling tools, but there is no explicit direction to prefer this over other tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 5 tool updatesv0.2.0
    • First observedget_game_scores
    • First observedget_player_grade
    • First observedget_scout_rankings
    • First observedget_start_sit_recommendation
    • First observedget_wire_news

TDQS

A3.5/5.0

Scored across 5 tools

Disambiguation5/5

Each tool targets a distinct resource: game scores, news, player grades, start/sit recommendations, and rankings. There is no meaningful overlap between any of the five tools, so an agent can confidently select the correct one.

Naming Consistency5/5

All tool names follow the same verb_noun pattern: get_game_scores, get_wire_news, get_player_grade, get_start_sit_recommendation, get_scout_rankings. The convention is uniform and predictable.

Tool Count5/5

Five tools is well-scoped for a read-only NFL data server. Each tool covers a clear data category without redundancy or padding, and the number feels appropriate for the domain size.

Completeness4/5

The set covers the core data types implied by the server name: scores, news, grades, start/sit advice, and rankings. Some potentially related endpoints (e.g., team or player details) are absent, but the existing surface likely matches the intended Gamedai/Scout API scope.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Provides read-only access to Sleeper fantasy football leagues, enabling team snapshots, available players, matchups, trade context, and league history through standardized MCP tools.
    MIT
  • F
    license
    A
    quality
    C
    maintenance
    Enables read-only access to Sleeper fantasy sports data, including users, leagues, rosters, matchups, transactions, drafts, players, trending activity, playoff brackets, traded picks, and sport state via MCP tools.
    18
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    Provides read-only access to Sleeper fantasy football data including user info, leagues, rosters, matchups, and NFL state through MCP tools.
    62 npm
    MIT
  • F
    license
    B
    quality
    C
    maintenance
    Provides MCP-compatible LLMs with read-only access to normalized ESPN Fantasy Football league snapshots, team rosters, and free-agent data.
    3
    -