Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)
Model Context Protocol server for live & historical sports stats and odds via ESPN.
สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน
ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry
เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง
ESPN_BASE_URL, ESPN_TIMEOUT_SECONDS, ESPN_MAX_RETRIES, ESPN_MCP_READONLY, ESPN_MCP_PROFILE, ESPN_MCP_ENABLE_TOOL_SEARCH, ESPN_MCP_TOOL_SEARCH_BACKENDต้องเตรียมก่อน
คุณใช้แอปไหน
เลือกแอปด้านบน เราจำไว้ให้ ครั้งหน้าปุ่มจะขึ้นว่า “ติดตั้งลง …”
เปิด Claude Desktop → Settings → Developer → Edit Config แล้ววางค่านี้ในไฟล์ claude_desktop_config.json
{
"mcpServers": {
"espn": {
"command": "uvx",
"args": [
"mcp-server-espn"
],
"env": {
"ESPN_BASE_URL": "ใส่ค่าของคุณ",
"ESPN_TIMEOUT_SECONDS": "ใส่ค่าของคุณ",
"ESPN_MAX_RETRIES": "ใส่ค่าของคุณ",
"ESPN_MCP_READONLY": "ใส่ค่าของคุณ",
"ESPN_MCP_PROFILE": "ใส่ค่าของคุณ",
"ESPN_MCP_ENABLE_TOOL_SEARCH": "ใส่ค่าของคุณ",
"ESPN_MCP_TOOL_SEARCH_BACKEND": "ใส่ค่าของคุณ"
}
}
}
}พิมพ์คำสั่งนี้ใน Terminal
claude mcp add espn --env ESPN_BASE_URL='ใส่ค่าของคุณ' --env ESPN_TIMEOUT_SECONDS='ใส่ค่าของคุณ' --env ESPN_MAX_RETRIES='ใส่ค่าของคุณ' --env ESPN_MCP_READONLY='ใส่ค่าของคุณ' --env ESPN_MCP_PROFILE='ใส่ค่าของคุณ' --env ESPN_MCP_ENABLE_TOOL_SEARCH='ใส่ค่าของคุณ' --env ESPN_MCP_TOOL_SEARCH_BACKEND='ใส่ค่าของคุณ' -- uvx mcp-server-espnเติมค่าที่เว้นว่างไว้ก่อนรัน
วางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json
{
"mcpServers": {
"espn": {
"command": "uvx",
"args": [
"mcp-server-espn"
],
"env": {
"ESPN_BASE_URL": "ใส่ค่าของคุณ",
"ESPN_TIMEOUT_SECONDS": "ใส่ค่าของคุณ",
"ESPN_MAX_RETRIES": "ใส่ค่าของคุณ",
"ESPN_MCP_READONLY": "ใส่ค่าของคุณ",
"ESPN_MCP_PROFILE": "ใส่ค่าของคุณ",
"ESPN_MCP_ENABLE_TOOL_SEARCH": "ใส่ค่าของคุณ",
"ESPN_MCP_TOOL_SEARCH_BACKEND": "ใส่ค่าของคุณ"
}
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
วางในไฟล์ .vscode/mcp.json ของโปรเจกต์
{
"servers": {
"espn": {
"type": "stdio",
"command": "uvx",
"args": [
"mcp-server-espn"
],
"env": {
"ESPN_BASE_URL": "ใส่ค่าของคุณ",
"ESPN_TIMEOUT_SECONDS": "ใส่ค่าของคุณ",
"ESPN_MAX_RETRIES": "ใส่ค่าของคุณ",
"ESPN_MCP_READONLY": "ใส่ค่าของคุณ",
"ESPN_MCP_PROFILE": "ใส่ค่าของคุณ",
"ESPN_MCP_ENABLE_TOOL_SEARCH": "ใส่ค่าของคุณ",
"ESPN_MCP_TOOL_SEARCH_BACKEND": "ใส่ค่าของคุณ"
}
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
ตัวนี้รันในเครื่องคุณ แต่ ChatGPT ต่อได้เฉพาะ server บนอินเทอร์เน็ต ลองเลือกแอปอื่น
ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี
ESPN_BASE_URL envESPN_TIMEOUT_SECONDS envESPN_MAX_RETRIES envESPN_MCP_READONLY envESPN_MCP_PROFILE envESPN_MCP_ENABLE_TOOL_SEARCH envESPN_MCP_TOOL_SEARCH_BACKEND envค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README
รันในเครื่องคุณ รายการเครื่องมือจะขึ้นในแอป AI หลังติดตั้ง
เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 7 พ.ย. 2569
ชื่อใน registry ยืนยันด้วยบัญชี GitHub christianclaudio ซึ่งเป็นเจ้าของ repo
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ตัวนี้รันบนเครื่องคุณ ไม่มี endpoint บนอินเทอร์เน็ต
ตัวนี้รันบนเครื่อง ใช้ค่าที่ตั้งในเครื่องแทน
รันในเครื่องคุณ เราอ่านรายการเครื่องมือได้เฉพาะตัวที่มี endpoint บนอินเทอร์เน็ต
เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo
จากการตรวจเบื้องต้นของเรา ผ่าน 1 จาก 1 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น
registry ไม่ได้ระบุว่าต้องใช้กุญแจ แต่บางตัวจะขอให้ล็อกอินตอนใช้ครั้งแรก
รันบนเครื่องของคุณ โปรแกรม AI จะเปิด server ขึ้นมาเองเมื่อใช้ ข้อมูลไม่ต้องผ่านเซิร์ฟเวอร์ของผู้ทำ (ยกเว้นตัวที่ไปเรียกบริการออนไลน์ต่อ)
repo บน GitHub มีการแก้โค้ดล่าสุด – และส่งรุ่นล่าสุด (2.2.0) เข้า registry 7 วันที่ผ่านมา
โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต้องมี Python (uv) ในเครื่องด้วย
ในหมวดเดียวกันมี Spec Driven Development, Remote Desktop Commander, FlyDocs
server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว
อ่านการ์ด:★ ดาว GitHubiสามเสา: รีวิว · ผลตรวจ · การใช้งานiอัปเดต = วันที่ส่งรุ่นล่าสุดเข้า registryi
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Spec-driven development workflow: your agent works issues, sessions and the status lifecycle.
ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ PopNx MCP ไม่ได้ตรวจหรือรับรองเนื้อหา ตัด HTML รูปภาพ และสคริปต์ออกแล้ว ลิงก์จะพาออกนอกเว็บ
Enterprise-grade Model Context Protocol (MCP) server for live and historical sports analytics, consensus betting odds, and predictions via ESPN.
Equips AI agents with real-time sports intelligence, live win probabilities, in-depth boxscore statistics, roster hierarchies, and matchup analytics.
[!IMPORTANT]
Community Project Disclaimer
mcp-server-espnis an independent open-source community project. It is not affiliated with, sponsored by, endorsed by, or supported by ESPN Inc. or The Walt Disney Company. *"ESPN"* is a trademark of ESPN Inc. All data provided via ESPN's public REST endpoints is intended for educational, research, and personal non-commercial use.
Autonomous sports analysis requires high-velocity, structured, and resilient data feeds:
mcp-server-espn provides a unified, hardened Model Context Protocol interface directly to ESPN's public sports data endpoints.
graph TD
Client["AI Agent / MCP Client (Antigravity, Claude, Codex, Cortex)"] Gateway["Root FastMCP Gateway (espn-mcp) (stdio / Streamable HTTP)"] ParentMW["Parent Middleware Pipeline (ParentAuditMiddleware & ReadOnlyGateMiddleware)"] GamesSub["Sub-Server: espn-games (games_* | GamesDomainGuard)"] TeamsSub["Sub-Server: espn-teams (teams_* | TeamsDomainGuard)"] NewsSub["Sub-Server: espn-news (news_* | Resources)"] ClientHandler["Hardened ESPN AsyncClient (Connection Pool & 429 Jitter Backoff)"] ESPN["ESPN Public REST CDN (https://site.web.api.espn.com)"]
Client <-->|"JSON-RPC (tools/list, tools/call)"| Gateway Gateway --> ParentMW ParentMW --> GamesSub ParentMW --> TeamsSub ParentMW --> NewsSub GamesSub & TeamsSub & NewsSub <-->|"API Methods"| ClientHandler ClientHandler <-->|"HTTPS REST Mirror"| ESPN
mcp-server-espn implements canonical FastMCP 4 Server Composition via root.mount(..., namespace="..."):
espn-games (games_*), espn-teams (teams_*), and espn-news (news_*).ParentAuditMiddleware (timing logs, audit trails, and secret scrubbing) and ReadOnlyGateMiddleware (fail-closed read-only enforcement).GamesDomainGuardMiddleware (query limit validation <= 100) and TeamsDomainGuardMiddleware (team and athlete identifier validation).--profile full|games|teams|news|readonly (ESPN_MCP_PROFILE):full (default): All 33 domain tools and resources mounted.games: Scores, summaries, schedules, standings, rankings, transactions, league leaders, draft, live play-by-play, situations, odds, probabilities, predictor, calendar, futures, power index (20 tools).teams: Rosters, depth charts, player stats, athlete profiles, bio, stats, gamelog, splits, search, list teams, team detail, team statistics (12 tools).news: League news and reference resources (1 tool).readonly: Read-only enforcement across all routes.tools/list by default for seamless client compatibility, while enabling search transforms via --enable-tool-search (ESPN_MCP_ENABLE_TOOL_SEARCH): BM25 ranking for natural-language queries by default (search_tools takes a query), or regex patterns with --tool-search-backend regex (ESPN_MCP_TOOL_SEARCH_BACKEND=regex; search_tools takes a pattern).games_get_scoreboard(sport="football", league="nfl") to identify close games in the 2nd half.games_get_game_situation(sport="football", league="nfl", event_id="401872947") and games_get_win_probabilities(sport="football", league="nfl", event_id="401872947") to inspect down/distance, red zone state, and live win expectancy curve.games_get_play_by_play(sport="football", league="nfl", event_id="401872947") for drive-by-drive sequencing and scoring event logs.teams_get_athlete_bio(sport="football", league="nfl", athlete_id="12483") to retrieve draft capital, college pedigree, and physical metrics.teams_get_athlete_gamelog and teams_get_athlete_splits to analyze performance trends against specific defensive schemes and venue conditions.games_get_leaders_by_athlete(sport="football", league="nfl", category="passing", sort="yards") to evaluate percentile rankings.The server supports canonical sport/league slug pairs and auto-normalizes popular shortcuts:
| Sport Slug | League Slug | Recognized Shortcuts / Aliases | Common Display Name |
|---|---|---|---|
football | nfl | nfl | National Football League |
football | college-football | cfb, ncaa-football, fbs | NCAA College Football |
basketball | nba | nba | National Basketball Association |
basketball | mens-college-basketball | cbb, ncaa-basketball | NCAA Men's College Basketball |
basketball | womens-college-basketball | wbb, ncaa-womens-basketball | NCAA Women's Basketball |
basketball | wnba | wnba | Women's National Basketball Association |
baseball | mlb | mlb | Major League Baseball |
hockey | nhl | nhl | National Hockey League |
soccer | eng.1 | epl, premier-league | English Premier League |
soccer | usa.1 | mls | Major League Soccer |
soccer | uefa.champions | ucl, champions-league | UEFA Champions League |
soccer | esp.1 | la-liga | Spanish La Liga |
soccer | ita.1 | serie-a | Italian Serie A |
soccer | ger.1 | bundesliga | German Bundesliga |
soccer | fra.1 | ligue-1 | French Ligue 1 |
All tools implement explicit MCP 2.0 annotations (readOnlyHint=True, idempotentHint=True):
| Domain | Tool | Parameters | Description |
|---|---|---|---|
| Games | games_get_scoreboard | sport, league, date, week, season_type, group, limit | Final scores and results for any date (date=YYYYMMDD) or inclusive date range (date=YYYYMMDD-YYYYMMDD; ranges of up to 31 days are fetched one day at a time, because ESPN rejects the range form on team-sport scoreboards, so limit applies to each day (up to 31 × limit events) and one failed day fails the whole call; golf ranges are sent to ESPN as is), plus live scores, state (pre/in/post), period/clock, TV broadcasts, starting probables. Returns event IDs for other game tools. |
| Games | games_get_game_summary | sport, league, event_id | Consensus betting lines, matchup predictor win %, ATS, scoring plays, drives, leaders, momentum. |
| Games | games_get_team_schedule | sport, league, team_id, season, season_type | Season schedule with historical game results and scores: the regular season by default, postseason games with season_type=3. |
| Games | games_get_standings | sport, league, season | Division, conference, and overall league standings, win-loss records, games back, and win percentages. season is the year the season ends (2016 = the 2015-16 NBA season), or the year it starts for soccer (2026 = the 2026-27 Premier League season); the response echoes requested_season, season, and season_display. |
| Games | games_get_rankings | sport, league | Top 25 national polls and rankings (AP Top 25, Coaches Poll, College Football Playoff). |
| Games | games_get_transactions | sport, league, limit | League-wide transactions, roster trades, waivers, signings, and releases. |
| Games | games_get_leaders_by_athlete | sport, league, limit, category, sort | Statistical leaderboards across players in a league. |
| Games | games_get_leaders_by_team | sport, league, limit, category, sort | Team statistical rankings and leaderboards. |
| Games | games_get_league_groups | sport, league | League conference, division, and structural group hierarchies. |
| Games | games_get_league_events | sport, league, dates | The league's current scheduled events. ESPN's events route ignores dates, so date filtering is not supported: a dates value returns isError: true with no request, pointing to games_get_scoreboard with the same value as date. |
| Games | games_get_league_draft | sport, league, season | League draft rounds, team selections, and pick results. |
| Games | games_get_scoreboard_header | sport, league | Live ticker scoreboard header data across games for a sport and league. |
| Games | games_get_event_odds | sport, league, event_id, competition_id | Sportsbook consensus and provider odds (spreads, totals, moneylines). |
| Games | games_get_play_by_play | sport, league, event_id, limit, page | Play-by-play sequence, clock, scoring, and drive events. |
| Games | games_get_game_situation | sport, league, event_id | Real-time in-game situation (down, distance, yardline, possession, red zone). |
| Games | games_get_win_probabilities | sport, league, event_id | Live and historical win probability curves across game progression. |
| Games | games_get_game_predictor | sport, league, event_id | Pre-game and in-game matchup predictor and projection metrics. |
| Games | games_get_calendar | sport, league, dates | League schedule calendar and active event dates across a season. |
| Games | games_get_futures | sport, league, season | Season futures betting markets (championship odds, win totals). |
| Games | games_get_power_index | sport, league, season | Team power index (FPI / BPI) ratings and efficiency metrics. |
| Teams | teams_search | query, type, limit | Global search for athletes and teams by name/keyword (type="player" or "team"). |
| Teams | teams_list_teams | sport, league | Directory of all
ตัดมาแค่ช่วงต้น อ่านต่อใน repo