梦幻橄榄球数据服务

一个提供实时NFL球员数据、伤病报告、对阵分析和持久记忆的模型上下文协议服务器,为梦幻体育聊天机器人提供数据支持。

  • by Jovi-Uk
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 Jovi-Uk/fantasy-football-mcp

使用说明

🏈 梦幻足球MCP服务器

一个模型上下文协议服务器,让人工智能代理实时访问NFL球员数据、伤病报告、比赛分析和持久记忆,为我们的Gen AI类项目的梦幻体育聊天机器人提供动力。


这有什么作用

这个MCP服务器是我们梦幻足球聊天机器人的数据骨干。当Dify代理需要回答诸如“我本周应该让Derrick Henry还是Saquon Barkley首发?”之类的问题时,它会调用此服务器暴露的工具来获取实时数据、比较球员并记住用户在不同时段的名单。

服务器暴露 17工具, 3资源,以及 4个提示模板 任何兼容MCP的客户端(如Dify)都可以使用。


建筑

User asks a question
        │
        ▼
  Dify Agent (orchestrator)
        │
        ├──► RAG Knowledge Base (Hannah's docs: rankings, articles, CSVs)
        │
        └──► THIS MCP SERVER (http://your-ip:8000/mcp)
                │
                ├── Data Tools (Sleeper API → live NFL stats)
                │     ff_get_player_stats
                │     ff_get_injury_report  
                │     ff_compare_players
                │     ff_search_players
                │     ff_get_waiver_targets
                │     ff_get_player_trends
                │
                ├── Analysis Tools (reasoning + calculations)
                │     ff_analyze_start_sit
                │     ff_evaluate_trade
                │
                └── Memory Tools (PostgreSQL + pgvector)
                      ff_store_roster
                      ff_get_roster
                      ff_update_roster
                      ff_store_league_settings
                      ff_search_past_advice    ← pgvector semantic search
                      ff_log_interaction       ← stores embeddings

快速入门(我的机器--服务器主机)

先决条件

你需要Docker(用于PostgreSQL+pgvector)和Python 3.10+。

步骤1:启动数据库

cd fantasy-football-mcp
docker compose up -d

这将在端口5432上使用pgvector启动PostgreSQL。数据库架构在首次运行时自动创建。

步骤2:安装Python依赖项

pip install -r requirements.txt

# OPTIONAL but recommended: better semantic memory
pip install sentence-transformers

步骤3:运行服务器

对于本地测试(STDIO传输):

python server.py

对于团队访问(HTTP传输——使用此选项以便Dify可以连接):

python server.py --transport http --port 8000

服务器将记录其启动进度,并在您看到以下内容时做好准备:

🏈 Server ready! Tools, resources, and prompts are available.

对于队友:将Dify连接到此MCP服务器

(Dify Workflow Builder)——如何添加MCP服务器

一旦服务器使用HTTP传输运行,请在Dify中连接它:

  1. 转到您的Dify工作区→ 工具 (或 工具提供商)
  2. 点击 添加工具提供程序 → 选择 主控程序
  3. 输入服务器URL: http://<server-host-ip>:8000/mcp
    • 如果在同一网络上的笔记本电脑上运行:使用我的本地IP(例如。, http://192.168.1.42:8000/mcp)
    • 如果在云服务器上运行:请使用公共IP或域
  4. Dify将自动发现所有17个工具、3个资源和4个提示
  5. 启用您希望代理使用的工具

测试连接

连接后,您可以在Dify的工具测试面板中测试任何工具。尝试:

  • ff_search_players 随着 position: "QB" → 应该返回一份NFL四分卫名单
  • ff_get_injury_report 无参数→ 应该恢复目前联盟范围内的伤病

工具参考

数据工具(只读)

工具 功能 示例使用
ff_get_player_stats 获取冲刺/传球/接球数据 “德里克·亨利上周表现如何?”
ff_get_injury_report 目前的伤病名称 “酋长队谁受伤了?”
ff_compare_players 正面交锋数据比较 “比较亨利和巴克利”
ff_search_players 搜索/筛选玩家数据库 “显示所有孟加拉虎宽接收器”
ff_get_waiver_targets 建议可用的皮卡 “12支球队联盟中豁免的最佳RB”
ff_get_player_trends 每周业绩趋势 “Ja'Marr Chase是否呈上升趋势?”

分析工具(只读)

工具 功能 示例使用
ff_analyze_start_sit 首发/替补推荐 “本周首发亨利还是巴克利?”
ff_evaluate_trade 交易价值分析 “我应该用Chase换Adams吗?”

内存工具(读/写-需要PostgreSQL)

工具 功能 示例使用
ff_store_roster 保存用户的名册 用户共享他们的团队
ff_get_roster 检索存储的排班表 在提供个性化建议之前
ff_update_roster 添加/删除玩家 “我刚刚接了玩家X”
ff_store_league_settings 保存联赛配置 “12支球队PPR联赛”
ff_search_past_advice 搜索过去的对话(pgvector) “你对我的RB说了什么?”
ff_log_interaction 为未来召回提供存储建议 给出建议后

数据源

主要数据源是 轨枕API (https://api.sleeper.app),它是免费的,不需要身份验证。它提供所有NFL球员元数据、每周统计数据、预测和伤病信息。

玩家数据库(约10000多名玩家)在服务器启动时加载到内存中,并在本地缓存以进行离线回退。


项目结构

fantasy-football-mcp/
├── server.py              # Main MCP server — all tools, resources, prompts
├── models.py              # Pydantic input models for tool validation
├── data_providers.py      # Sleeper API integration + data caching
├── memory.py              # pgvector memory manager (roster + semantic search)
├── docker-compose.yml     # PostgreSQL + pgvector infrastructure
├── init_db.sql            # Database schema (auto-runs on first start)
├── requirements.txt       # Python dependencies
├── .env.example           # Environment variable template
└── data/
    └── cache/             # Local cache for offline player data

使用的MCP概念(用于演示)

该项目展示了几个值得强调的MCP功能:

工具:LLM代理可以调用17个可调用函数来获取数据、执行分析和管理内存。每个工具都有Pydantic验证的输入和结构化的响应。

资源:可浏览的数据端点(如REST API),通过URI模板公开球员档案和球队列表。

提示:用于常见幻想分析模式的预构建提示模板。客户端获取这些并将其用作结构化起点。

寿命管理:数据库连接和播放器缓存在启动时初始化一次,并在所有请求之间高效共享。

工具注释:每个工具都声明元数据(只读、破坏性、幂等),以帮助LLM更好地决定何时使用它。

可流式HTTP传输:实现网络访问的生产传输。多个客户端可以同时连接。


故障排除

“内存系统不可用” --PostgreSQL没有运行。从以下内容开始 docker compose up -d.

未找到玩家 --试试全名(例如,“Derrick Henry”而不是“Henry”)。使用 ff_search_players 找到确切的名字。

轨枕API错误 -API可能是有费率限制的。服务器将自动回退到缓存数据。

端口8000上的连接被拒绝 --确保服务器正在运行 --transport http。检查防火墙是否允许端口8000。


使用YAML导出的团队工作流程

为了在团队成员之间共享Dify配置,您可以将Dify应用程序导出为YAML文件(Dify→ 设置→ 出口)。MCP服务器连接URL将位于工具提供程序配置下的YAML中。如果在其他计算机上导入,请确保更新IP地址。