拳击智能分析平台

一个集成了LangChain和LangGraph的多智能体系统,提供拳击数据分析、预测模型、实时赔率整合和社交媒体情感分析的综合平台。

  • by charlottehulseman
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 charlottehulseman/mcp-orchestrator

使用说明

LangChain MCP集成展示

将模型上下文协议(MCP)服务器与LangChain和LangGraph集成以实现智能代理编排的生产就绪演示。

现场演示

已部署的应用程序: https://boxonomics.up.railway.app/

尝试以下查询:

  • “告诉我泰森·弗瑞的职业生涯轨迹”
  • “使用共同对手比较Canelo Alvarez与Dmitry Bivol”
  • “特伦斯·克劳福德在冠军争夺战中表现更好吗?”

概述

该项目演示了如何构建 多智能体系统 使用:

  • 5台定制MCP服务器,支持stdio传输
  • 具有职业轨迹和预测模型的高级分析
  • 用于智能工具选择的LangGraph编排
  • 生产级模式:错误处理、重试、监控
  • LangSmith追踪的完全可观测性

是什么让这个独一无二

该项目的特点是 拳击智能平台 它提供:

  • 拳击分析 -战斗机统计分析、预测、职业生涯时间表
  • 高级预测 -职业轨迹分析、常见对手比较、冠军争夺表现
  • 投注赔率整合 -实时赔率分析和价值识别
  • 新闻聚合 -媒体报道和炒作跟踪
  • 社会情绪 -Reddit社区分析

这种组合表明:

  • 领域专业知识集成
  • 多个专用MCP服务器协同工作
  • 跨不同来源的真实世界数据合成
  • 生产就绪的错误处理和可观察性
  • 使用历史战斗数据的高级预测分析

快速开始

# Clone repository
git clone https://github.com/yourusername/mcp-orchestrator
cd mcp-orchestrator

# Install dependencies
pip install -r requirements.txt

# Set up environment variables
cp .env.example .env
# Edit .env with your API keys:
# - ANTHROPIC_API_KEY (required)
# - ODDS_API_KEY (optional)
# - NEWS_API_KEY (optional)
# - REDDIT_CLIENT_ID, REDDIT_CLIENT_SECRET (optional)

# Initialize database
python scripts/init_boxing_db.py

# Run the application
streamlit run frontend/app.py

建筑

MCP服务器设计

所有服务器都使用stdio传输进行可靠、低延迟的通信。每台服务器都可以独立部署并隔离故障。

拳击分析服务器(增强版)

提供全面的拳击数据和统计分析,具有先进的预测能力。

核心工具:

  • get_fighter_stats(name) -完整的战士档案,包括记录、KO率、头衔、身体统计数据
  • compare_fighters(fighter1, fighter2) -具有预测结果的直接统计分析
  • search_fighters(query, weight_class, active_only) -根据标准查找战斗机
  • fighter_career_timeline(name) -具有里程碑和逐年统计数据的职业发展
  • upcoming_fights(date_range, weight_class) -预定比赛

高级预测工具:

  • analyze_career_trajectory(name, window) -滚动窗口分析,以确定战斗机是在改进、下降还是处于峰值。使用胜率、KO率和对手质量的5倍滚动平均值
  • compare_common_opponents(fighter1, fighter2) -找到共同的对手并比较表现。当战斗机没有面对面时,间接匹配分析至关重要
  • analyze_title_fight_performance(name) -分析锦标赛与常规比赛的表现。显示战士是否在重要时刻“挺身而出”

数据来源: 自定义SQLite数据库,包括:

  • 100多名拥有完整职业生涯的战士
  • 500多场历史战役,详细结果
  • 带有辩护计数的头衔记录
  • 身体状况(伸展、身高、站姿)
  • 复杂查询的标准化模式

预测方法:

  • 用于趋势检测的滚动窗口分析
  • 常见对手传递性比较
  • 冠军争夺战与非冠军表现指标
  • 统计置信度评分

2.投注赔率服务器

实时投注赔率和价值分析。

工具:

  • get_fight_odds(fighter1, fighter2) -来自多家博彩公司的当前投注线
  • analyze_betting_value(fighter, odds) -基于统计分析的价值赌注识别
  • odds_history(fight_id) -历史赔率变动和排队购物

数据来源: 赔率API与实况体彩数据的集成

3.战斗新闻服务器

媒体报道和炒作分析。

工具:

  • get_latest_news(query, days) -最近的拳击新闻文章
  • analyze_media_hype(fighter) -媒体关注度指标和情绪
  • upcoming_fight_coverage(date_range) -事件覆盖率分析

数据来源: 新闻API与各大体育网点的整合

4.Reddit社交服务器

社区情绪和讨论分析。

工具:

  • search_reddit_posts(query, subreddit, limit) -查找相关讨论
  • analyze_fighter_sentiment(fighter) -社区意见分析
  • trending_topics(subreddit) -当前拳击界的兴趣

数据来源: Reddit API(PRAW)以r/boxing为重点

LangGraph编排

编排层基于以下因素智能地将查询路由到适当的MCP服务器:

  • 查询意图分类
  • 所需数据来源(历史数据、实时赔率、社会情绪)
  • 服务器健康和性能指标
  • 来自多个来源的结果综合
  • 预测性与描述性查询检测

查询路由示例:

  • “Tyson Fury的职业生涯趋势如何?”→ 拳击分析(职业轨迹工具)
  • “谁在对阵普通对手时表现更好:Fury vs Usyk?”→ 拳击分析(常用对手工具)
  • “卡内洛在冠军争夺战中表现更好吗?”→ 拳击分析(标题性能工具)
  • “几率有多大,有价值吗?”→ 拳击分析+投注赔率服务器
  • “社区对这场比赛有什么看法?”→ Reddit社交+拳击分析服务器

生产特点

错误处理

  • 针对瞬态故障的指数回退重试逻辑
  • 用于持续故障服务的断路器
  • 缓存响应的优雅降级
  • 具有可操作上下文的全面错误消息
  • 具有自动恢复功能的数据库连接池

可观测性

  • 所有代理行为的完整LangSmith追踪
  • 每个工具的性能指标和延迟跟踪
  • 用于调试和监控的结构化日志记录
  • 请求/响应有效载荷检查
  • 查询模式分析

韧性

  • 每个工具和全局超时管理
  • 具有回退功能的自动速率限制处理
  • 连接池和重试逻辑
  • 针对昂贵操作的缓存优先策略
  • API不可用时回退到缓存预测

查询示例

# Simple fighter lookup
"Tell me about Tyson Fury's boxing record"

# Head-to-head comparison
"Compare Tyson Fury vs Oleksandr Usyk statistically. Who has the advantage?"

# Career trajectory analysis (Advanced)
"Is Tyson Fury improving or declining? Analyze his recent career trajectory"

# Common opponent comparison (Advanced)
"Compare Fury and Usyk's performance against fighters they've both faced"

# Title fight performance (Advanced)
"Does Canelo Alvarez perform better in championship fights vs regular fights?"

# Multi-source analysis
"What are the betting odds for upcoming heavyweight fights and where's the best value?"

# Community sentiment
"What is the boxing community saying about Canelo Alvarez?"

# Complex synthesis
"Analyze Fury's career trajectory, compare it to betting odds for his next fight, and tell me if the odds reflect his current form"

项目结构

mcp-orchestrator/
├── frontend/
│   ├── app.py                      # Streamlit interface
│   └── assets/                     # UI assets
├── mcp_servers/
│   ├── boxing_data.py              # Core analytics server
│   ├── boxing_prediction.py        # Advanced prediction tools
│   ├── boxing_odds.py              # Betting server
│   ├── boxing_news.py              # News server
│   └── reddit.py                   # Social server
├── data/
│   └── boxing_data.db              # Fighter database (SQLite)
├── observability/
│   └── monitoring.py               # LangSmith integration
├── requirements.txt                # Python dependencies
├── start.sh                        # Railway start script
├── nixpacks.toml                   # Python version config
└── railway.json                    # Railway deployment config

部署

铁路部署

此应用程序针对铁路部署进行了优化,并提供了完整的MCP服务器支持。

# Add Railway config files
cp railway.json .
cp nixpacks.toml .
cp start.sh .
chmod +x start.sh

# Commit and push
git add .
git commit -m "Add Railway deployment config"
git push

# Deploy on Railway
# 1. Go to railway.app
# 2. New Project → Deploy from GitHub
# 3. Select repository
# 4. Add environment variables
# 5. Generate domain

所需的环境变量:

ANTHROPIC_API_KEY=sk-ant-api03-xxxxx
ODDS_API_KEY=xxxxx (optional)
NEWS_API_KEY=xxxxx (optional)
REDDIT_CLIENT_ID=xxxxx (optional)
REDDIT_CLIENT_SECRET=xxxxx (optional)
REDDIT_USER_AGENT=boxonomics_v1 (optional)

地方发展

# Run with hot reload
streamlit run frontend/app.py --server.runOnSave=true

# Test individual MCP servers
python mcp_servers/boxing_data.py

# Test advanced prediction tools
python mcp_servers/boxing_prediction.py

# View logs
tail -f logs/app.log

技术亮点

MCP服务器实现

每台服务器都通过以下方式实现MCP协议:

  • 异步/等待非阻塞I/O
  • 使用JSON模式的类型安全工具定义
  • 全面的错误处理和记录
  • 关机时的资源清理
  • 用于分析服务器的SQLite连接池

高级预测算法

职业轨迹分析:

  • 滚动窗口分析(默认5英尺窗口)
  • 追踪胜率、KO率、对手质量随时间的变化
  • 识别改善、下降或稳定的趋势
  • 提供趋势强度(强/中/一致)
  • 职业阶段划分(早期/中期/晚期)

常见对手比较:

  • 查找战士之间的所有共享对手
  • 比较结果、方法和完成的轮次
  • 每次比较得分(赢>输,KO>决定)
  • 通过信心评分提供整体优势
  • 间接匹配预测的关键

标题战斗表演:

  • 将锦标赛与常规比赛分开
  • 计算单独的获胜率和KO率
  • 确定战士是否“应战”
  • 追踪总防守和所有权
  • 识别冠军血统

LangChain集成

用途 langchain-mcp-adapters 为了实现无缝集成:

  • 从MCP服务器自动发现工具
  • 原生LangChain工具格式转换
  • 支持多个并发服务器连接
  • 强大的会话管理
  • 有条件的工具加载(仅当预测模块可用时才使用高级工具)

数据源

  • 拳击数据库: 具有规范化模式的SQLite
    • 战士表:100多名具有身体特征的战士
    • 战斗表:500多场历史战斗及其结果
    • 冠军表:有防守的冠军记录
  • 外部API: 赔率API,新闻API,Reddit API
  • 缓存: 用于重复查询的内存缓存
  • 更新: 战斗结果手动更新流程

性能指标

  • 平均响应时间: 1.2秒用于单工具查询
  • 多工具查询: 平均2.8秒(并行执行)
  • 高级分析: 0.8秒用于轨迹分析(数据库查询+计算)
  • 常见对手分析: 平均1.5秒(复杂的JOIN查询)
  • 缓存命中率: 75%用于重复查询
  • 工具成功率: 99.2%(重试)

高级分析示例

职业轨迹输出

{
  "fighter": "Tyson Fury",
  "current_trajectory": {
    "trend": "Stable",
    "trend_strength": "Consistent",
    "recent_win_rate": 85.0,
    "change_from_early_career": -2.3
  },
  "career_phases": {
    "early_career": {"wins": 12, "win_rate": 1.0},
    "mid_career": {"wins": 10, "win_rate": 0.83},
    "late_career": {"wins": 8, "win_rate": 0.88}
  }
}

常见对手输出

{
  "fighter1": "Tyson Fury",
  "fighter2": "Deontay Wilder",
  "common_opponents_count": 3,
  "score": {
    "Tyson Fury": 2.5,
    "Deontay Wilder": 0.5
  },
  "overall_advantage": "Tyson Fury",
  "confidence": 0.8
}

发展路线图

完成

  • 核心MCP服务器实现
  • 高级预测分析模块
  • LangGraph编排层
  • 带有现代UI的流线型前端
  • 生产部署配置
  • LangSmith可观测性积分

进行中

  • 用于预测战斗结果的机器学习模型
  • 历史作战数据可视化仪表板
  • WebSocket支持实时赔率更新
  • 使用Redis增强缓存

计划的

  • 用于外部集成的GraphQL API层
  • 移动响应界面改进
  • 多语言支持(西班牙语、葡萄牙语)
  • 其他体育领域(综合格斗、跆拳道)
  • 来自实时来源的自动数据库更新

测试

# Run all tests
pytest

# Test individual server
python mcp_servers/boxing_data.py

# Test advanced predictions
python mcp_servers/boxing_prediction.py

# Test with sample queries
python cli.py test

许可证

MIT许可证-有关详细信息,请参阅许可证文件

致谢

  • MCP适配器库的LangChain团队
  • Claude API的无烟煤
  • 拳击数据的TheSportsDB
  • 投注信息的赔率API
  • 社交数据Reddit API(PRAW)

研究与方法

高级预测算法基于:

  • 滚动窗口统计分析(时间序列)
  • 格斗运动中的传递性(常见对手)
  • 表现心理学(冠军争夺压力效应)
  • 预测的统计置信区间

学术参考文献:

  • 职业轨迹的体育分析研究
  • 适用于拳击的Elo评级系统
  • 剑术原理在格斗运动中的应用

特征:

  • 生产就绪的MCP服务器开发
  • 高级领域特定分析实施
  • 使用LangGraph进行多代理编排
  • 不同数据源的真实集成
  • 部署和可观察性最佳实践
  • 生产系统中的复杂预测建模