kaist-beast-baseball-mcp
Collects baseball league data from gameone.kr and enables Claude Desktop to perform team analysis, lineup recommendations, and opponent strategy through natural language.
README
kaist-beast-mcp — Amateur Baseball Scouting & Management (gameone x Claude)
An MCP server that auto-collects our league's data from gameone.kr and lets you analyze your team, build lineups, and scout opponents in natural language inside Claude.
The server only collects and organizes data; Claude does the analysis, so no extra API key is needed.
- League: Science League, group B (
lig_idx=85) - Our team: The Beasts (
club_idx=22098)
How it works
gameone (login) --crawl--> parse --> SQLite
|
MCP server (22 data/management tools)
| stdio (Desktop) / HTTP (claude.ai)
Claude <- ask in natural language
This program collects/organizes data; Claude (Desktop or web) performs the reasoning (lineups, strategy).
Requirements
- macOS or Windows with a terminal and git installed (macOS: git is offered by Xcode Command Line Tools on first use; Windows: install "Git for Windows").
- Claude — the Claude Desktop app (recommended), or claude.ai web (Pro/Max/Team/Enterprise).
- Python 3.10+ — you do not need to install it yourself; the
uvstep below fetches 3.12. - Your own gameone account that is a registered league member of the Science League (records are invisible to non-members; each person uses their own account).
You do not need any LLM/Anthropic API key — Claude itself does the analysis.
Install
1) Clone
git clone https://github.com/mw-jeong/kaist-beast-baseball-mcp.git
cd kaist-beast-baseball-mcp
2) Virtual env + dependencies (uv recommended)
Install uv if you don't have it: macOS/Linux curl -LsSf https://astral.sh/uv/install.sh | sh ·
Windows (PowerShell) irm https://astral.sh/uv/install.ps1 | iex
After installing uv, open a new terminal so the uv command is found. Then create the venv,
activate it, and install. Once activated (prompt shows (.venv)), every command in this guide is
just python ... — identical on macOS and Windows.
macOS / Linux:
uv venv --python 3.12 .venv
source .venv/bin/activate
uv pip install -r requirements.txt
Windows (PowerShell):
uv venv --python 3.12 .venv
# If you see "running scripts is disabled", run this once in this window first:
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
.\.venv\Scripts\Activate.ps1
uv pip install -r requirements.txt
uv venv --python 3.12 downloads Python 3.12 automatically if needed. Each new terminal = re-activate
(re-run the source/Activate.ps1 line). If you'd rather not activate, prefix commands with the venv
python instead: macOS .venv/bin/python ..., Windows .venv\Scripts\python.exe ....
<details><summary>Without uv (Python 3.10+ already installed)</summary>
- macOS/Linux:
python3.12 -m venv .venv && source .venv/bin/activate && pip install -r requirements.txt - Windows:
py -3.12 -m venv .venvthen.\.venv\Scripts\Activate.ps1thenpip install -r requirements.txt</details>
3) gameone account (.env)
cp .env.example .env # Windows: copy .env.example .env
Edit .env and fill in your gameone id/password:
GAMEONE_USER_ID=your_id
GAMEONE_PASSWD=your_password
.env is gitignored and never committed. Do not share it — each person uses their own account.
4) Verify login
With the venv activated, run (same command on macOS and Windows):
python -m beast.cli login-test
You should see "✓ 로그인 성공". If it fails, fix .env (id/password) before continuing — the
connect step won't work until login succeeds. Run all commands from the project folder.
Connect to Claude
Option A — Claude Desktop (local, simplest, recommended)
python -m beast.cli setup-desktop
This auto-registers the server in your Claude Desktop config (handles macOS and Windows paths, using this venv's Python). Then fully quit and reopen Claude Desktop — on macOS closing the window isn't enough; use Cmd+Q (or right-click the dock icon > Quit). On Windows, quit from the system tray.
Verify it loaded: in Claude Desktop, Settings > Developer should list kaist-beast-mcp as running,
and the chat's tools/connector menu should show its tools. (If not, see Troubleshooting.)
If you later move or rename the project folder, the saved paths break — just re-run
setup-desktopand restart Claude Desktop.
Option B — claude.ai web (remote, advanced / optional)
Most people should use Option A. Use this only if you specifically want the web app. claude.ai only accepts remote HTTP MCP servers reachable from the public internet — a local stdio server cannot be added directly. You must keep this server running in HTTP mode on your machine and expose it via a tunnel:
- Run in HTTP mode (venv activated, leave it running):
python -m beast.mcp_server --http --port 8765(serveshttp://127.0.0.1:8765/mcp) - Install a tunnel tool and expose the port (in another terminal):
- cloudflared — macOS
brew install cloudflared, Windowswinget install Cloudflare.cloudflared, thencloudflared tunnel --url http://127.0.0.1:8765 - or ngrok (sign up, install) —
ngrok http 8765You get a publichttps://...URL; the MCP endpoint is that URL +/mcp.
- cloudflared — macOS
- In claude.ai: Customize > Connectors > Add custom connector, paste
https://.../mcp. (Pro/Max; Team/Enterprise admins add it under Organization settings > Connectors.)
About .env for the web path: the server still runs on your own machine and reads the same
local .env (your gameone account) — fill it exactly as in install step 3. claude.ai/Anthropic never
see your credentials; they only reach your locally-running server through the tunnel. Each person who
wants web access runs their own server + tunnel + connector (the server logs in as whoever's .env it is).
Security: because the server logs in with your gameone credentials, a public tunnel URL means anyone who has that URL can query it. Keep the URL private, shut the tunnel down when unused, or put auth in front. Claude Desktop (Option A) needs no tunnel and avoids this entirely.
Usage
Ask Claude in natural language, for example:
- "Show the group B standings"
- "Summarize The Beasts' batters and pitchers"
- "Scout 대전 리드오프 and suggest a lineup and pitching plan"
- "Show 김현호's game-by-game this season" / "Show 구전서's career trend"
- "Refresh the data" (after games)
Claude calls the tools below automatically. Tip: it can call guide first to learn the
domain caveats (small samples, 7-inning ERA, etc.).
The first question takes ~1 minute — it triggers the initial data collection (records + box scores) and caches it. Later questions are instant; ask "refresh the data" after new games.
MCP tools (22)
| Group | Tools | Notes |
|---|---|---|
| Meta/refresh | guide · refresh_data · data_status |
domain guide / re-collect (records + box scores) / freshness |
| Standings | standings · list_teams |
group B table / team list |
| Batting/Pitching | team_batters · team_pitchers |
raw stats (OPS order, qualified flag) / by ERA |
| Adjustment | regressed_batting |
empirical-Bayes shrinkage (OPS_adj) for small samples, on demand |
| Summary | team_summary · league_leaders |
team identity line / leaderboards |
| Game logs | game_log · recent_form · pitcher_usage |
actual lineups & starters / recent form / pitcher load |
| Player (us/opp) | player_gamelog · player_career |
per-game (current season = box scores, incl. opponents) / season+career (all-league total) |
| Opponent | scout_report · head_to_head · common_opponents |
one-stop scout / H2H (falls back to common opponents) / schedule strength |
| Rosters | our_roster · opponent_roster |
registered rosters |
| Management | save_lineup · list_lineups |
persist/recall lineups |
Design: data tools return gameone's raw numbers; correction (shrinkage) is a separate opt-in tool.
Per-game box scores enable real lineups, rotations, and recent form. See docs/GAMEONE.md
for the full domain guide (also returned by the guide tool).
CLI (optional)
With the venv activated:
python -m beast.cli crawl --save # collect + store (records + box scores)
python -m beast.cli export --opponent "대전 리드오프" # build a Markdown scouting report
Troubleshooting
- Server not showing in Claude Desktop -> fully quit/reopen; re-run
setup-desktop; verifylogin-test. Check Claude Desktop > Settings > Developer. DH_KEY_TOO_SMALLSSL error -> gameone uses a weak DH key; a workaround adapter is included. Make sure your code is up to date (git pull).mcpinstall/version error -> your Python is < 3.10. Recreate the venv with 3.12 (install step 2).- Windows PowerShell: "running scripts is disabled on this system" (on
Activate.ps1) -> runSet-ExecutionPolicy -Scope Process -ExecutionPolicy Bypassin that window, then activate again. pythonnot found / wrong Python -> the venv isn't activated. Re-run the activate line (macOSsource .venv/bin/activate, Windows.\.venv\Scripts\Activate.ps1), or prefix with the venv python (.venv/bin/python/.venv\Scripts\python.exe).- Login fails -> check id/password and that the account is a Science League member.
Project layout
beast/
config.py settings (.env, league/team ids, group bujo_idx)
crawler/ login, fetch, parse (session/endpoints/crawl/parse)
storage/db.py SQLite (snapshots + box-score game logs)
analysis/ metrics & reports (stats, report)
mcp_server.py MCP server (Claude)
desktop.py auto-config for Claude Desktop
cli.py CLI
docs/GAMEONE.md domain guide for Claude
data/ collected data (gitignored)
Use for another team/league
Override identifiers in .env (teammates leave these as-is):
LIG_IDX, CLUB_IDX, OUR_JO (A/B), OUR_BUJO_IDX, CURRENT_SEASON.
Security
.env (credentials), *.bak, and collected data are never committed. Never share your account.
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。