Atlas / MCP servers / chadpapineau / yahoo-fantasy-football-mcp

yahoo-fantasy-football-mcpBLOCK

mcp/chadpapineau/yahoo-fantasy-football-mcp

MCP server for Yahoo Fantasy Football: format-aware, deeply reasoned roster, waiver, trade and start/sit recommendations grounded in your league's real scoring, cross-referenced with NFL usage, injury, betting and news context. Ships with expert Skills. Node/TypeScript.

Verdict
BLOCK
Grade
F
Trust score
51 /100
Exposed tools
4 3r · 1w · 0d
Transport
stdio
License
MIT
Stars
1
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

🏈 Yahoo Fantasy Football MCP Server

Format-aware, deeply reasoned fantasy-football recommendations for Claude — read-only first, a human confirms every write, and news is data, never instructions.

= 24.15" src="https://img.shields.io/badge/node-%3E%3D24.15-339933?logo=node.js&logoColor=white">

Phase 1a is built and tested (2026-09-30). The server runs today on your own league file (league.yaml, kept outside the repo) plus free nflverse and weather data: 19 tools, 7 resources, 3 prompts, 4 Skills and the ff CLI — 3,867 unit and 127 process tests, a QA + penetration-test round whose 80 confirmed findings are all fixed (register). Yahoo is not connected: Yahoo's Fantasy API is application-gated and read-only, and this build has no API access, so nothing here logs in to Yahoo or changes your roster — every recommen
Read from source at commit fb3a4e220275OBSERVED · 2026-10-11
02

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control.

claude-code
claude mcp add fantasy-football-mcp -- npx -y [email protected]
claude-desktop
{
  "mcpServers": {
    "fantasy-football-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "[email protected]"
      ]
    }
  }
}
03

Exposed tools (4)

3 read · 1 write · 0 destructive.

ToolRiskDescription
ff_boomread
ff_debug_echoread
ff_proberead
start-sitwriteDecides things: with a colon
04

Trust audit

BLOCKgrade F · trust 51/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codeFAIL
L2Instruction surface (what it tells the agent)FAIL
L3Class-specific surfacePASS
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
declared (5 observation(s))
Network
declared (5 observation(s))
Shell
declared (2 observation(s))
Dependencies
pinned
Secrets in source
found

Findings (25)

HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
eslint.config.js:151
message: "node:vm evaluates code — banned like eval (plan 02 §7).",
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHObfuscation / stealth · obf.rtl_override · CWE-506, CWE-94
src/providers/manual/schema.ts:29
const FORBIDDEN_TEXT_RE = /[\u0000-\u001f\u007f-\u009f---]/u;
HIGHPrompt injection · prompt.override · CWE-94, CWE-1427
docs/qa/2026-09-30-phase1a-qa-pentest.md:587
- **What** Under ManualLeagueProvider, the status "A" player universe includes every nflverse roster_weekly player, not only the players in league.yaml. Their names come from the nflverse:roster_weekl
Why it matters. asks the agent to drop prior instructions or safety
Fix. remove the instruction
MEDIUMObfuscation / stealth · obf.homoglyph · CWE-506, CWE-94
src/domain/analytics/lineup.ts:974
"no opponent for this week (no opponents entry, or his players are missing): P(win) is not reported; ΔP(win) is against an evenly matched opponent",
MEDIUMObfuscation / stealth · obf.zero_width · CWE-506, CWE-94
src/providers/manual/schema.ts:29
const FORBIDDEN_TEXT_RE = /[\u0000-\u001f\u007f-\u009f---]/u;
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
tests/cli/print-config.test.ts:25
const SECRET = "fake-odds-value-0123456789";
LOWInventory / provenance · inv.binary · CWE-1104
fixtures/nflverse/injuries/injuries_2025.parquet
injuries_2025.parquet
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
LOWInventory / provenance · inv.binary · CWE-1104
fixtures/nflverse/injuries/injuries_2026.parquet
injuries_2026.parquet
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
LOWInventory / provenance · inv.binary · CWE-1104
fixtures/nflverse/schedules/games.excerpt.parquet
games.excerpt.parquet
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
LOWInventory / provenance · inv.binary · CWE-1104
fixtures/nflverse/stats_player/stats_player_week_2026.parquet
stats_player_week_2026.parquet
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
LOWInventory / provenance · inv.binary · CWE-1104
fixtures/nflverse/weekly_rosters/roster_weekly_2026.excerpt.parquet
roster_weekly_2026.excerpt.parquet
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
LOWInventory / provenance · inv.hidden_file · CWE-1104
.gitleaks.toml
.gitleaks.toml
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
.prettierignore
.prettierignore
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
scripts/docs-check-selftest/.docs-check-skip
.docs-check-skip
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
tests/lint/boundaries.test.ts:211
[`export const f = new Function("return 1");`, "no-new-func"],
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
LOWFilesystem / path · fs.credential_store · CWE-22, CWE-59
tests/skills/onboard-location-claims.test.ts:258
"The server refuses ~/.ssh, but not {X}.",
Why it matters. touches a credential store
LOWFilesystem / path · fs.credential_store · CWE-22, CWE-59
tests/skills/onboard-location-claims.test.ts:259
"Only ~/.ssh is refused; {X} is not.",
Why it matters. touches a credential store
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
src/domain/analytics/availability.ts:6
import type { NflTeam } from "../../config/schema.js";
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
src/domain/analytics/inputs.ts:5
import { freshnessClass, stampState } from "../../config/freshness.js";
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
src/domain/analytics/kdef.ts:8
import type { NflTeam } from "../../config/schema.js";
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
src/domain/analytics/lineup.ts:9
import type { NflTeam } from "../../config/schema.js";
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
src/domain/analytics/projection.ts:9
import { freshnessClass, stampState } from "../../config/freshness.js";
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
docs/plan/02-security-architecture.md:143
Fixed port (`FF_AUTH_PORT`, default **8765 [A-2]**), bound to `127.0.0.1`, self-signed certificate generated once into `<config>/auth-cert/` (via the system `openssl` binary — macOS ships one; Node ha
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
docs/plan/03-lifecycle-and-operations.md:239
| A-4 | Binding both `127.0.0.1` and `::1` is needed for `localhost` callbacks | try with a browser; if Yahoo accepts `https://127.0.0.1:port` the IPv6 bind is unnecessary (03 §F.3) |
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
tests/http/client.test.ts:55
["https://140.82.112.3/x", "host_not_allowed"],

Gates applied: instruction_override, no_behavioural_pass.

Audited 2026-10-11 · audit v0.4.1 · source sha fb3a4e220275full audit observations/trust-audit/mcp-server/chadpapineau__yahoo-fantasy-football-mcp.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-11fb3a4e220275BLOCKF51first audit
06

Questions

What is the yahoo-fantasy-football-mcp MCP server?

MCP server for Yahoo Fantasy Football: format-aware, deeply reasoned roster, waiver, trade and start/sit recommendations grounded in your league's real scoring, cross-referenced with NFL usage, injury, betting and news context. Ships with expert Skills. Node/TypeScript.

What tools does yahoo-fantasy-football-mcp expose?

4 in total: 3 read-only, 1 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.

Is yahoo-fantasy-football-mcp safe to connect to an agent?

No — not without reading the findings first. The audit graded it F (51/100) and found 3 critical or high issues in the source. Each one is listed on this page with the file and line it is on.

What credentials does yahoo-fantasy-football-mcp need?

No credential environment variables were found in its source, so it appears to need none.

How does yahoo-fantasy-football-mcp run?

It speaks stdio, so it runs as a local process your client starts. It is published on npm as fantasy-football-mcp at 0.0.0.

How current is this page?

The grade is for one exact copy of the source (fb3a4e220275), read on 2026-10-11. The repository is watched and re-audited when it changes.

Advertisement