返回市场
NBA分析-MCP

NBA分析-MCP

作者:nikhilkichili2 星标更新:2025-06-03

项目介绍

NBA赔率MCP服务器

这是一个使用Model Context Protocol (MCP)协议的服务器,提供来自The Odds API的NBA篮球赔率数据。

概述

此MCP服务器使大型语言模型(如Claude)能够访问实时的NBA赔率数据。它提供了以下信息:

  • 当前NBA比赛及其投注赔率
  • NBA总冠军赔率
  • 特定球队的比赛日程
  • 基本的NBA联赛信息

该服务器作为LLMs与The Odds API之间的桥梁,处理认证、数据格式化和错误处理。

要求

  • Python 3.10或更高版本
  • The Odds API密钥(已包含在服务器中)
  • 兼容MCP的客户端(如Claude Desktop等)
  • Matplotlib、NumPy和Pillow用于可视化

安装

  1. 设置Python 3.10或更高版本

    # 使用pyenv(已设置)
    pyenv local 3.10.13
    
  2. 创建并激活虚拟环境

    python -m venv venv
    source venv/bin/activate  # 在Windows上:venv\Scripts\activate
    
  3. 安装依赖项

    pip install "mcp[cli]" httpx
    

使用方法

运行服务器

# 激活虚拟环境
source venv/bin/activate

# 运行服务器
python nba_odds_server.py

自动数据收集

为了构建一个有意义的历史数据库进行趋势分析,请设置自动数据收集:

  1. 在项目目录中创建一个数据收集脚本(odds_collector.py),用于收集和存储赔率数据

  2. 设置cron作业以定期运行此脚本:

# 每天早上7:30收集
30 7 * * * cd /Users/nikhil/Documents/MCP_test && /Users/nikhil/Documents/MCP_test/venv/bin/python odds_collector.py >> /Users/nikhil/Documents/MCP_test/collection_log.txt 2>&1

# 下午3:30收集(比赛日)
30 15 * * * cd /Users/nikhil/Documents/MCP_test && /Users/nikhil/Documents/MCP_test/venv/bin/python odds_collector.py >> /Users/nikhil/Documents/MCP_test/collection_log.txt 2>&1

# 晚上8:30收集(比赛日及赛后)
30 20 * * * cd /Users/nikhil/Documents/MCP_test && /Users/nikhil/Documents/MCP_test/venv/bin/python odds_collector.py >> /Users/nikhil/Documents/MCP_test/collection_log.txt 2>&1
  1. 推荐的收集频率:
    • 每日基础收集(早晨)
    • 比赛日前的收集(下午)
    • 比赛后的市场反应收集(晚上)

配置Claude Desktop

  1. 编辑Claude Desktop配置文件:

    ~/Library/Application Support/Claude/claude_desktop_config.json
    
  2. 添加以下配置:

    {
      "mcpServers": {
        "nba-odds": {
          "command": "/Users/nikhil/Documents/MCP_test/venv/bin/python",
          "args": [
            "/Users/nikhil/Documents/MCP_test/nba_odds_server.py"
          ]
        }
      }
    }
    
  3. 重启Claude Desktop

测试服务器

提问如下问题:

  • “当前NBA总冠军的赔率是多少?”
  • “显示即将进行的NBA比赛”
  • “哪支球队被看好赢得NBA总冠军?”
  • “告诉我今天有哪些NBA比赛”
  • “模拟湖人队和凯尔特人队之间的比赛”

可用工具

服务器提供以下工具:

基本NBA数据工具

  1. get_nba_info() - 提供关于NBA篮球类别的基本信息

  2. get_nba_games(markets, regions) - 获取当前NBA比赛及其赔率

    • 参数:
      • markets: 市场列表(h2h, spreads, totals)
      • regions: 地区列表(us, uk, eu, au)
  3. get_nba_championship_odds() - 获取当前NBA总冠军赔率

  4. get_nba_team_stats(team_name) - 获取特定球队的即将比赛

    • 参数:
      • team_name: NBA球队名称

模拟工具

  1. simulate_nba_game(home_team, away_team) - 使用AI/ML模型模拟NBA比赛

    • 参数:
      • home_team: 主场球队名称
      • away_team: 客场球队名称
  2. simulate_championship_odds() - 使用1000个赛季模拟来模拟NBA总冠军赔率

  3. simulate_season_remainder() - 模拟剩余的NBA赛季,包括季后赛

  4. get_simulation_accuracy() - 获取先前比赛模拟的准确性统计

投注分析工具

  1. get_betting_recommendations(max_recommendations) - 根据赔率变动和历史趋势获取智能投注建议

    • 参数:
      • max_recommendations: 返回的最大建议数量(默认:3)
  2. analyze_team_ats_performance(team_name) - 分析球队的让分表现(ATS)

    • 参数:
      • team_name: 要分析的NBA球队名称
  3. analyze_odds_movement(event_id, days) - 分析特定比赛的赔率变动情况

    • 参数:
      • event_id: 比赛标识符
      • days: 回溯的天数(默认:7)

NBA知识竞赛工具

  1. start_nba_quiz(category, difficulty, length) - 开始新的NBA知识竞赛游戏

    • 参数:
      • category: 问题类别(随机、NBA历史、当前NBA、NBA统计数据、NBA规则、冠军)
      • difficulty: 难度级别(新手、老手、全明星、名人堂、混合)
      • length: 问题数量(默认:5)
  2. answer_quiz_question(quiz_id, answer) - 回答正在进行的知识竞赛中的一个问题

    • 参数:
      • quiz_id: 活动竞赛ID
      • answer: 用户选择的答案
  3. get_daily_nba_question() - 获取每日NBA知识竞赛问题

  4. answer_daily_nba_question(answer) - 回答每日NBA知识竞赛问题

    • 参数:
      • answer: 用户选择的答案
  5. get_nba_quiz_stats() - 获取NBA知识竞赛的表现统计

线路变动分析工具

  1. analyze_reverse_line_movement(days) - 分析从历史赔率数据中得出的反向线路变动模式

    • 参数:
      • days: 要分析的历史数据天数(默认:30)
  2. analyze_sharp_money_action(days, threshold) - 识别可能有大额资金动作的比赛

    • 参数:
      • days: 要分析的天数(默认:30)
      • threshold: 考虑的最小概率变化(默认:3%)
  3. calculate_betting_strategy_roi(movement_type, days) - 计算基于线路变动的投注策略的历史回报率

    • 参数:
      • movement_type: 要分析的变动类型(反向、大额)
      • days: 要分析的天数(默认:90)
  4. create_line_movement_chart(game_id, team_name, days) - 创建显示线路变动对概率影响的图表

    • 参数:
      • game_id: 要分析的具体比赛(使用“帮助”查看可用比赛)
      • team_name: 要筛选的球队名称
      • days: 如果没有具体比赛/球队,则要分析的天数

赔率跟踪与分析工具

  1. analyze_championship_odds_trend(team_name, days) - 分析球队的总冠军赔率随时间的变化

    • 参数:
      • team_name: 要分析的NBA球队名称
      • days: 回溯的天数(默认:30)
  2. get_team_odds_history(team_name, days) - 获取特定球队的历史总冠军赔率数据

    • 参数:
      • team_name: NBA球队名称
      • days: 要检索的历史数据天数(默认:30)
  3. get_odds_tracking_stats() - 获取数据库中跟踪赔率数据的统计信息

可视化工具

  1. generate_team_odds_chart(team_name, days) - 创建显示球队总冠军赔率变动的图表

    • 参数:
      • team_name: 要绘制的NBA球队名称
      • days: 要包含在图表中的天数(默认:30)
  2. generate_teams_comparison_chart(team_names, days) - 创建比较多个球队总冠军赔率的图表

    • 参数:
      • team_names: 要比较的球队名称列表
      • days: 要包含在图表中的天数(默认:30)
  3. generate_game_odds_chart(event_id) - 创建显示特定比赛赔率变动的图表

    • 参数:
      • event_id: 要绘制的比赛/事件ID
  4. generate_bookmaker_comparison_chart(team_name, days) - 创建比较不同博彩公司的赔率的图表

    • 参数:
      • team_name: 要分析的NBA球队名称
      • days: 要包含在图表中的天数(默认:30)

数据存储与可视化

SQLite数据库

服务器使用SQLite存储历史赔率数据,支持趋势分析:

  • 总冠军赔率表:跟踪球队总冠军赔率随时间的变化
  • 比赛赔率表:跟踪个别比赛赔率和线路变动
  • 自动存储:所有API请求的数据都会自动存储到数据库中

可视化系统

服务器包括由Matplotlib驱动的强大可视化系统:

  • 图表目录:所有生成的图表都保存到charts文件夹
  • Base64嵌入:图表作为base64编码的图像返回,以便在LLM响应中显示
  • 图表类型
    • 球队赔率趋势图
    • 多球队对比图
    • 比赛赔率变动图
    • 不同博彩公司对比图

数据分析

系统提供了赔率数据的自动化分析:

  • 趋势检测(改善、下降、稳定)
  • 不同博彩公司差异分析
  • 历史赔率变动模式
  • 显示显著赔率变动的视觉指标

API信息

此服务器使用The Odds API(https://the-odds-api.com/),具有以下端点:

  • GET /sports - 列出所有体育类别
  • GET /sports/{sport_key}/odds - 获取特定体育项目的赔率
  • GET /sports/{sport_key}/events/{event_id}/odds - 获取特定事件的赔率

API密钥已包含在服务器配置中。

故障排除

  • 服务器无法启动:确保已安装Python 3.10+且虚拟环境已激活
  • MCP客户端无法连接:检查配置文件路径和格式
  • API错误:验证API密钥的有效性并检查是否达到速率限制

许可

该项目仅供教育用途。

致谢

  • The Odds API提供体育博彩数据
  • Model Context Protocol (MCP)提供服务器框架