内容
# PropProfessor MCP ── AI 智能决策的利器
<p align="center">
<a href="https://github.com/j17drake/propprofessor-mcp/releases">
<img src="https://img.shields.io/github/v/release/j17drake/propprofessor-mcp?color=44cc11" alt="Release" />
</a>
<a href="https://github.com/j17drake/propprofessor-mcp/actions/workflows/ci.yml">
<img src="https://img.shields.io/github/actions/workflow/status/j17drake/propprofessor-mcp/ci.yml?branch=main&label=ci" alt="CI" />
</a>
<img src="https://img.shields.io/badge/tests-passing-44cc11" alt="Tests" />
<img src="https://img.shields.io/badge/coverage-82%25-44cc11" alt="Coverage" />
<img src="https://img.shields.io/badge/node-18%2B-44cc11" alt="Node" />
<a href="LICENSE">
<img src="https://img.shields.io/badge/license-MIT-blue" alt="License" />
</a>
</p>
PropProfessor MCP 是一款模型上下文协议服务器,让 AI 代理可以查看最优的体育博彩信息。它筛选了 36 家博彩公司,涵盖 10 个联赛,检测协调的锐利动作,呈现蒸汽动作和线路滞后,并解释共识 —— 这样您就可以决定投注内容,而不是被告知。
将其连接到 Claude Desktop、Cursor、Cline、Hermes 或任何 MCP 客户端。需要 [PropProfessor](https://propprofessor.com) 账户。
> **诚实的范围 —— 没有盈利能力声明:** PropProfessor MCP 是一个锐利信号 **发现** 和 **评级** 工具。`tier` / `kaiCall` / `edge` / `screenScore` 是信号质量评级,而不是胜率预测。盈利能力 **未经过验证** —— 尚未发布任何已结算结果的回测。使用它来查找候选投注并自行验证;不要将输出视为保证获胜的系统。排名管道显示 **锐利博彩公司正在做什么** ;投注决策权仍在于您。
## 🚀 概述
您的 AI 代理拥有 30 种工具,可以显示专业投注者使用的相同信号源:
- **筛选和排名** —— 查询 36 家博彩公司的即时赔率,按共识优势和变动排名
- **检测锐利协调** —— Pinnacle、Circa、BookMaker 和 BetOnline 同时移动?这是一个信号
- **解释“原因”** —— 每个投注都有一个易于理解的理由:**变动内容、变动的博彩公司、变动时间范围**
- **自然语言路由** —— 代理调用 `ask("今晚 Fliff 的最佳投注")` 并自动路由到正确的工具
该管道提取赔率,补充线路历史, 按变动质量 + 共识强度排名,分配等级和风险评分,并返回您的代理呈现知情建议所需的一切。投注决策权仍在于人类。
## ⚡ 快速开始(30 秒)
1. **安装:** `npm install -g propprofessor-mcp`(或克隆 + `npm install` 进行开发)
2. **连接您的 MCP 客户端** —— 在下面选择您的客户端:
**Claude Desktop** (`claude_desktop_config.json`):
```json
{
"mcpServers": {
"propprofessor": {
"command": "pp",
"args": ["--mcp"]
}
}
}
```
**Cline** (`cline_mcp_settings.json`):
```json
{
"mcpServers": {
"propprofessor": {
"command": "pp",
"args": ["--mcp"],
"env": {}
}
}
}
```
**Cursor** —— 设置 → 功能 → MCP 服务器 → 添加:
```
Name: propprofessor
Type: command
Command: pp --mcp
```
**Continue.dev** (`~/.continue/config.json`):
```json
{
"experimental": {
"mcpServers": {
"propprofessor": {
"command": "pp",
"args": ["--mcp"]
}
}
}
}
```
**Hermes** (`~/.hermes/config.yaml`):
```yaml
mcp_servers:
propprofessor:
command: pp
args: [--mcp]
```
3. **身份验证(一次性):** `node scripts/pp-login.js` —— 打开浏览器进行 PropProfessor 登录,并为服务器持久化 cookie。
4. **询问您的代理:** _"今晚 Fliff 的最佳投注是什么?"_
就是这样 —— 您的代理现在可以看到 30 种工具。
> **验证您的安装:** `npm run install:verify` 运行非 API 测试套件(53 个测试,无需凭证)。
### CLI —— `pp`
PropProfessor 附带一个快速、独立的 CLI,直接调用处理程序 —— 无需 MCP 服务器。
```bash
npm install -g propprofessor-mcp
pp scan mlb tennis -M supportive -n3
```
11 个命令用于扫描、验证、日志记录和幻想:
| 命令 | 描述 |
| --- | --- |
| `pp scan [leagues...]` | 跨联赛查找投注 |
| `pp scan -M supportive` | 按移动过滤(干净、弹跳、不利) |
| `pp scan --fast` | 快速扫描(5 个最快的联赛) |
| `pp scan -B` | 仅限 BET 判决投注 |
| `pp validate <playId>` | 验证特定投注 |
| `pp game <gameId>` | 获取完整的比赛详情 |
| `pp player <name>` | 球员上下文 + 伤害/风险标志 |
| `pp prices <gameId>` | 比较不同博彩公司的赔率 |
| `pp log <gameId>` | 记录投注 |
| `pp picks` | 最近的投注历史 |
| `pp rank <league>` | 联赛的排名投注 |
| `pp fantasy` | 幻想优化器道具 |
| `pp today` | 今日的比赛 + 待定投注 |
| `pp health` | 认证 + 后端健康检查 |
**MCP 模式:** `pp --mcp` 作为 MCP stdio 服务器运行。将其连接到 Claude Desktop、Cursor、Cline 或任何 MCP 客户端。传递 `--mode full` 以获取完整的 31 种工具表面。
所有命令都支持 `-j`/`--json` 用于管道传输和 `--no-color` 用于 CI/Telegram 输出。
示例输出(按支持移动筛选的扫描):
```
MLB › Moneyline (2)
Houston Astros @ +127 | TIER 1 ● BET
1.9% · clv +4¢ · mv supportive_bouncy · 5 books
Chicago White Sox vs Houston Astros Fri, Jul 24, 6:40 PM
Tennis › Total Games (1)
Under 21.5 @ -104 | TIER 1 ● BET
3.4% · mv supportive_clean · 16 books
Avanesyan vs Oliynykova Fri, Jul 24, 7:00 AM
```
## 🏛 架构
PropProfessor MCP 遵循分层数据管道:
### API 层
- **PropProfessor 后端** —— 实时赔率、线路历史和幻想数据的身份验证 REST API
- **ESPN 集成** —— 网球时间修正和比赛验证的实时比分
- **X / Google 新闻** —— 投注验证的球员上下文(伤害新闻、推文)
### 排名管道(Node.js)
- **提取** —— 从屏幕 API 解析原始赔率数据,展开多博彩公司选择
- **补充** —— 通过后端 API 丰富每行 12 小时的赔率历史(缓存跨调用,5 分钟 TTL)
- **排名** —— 按共识优势(% 优势超过锐利共识)、CLV 代理(开盘 vs 当前线路移动)和联赛特定市场优先级评分
- **等级** —— 根据移动等级(绿色/黄色/红色)× 风险评分(1-10)× 锐利博彩公司确认分配 TIER 1-4,具有滞后以防止波动
- **格式** —— 在三个详细程度输出:`minimal`(普通英语)、`standard`(等级/优势/风险/理由)、`full`(原始移动数据)
### MCP 服务器(stdio)
- **stdio 上的 JSON-RPC** —— 带有 Content-Length 分帧的标准 MCP 传输(可选 NDJSON)
- **30 种工具** —— 有组织地分为情境、分析和研究层级
- **服务器端验证** —— 在服务器上强制执行输入模式,不信任客户端
- **分类错误** —— 认证、后端、传输、验证、内部 —— 每个都有结构化的恢复提示
### 数据流
```mermaid
flowchart LR
subgraph BOOKS["36 家博彩公司"]
B1[Pinnacle]
B2[Circa]
B3[BookMaker]
B4[BetOnline]
B5[NoVigApp]
B6[Fliff]
BN[...30 more]
end
API[PropProfessor API]
subgraph PIPE["排名管道"]
E[提取赔率]
H[补充线路历史]
R[按移动 + 共识排名]
T[等级 + 风险评分]
end
subgraph OUTPUT["30 种 MCP 工具"]
QS[快速筛选]
T[today]
SB[智能投注]
VP[验证投注]
ASK[询问]
OTH[...25 more]
end
CLIENT[您的 AI 代理<br/>Claude / Cursor / Cline / Hermes]
BOOKS --> API --> PIPE --> OUTPUT --> CLIENT
CLIENT -. "您决定投注" .- BOOKS
```
## 🛠 入门指南
### 快速开始
```bash
git clone https://github.com/j17drake/propprofessor-mcp.git
cd propprofessor-mcp
npm install
npm link
pp-query init # 认证 + 验证 + 配置 — 一次完成
```
`pp-query init` 检查 Node 版本,如果需要打开 PropProfessor 登录,运行 `doctor`,并打印可粘贴的 MCP 配置给您的客户端。或者一步一步进行:
```bash
pp-query login # 浏览器登录
pp-query doctor # 验证一切正常
```
需要付费 [PropProfessor](https://propprofessor.com) 账户。就是这样 —— 您已准备好连接您的 AI 代理。
### MCP 客户端设置
将以下内容添加到您的客户端的 MCP 配置中:
```json
{
"mcpServers": {
"propprofessor": {
"command": "node",
"args": ["/path/to/propprofessor-mcp/scripts/propprofessor-mcp-server.js"],
"env": {
"PROPPROFESSOR_MCP_NDJSON": "true",
"AUTH_FILE": "/path/to/.propprofessor/auth.json"
}
}
}
}
```
用实际安装路径替换 `/path/to/`(例如 `/Users/you/projects/propprofessor-mcp`)。支持 Claude Desktop、Cursor、Cline、Zed、Continue.dev、Windsurf 和任何其他基于 stdio 的 MCP 客户端。查看每个客户端的文档,了解 MCP 配置存储位置。
**适用于短期一次性会话:**
```json
{ "command": "npx", "args": ["-y", "propprofessor-mcp"] }
```
开箱即用 —— 无需克隆 git。需要 PropProfessor 账户。
**适用于无头/CI 环境(无 Chrome):**
设置 `PROPPROFESSOR_COOKIES` 环境变量,并使用导出的 JSON 凭证替换您的 PropProfessor cookie:
```json
{
"mcpServers": {
"propprofessor": {
"command": "npx",
"args": ["-y", "propprofessor-mcp"],
"env": {
"PROPPROFESSOR_COOKIES": "[{\"name\":\"__Secure-next-auth.session-token\",\"value\":\"...\",\"domain\":\".propprofessor.com\"}]"
}
}
}
}
```
### CLI 命令
| 命令 | 目的 |
| --- | --- |
| `pp-mcp` | MCP 服务器(stdio)—— 您的 AI 代理连接的对象 |
| `pp-query init` | 一键设置(节点检查 + 认证 + 医生 + 配置) |
| `pp-query login` | PropProfessor 浏览器登录 |
| `pp-query doctor` | 完整的诊断检查 |
### Hermes 代理
如果您使用 [Hermes Agent](https://github.com/NousResearch/hermes-agent):
```bash
make install # 注册 MCP 服务器 + 安装默认配置
```
或手动:将 `propprofessor` 添加到您的 `mcp_servers` 配置文件 `config.yaml` 中。 `get_started` 工具提供按需工作流指导。
### 可选:锐利货币提醒 cron
```bash
make install-cron
```
每小时运行,将 TIER 1 投注送到您的 Telegram 频道。
### CLI 命令
| 命令 | 目的 |
| --- | --- |
| `pp-mcp` | MCP 服务器(stdio)—— 您的 AI 代理连接的对象 |
| `pp-query` | 用于设置、调试和快速一次性查询的 CLI |
| `pp-query login` | PropProfessor 浏览器登录 |
| `pp-query doctor` | 完整的诊断检查 |
## 🎯 自然语言流
代理不需要记住工具名称。调用 `ask` 解析用户的查询,然后调用建议的工具:
```
您: "告诉我今晚 Fliff 的最佳投注"
代理: ask({ query: "今晚 Fliff 的最佳投注" })
→ { parsed: { book: "Fliff" }, suggestedTool: "quick_screen", suggestedArgs: { books: ["Fliff"] } }
代理: quick_screen({ books: ["Fliff"] })
→ [带有赔率、优势、等级、风险、理由的排名投注 - 全部来自 Fliff]
```
| 您说 | `ask` 调用 | 返回 |
| ------------------------------------ | ------------------------------------------------------ | --------------------------------- |
| "Novig 的最佳投注" | `quick_screen(books=["NovigApp"])` | 可玩投注与玩家上下文 |
| "今天我应该投注什么" | `quick_screen(mode="recommended")` | 主要联赛的 TIER 1 和 TIER 2 |
| "Tatum 超过 29.5 分" | `player_context(player="Tatum", sport="NBA")` | 伤害/新闻风险检查 |
| "显示我 MLB 锐利投注" | `quick_screen(leagues=["MLB"], mode="sharp")` | 多锐利共识投注 |
| "线路商店凯尔特人 ML" | `find_best_price(league="NBA", market="Moneyline", …)` | 36 家博彩公司的最佳价格 |
| "验证那笔勇士队投注" | `validate_play(league="NBA", gameId="…", …)` | BET/CONSIDER/PASS 判决 |
## 📊 可用工具
### 快速情境检查
| 工具 | 它做什么 |
| --- | --------------------------------------------------------------------------------------- |
| `ask` | 将自然语言解析为正确的工具 + 参数,然后执行它(一次性答案) |
| `today` | 一次性每日简报:锐利的比赛 + 您的待定投注 + 最近的统计数据 |
| `get_started` | 为休闲/中级/高级用户返回推荐的工作流程 |
| `get_market_registry` | 体育市场的可用市场列表,带有每家博彩公司的市场名称(例如。 Soccer → Draw No Bet) |
| `quick_screen` | 具有锐利共识 + 玩家上下文的任何博彩公司的最佳投注 |
| `smart_bet` | 一次性:投注详情 + validate_play 判决 + 最佳价格 + 投注 |
| `player_context` | 特定球员的伤害/可用性检查 |
| `validate_play` | 一次性判决:重新获取赔率,检查伤害新闻,返回 BET/CONSIDER/PASS + playId + 漂移检测 |
| `mlb_game_context` | 比赛开始前的投手、公园因素、每小时天气、MLB 比赛的阵容锁定 |
| `find_best_price` | 线上商店跨所有博彩公司的最佳执行价格 |
| `health_status` | 认证新鲜度和端点连接性 |
### 更深层次的信号分析
| 工具 | 它做什么 |
| --- | --------------------------------------------------------------------------------------- |
| `sharp_consensus` | 多窗口(1h-48h)锐利动作 - 动作是否持续? |
| `screen_ranked` | 一个(联赛,市场)对的完整排名数据,具有共识和移动元数据 |
| `all_slates` | 多个联赛的合并排名列表 |
| `league_presets` | 体育特定排名权重和锐利博彩公司参考集 |
| `get_alerts` | 自上次检查的线路移动和蒸汽动作提醒 |
| `ev_candidates` | 快速 +EV 发现 - 在 `/screen` 后验证 |
| `ufc_card` | 带有官方投注、最佳外观和通行证笔记的 UFC 比赛短名单 |
| `smart_money` | 锐利动作 $ 体积 + 每边赔率范围(隐藏的 +EV 馈送) |
### 研究 & 投注管理
| 工具 | 它做什么 |
| --- | ------------------------------------------------------------------------------- |
| `get_play_details` | 特定游戏 ID 的线路历史 |
| `staking_plan` | 分数 Kelly 大小(TIER 1: 2%, TIER 2: 1% 银行) |
| `fantasy_optimizer` | DFS 幻想投注(PrizePicks, Underdog - 幻想优化器订阅) |
| `log_pick` / `resolve_pick` | 跟踪您自己的投注结果 |
| `place_bet` | 验证 + 记录投注,返回结算的 pickId |
| `get_pick_history` / `get_pick_stats` | 查看已记录的投注和胜率 / P&L |
| `manage_hidden_bets` | 隐藏/显示幻想表格上的投注 |
|.clear_score_timeline` | 重置评分轨迹以进行新的会话 |
(等等)
### 输出调优
每个工具都接受以下参数:
| 参数名 | 取值 | 功能 |
| ----------------- | --------------------------- | ---------------------------------------------------------------------- |
| `verbosity` | `minimal` `standard` `full` | 控制解释深度和字段输出 |
| `compact` | `true` / `false` | 删除行历史和调试负载 — 减少约 90% 的响应大小 |
| `fields` | `["game", "edge", "tier"]` | 仅返回每行指定的字段 |
`quick_screen` 额外接受以下参数:
| 参数名 | 取值 | 功能 |
| ---------------- | ----------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
| `cardWindow` | `today` `next` `all` | 日期筛选。`today` = 今日的对阵加上任何次日的比赛(在响应中标记为 `nextDayMerged`)。`next` = 仅明日比赛。`all` = 所有即将到来的比赛,无日期筛选。默认为 `today`。 |
| `maxPlaysPerGame`| `1`–`50` (默认 `2`) | 在 `minimal` verbosity 中每个游戏显示的最大比赛数(按 `screenScore` 降序排列)。提高它(例如 `10`)以在不进行第二次调用的情况下完整覆盖一个游戏。`standard`/`full` verbosity 始终返回每个候选游戏的所有比赛,无论此值如何。 |
| `parseable` | `true`/`false` (默认 `true`) | 当为 `true` 时,`minimal` verbosity 包括一个结构化的 `plays` 数组以及摘要 — 代理同时获得两者。设为 `false` 以仅返回摘要。 |
| `includeResearch`| `true`/`false` (默认 `true`) | 对每个返回的比赛运行玩家上下文研究,并将 `riskFlag` / `riskSummary` / `topTweet` 附加到 `research` 数组中。研究仅限于最终返回的比赛(在 tier/kaiCall 筛选后),并按游戏去重,因此 `research` 数组始终与您看到的比赛一一对应 — 无完整对阵负载膨胀。传递 `false` 以禁用。 |
| `researchLimit` | `1`–`50` (默认 `50`) | 对多少个最终比赛运行研究。限制大型扫描的负载大小。 |
> **默认启用玩家研究** 在 `quick_screen` 中(传递 `includeResearch: false` 以禁用)。它仅限于最终返回的比赛,并按游戏去重,因此 `research` 始终与您获得的比赛一一对应。在大规模无过滤扫描中,降低 `researchLimit` 或使用 `lite` 以避免响应接近传输上限。
> **`cardWindow`诚实性:** 当 `today` 生效并且次日比赛行合并时,响应报告 `cardWindow: "today"`(不是明天的日期)以及 `nextDayMerged: true` 和 `nextDayDate`。早期版本错误地将此标记为明日 — 该错误已修复。
> **层级一致性:** 从 2.8.x 开始,每个 MCP screen 调用(`quick_screen`、`screen_ranked`、`validate_play`)开始时清除 `tierCache`。因此,给定比赛的层级在调用中稳定,并且每次调用都重新计算 — 不会因过时的滞后状态而跨调用漂移。
> **`verbosity: minimal` 返回一个纯英文摘要字符串以及结构化的 `plays` 数组** — 代理同时获得人类可读文本和机器可解析数据。在数组中的每个比赛包括 `league`、`market`、`game`、`selection`、`odds`、`confidenceTier`、`edge`、`startCST`、`movementDisposition` 和 `screenScore`。
### 工具界面模式
在服务器启动时设置 `PROPPROFESSOR_MCP_MODE` 以控制代理在 `tools/list` 上看到的工具数量:
| 模式 | 默认 | 暴露的工具 | 最适合 |
| ------ | ------- | ------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| `lite` | ✅ 是 | 14 | **推荐大多数用户。** 涵盖完整的工作流程(发现 → 深入 → 验证 → 跟踪),而不会使工具目录不堪重负。 |
| `full` | 否 | 30 | 高级用户 — 每个发现、筛选、研究和管理工具。更多工具,但代理需要处理的噪音也更多。 |
Lite 模式暴露:`ask`、`smart_bet`、`quick_screen`、`today`、`find_best_price`、`validate_play`、`get_play_details`、`player_context`、`log_pick`、`get_pick_history`、`resolve_pick`、`get_market_registry`、`place_bet`、`sharp_alerts`。
`tools/list` 响应始终包含一个 `_meta` 块,以便代理可以知道哪个模式生效:
```json
{
"tools": [...],
"_meta": { "mode": "full", "toolCount": 29, "liteToolCount": 13, "fullToolCount": 29 }
}
```
### 工具类别
每个工具都有一个 `category` 字段,按用途对其进行分组 — 代理可以使用此字段对界面进行心理分类,而不是阅读 29 个单独的描述:
| 类别 | 计数 | 用途 | 工具 |
| ------------ | ----- | ------------------------------------------------ | ----------------------------------------------------------------------------------------------------------- |
| `discovery` | 6 | 查找比赛(侦察、多联赛、DFS、+EV) | `all_slates`、`ask`、`ev_candidates`、`fantasy_optimizer`、`get_market_registry`、`sharp_consensus` |
| `screen` | 5 | 为目标投注商评分/排名比赛 | `quick_screen`、`screen_ranked`、`smart_bet`、`staking_plan`、`ufc_card` |
| `drill_down` | 3 | 深入研究特定比赛 | `find_best_price`、`get_play_details`、`validate_play` |
| `research` | 3 | 上下文数据(球员新闻、比赛天气、警报) | `get_alerts`、`mlb_game_context`、`player_context` |
| `tracking` | 4 | 个人投注日志 | `get_pick_history`、`get_pick_stats`、`log_pick`、`resolve_pick` |
| `admin` | 2 | 记账(缓存、隐藏投注) | `clear_score_timeline`、`manage_hidden_bets` |
| `meta` | 3 | 服务器信息/工作流指南 | `get_started`、`health_status`、`league_presets` |
### 规范 vs 废弃的参数名称
少数参数接受干净的规范名称和遗留别名 — 现有的每个调用站点都保持有效,新代码可以使用更干净的名称:
| 规范(推荐) | 废弃别名 | 哪里 |
| ------------------ | ----------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- |
| `live` | `is_live` | 13 个工具 — `is_live` 在 MCP 界面上仅为 snake_case,但上游后端仍在电线上使用 `is_live` |
| `gameIds` | `game_ids` | 仅 `get_play_details` |
| `targetBooks` | `book`、`books`、`targetBook`、`targetBooksCsv` | `quick_screen` — 服务层的 `resolveTargetBooks()` 接受所有 5 个名称 |
已弃用的别名在每个模式的 `description` 字段中记录,并会在调度时规范为规范键。现有调用者无需更改代码。
## 🧪 排名工作原理
该流程分为 5 步对每个比赛进行评级:
1. **比赛等级** — 绿色(所有投注商对齐)、黄色(一些信号,一些不)、红色(不利)
2. **风险评分**(1–10)— 加权自比赛质量、共识计数、CLV 强度、执行质量和新鲜度
3. **层级分配** — 查找表:绿色 + 低风险 → 层级 1,绿色-黄色 + 中等 → 层级 2,黄色 → 层级 3,红色 → 层级 4
4. **滞后效应** — 比赛不会因小幅赔率变化而在层级 1 和层级 3 之间波动;层级轨迹趋于平稳
5. **锐利交叉参考** — 独立于目标投注商的移动验证非目标锐利投注商
**层级系统:**
| 层级 | 标签 | 含义 | 投注建议 |
| ---------- | ----------- | ------------------------------------------------------------- | ------------------ |
| **层级 1** | 锁定 | 绿色比赛,风险 1–3,投注建议。所有信号对齐。 | 2% 的 bankroll |
| **层级 2** | 价值 | 黄绿比赛,风险 3–5,投注或考虑。稳妥比赛。 | 1% 的 bankroll |
| **层级 3** | 投机 | 黄色比赛,风险 5–7,通常考虑。 | 跳过或 0.25% 最大 |
| **层级 4** | 避免 | 红色比赛,风险 7+,拒绝建议。不要投注。 | 0% — 无例外 |
完整的流程、权重表和层级分配查找表在 [docs/METHODOLOGY.md](docs/METHODOLOGY.md) 中。 [docs/BACKTESTING.md](docs/BACKTESTING.md) 中的回测结果。
## 🔌 集成
在 [快速入门](#quick-start) 中查看 Hermes 代理设置。MCP 是自我文档化的 — 代理调用 `get_started` 以发现正确的工作流程。
### Discord / Telegram 警报
[Positive EV Command Center](https://github.com/j17drake/positive-ev-command-center) 是一个配套项目,它监视 PropProfessor 的高 EV 滑动和比赛,然后实时将它们推送到 Discord 和 Telegram。它使用相同的身份验证会话和 API 客户端。
### 命令行界面
`pp-query` 是一个独立的命令行界面,用于进行一次性查询,无需 MCP 客户端:
```bash
pp-query screen --league NBA --market Moneyline
pp-query recommended --leagues NBA,MLB
pp-query login
pp-query doctor
```
## 📈 回测
**TL;DR:** 基础设施已就绪。实际结果数据尚未积累。
两种验证信号的方法:
**1. 合成引擎验证** — 运行生成的场景(锐利移动、稳定无边缘、不利)通过整个流程以确认层级系统实际上区分质量:
```bash
node scripts/backtest-synthetic.js
```
**2. 真实结果回测** — 基于快照,因为 PropProfessor API 不提供历史结算结果。每天拍摄一次比赛前赔率快照,然后在比赛结算后解析结果:
```bash
# 捕获今日推荐比赛
node scripts/daily-snapshot.js
# 游戏结算后,通过 CSV 应用胜/负/平
node scripts/resolve-outcomes.js --csv results.csv
# 从已解析的数据中计算 P&L、ROI、Sharpe、最大回撤
node scripts/backtest.js --metrics data/snapshots.jsonl
```
流程(`daily-snapshot.js` → 游戏结算 → `resolve-outcomes.js` → `backtest.js --metrics`)已构建和测试(8 个流程测试,0 个失败)。缺少的内容:**真实结算结果数据**。合成层级验证运行显示 **51.4% 的层级 1 命中率,涵盖 N=296 个模拟样本** — 这些验证排名引擎,它们 **不** 证明盈利能力。
> **诚实:** 层级/kaiCall/边缘/screenScore 是信号质量评级,而不是胜率预测。盈利能力 **未证明** — 尚未发布任何结算结果回测。该系统显示投注商正在做什么;它不附带历史结果馈送。不要信任您无法追踪到结算投注的胜率。参见 [docs/BACKTESTING.md](docs/BACKTESTING.md)。
## ❓ 常见问题
**这会告诉我该怎么投注吗?** 不,它显示了投注商正在做什么。投注决定权归您所有。
**我需要 PropProfessor 账户吗?** 是的。实时数据需要 [propprofessor.com](https://propprofessor.com) 的付费订阅。
**它涵盖哪些投注商?** 10 个联赛中的 36 家体育投注商。锐利交叉参考:Pinnacle、Circa、BookMaker、BetOnline。
**它是免费的吗?** 代码是 MIT 许可的。数据需要 PropProfessor 的付费订阅。没有 MCP 自身的付费层级。
**我可以在没有 MCP 客户端的情况下运行它吗?** 是的 — `pp doctor` 是一个独立的命令行界面。
**如果我发现一个错误怎么办?** 先运行 `pp doctor`,然后 [提出问题](https://github.com/j17drake/propprofessor-mcp/issues)。
## ⭐ 支持
这是免费的、MIT 许可的软件。如果它节省了您的时间或为您赚取了钱:
- ⭐ 给仓库加星 — 帮助其他人发现它
- 🐛 [提出问题](https://github.com/j17drake/propprofessor-mcp/issues) 时发现错误
- 💸 [在 GitHub 上赞助](https://github.com/sponsors/j17drake) — 资助持续开发
无付费层级。无增值服务。整个代码库都是开放的,优先级是为使用它的人们使其变得更好。
## 🔧 维护人员
```bash
npm test # 1396 个测试,0 个失败
npm run test:coverage # ~82% 语句
npm run lint # 清洁
npm run format:check # 清洁(npm run format 修复)
npm run check:version # 验证 package.json ↔ CHANGELOG
npm run smoke:live # 端到端实时烟雾测试(需要 auth.json)
```
发布:推送 `v*` 标签 → CI 在 Node 20 + 22 上运行 lint + 测试 → 自动创建 GitHub 发布。
### 文档索引
- [快速入门](README.md#quick-start) — 安装、身份验证、MCP 客户端配置、故障排除
- [身份验证和会话管理](README.md#mcp-client-setup) — 身份验证流程、会话管理
- [命令行界面参考](README.md#cli--pp) — `pp` 命令参考
- [CONFIG.md](CONFIG.md) — 环境变量、投注商配置
- [CONTRIBUTING.md](CONTRIBUTING.md) — 如何添加工具
- [MAINTAINERS.md](MAINTAINERS.md) — 发布流程
- [docs/METHODOLOGY.md](docs/METHODOLOGY.md) — 完整的排名方法论
- [docs/BACKTESTING.md](docs/BACKTESTING.md) — 层级验证
- [docs/agent-guide.md](docs/agent-guide.md) — 每个 AI 代理需要的 5 种模式
- [docs/MARKET-BOOK-AVAILABILITY.md](docs/MARKET-BOOK-AVAILABILITY.md) — 投注商/市场矩阵
- [docs/AGENT_PROMPT.md](docs/AGENT_PROMPT.md) — 代理系统提示
- [docs/RELEASES.md](docs/RELEASES.md) — 完整的发布历史
## 📝 许可证
[MIT](LICENSE)。PropProfessor 是一项付费服务;此 MCP 是由 [j17drake](https://github.com/j17drake) 构建的非官方客户端,与 PropProfessor 无关。
MCP 配置
以下是此 MCP Server 的配置信息,可直接复制到 Cursor 或其他 MCP 客户端中使用。
mcp.json
连接信息
猜你喜欢
暂无推荐服务器