内容
# Kaggle MCP 服务器
**完整的Kaggle CLI作为模型上下文协议(MCP)服务器 — 68种工具(v3.0)。**
与Claude Desktop、Claude Code、OpenAI Codex CLI、Cursor、Hermes Agent、Windsurf、OpenCode、VS Code MCP、Continue.dev以及任何stdio MCP客户端兼容。
## 功能
| 领域 | 工具 |
|------|-------|
| **内核** | 搜索,列出我的内核,状态,日志,文件,输出下载,拉取/推送,初始化,更新,删除,预览,可见性,主题 |
| **数据集** | 搜索,列出我的数据集,详情,文件,下载,初始化,上传,版本,元数据,状态,删除,主题 |
| **竞赛** | 列出,文件,下载,提交,提交记录,排行榜,团队提交记录,集数,重播,日志,页面,主题 |
| **模型** | 列出/获取/创建/更新/删除,实例,版本,版本文件/下载,主题 |
| **论坛** | 列出论坛,列出/显示主题 |
| **基准** | 列出任务,列出模型,任务状态 |
| **账户** | 配额(GPU/TPU),账户信息,CLI配置 |
**传输方式**
- `--stdio` 是代理的首选方式
- `--port N` HTTP SSE + `/rpc` 用于自定义客户端
## 安装
```bash
git clone https://github.com/mtrakretech/kaggle-mcp.git
cd kaggle-mcp
pip install -r requirements.txt
```
### 凭证(推荐:终端设置)
```bash
python kaggle_mcp.py --setup
```
它会:
1. 告诉你在哪里获取令牌:https://www.kaggle.com/settings → **API** → **创建新令牌**
2. 请求**用户名** + **API密钥**(密钥输入隐藏)
3. 可选地重用下载的 `kaggle.json`(当前工作目录 / 下载 / `~/.kaggle`)
4. 保存:
- `~/.kaggle/kaggle.json` (chmod 600 当可能时)
- 项目 `.env` (`KAGGLE_USERNAME`,`KAGGLE_KEY`,`KAGGLE_API_TOKEN`)
5. 使用 `kaggle quota` 验证
非交互式:
```bash
python kaggle_mcp.py --setup --username YOUR_USER --key YOUR_KEY
python kaggle_mcp.py --setup --from-json ~/Downloads/kaggle.json
python kaggle_mcp.py --setup --no-env # 仅 ~/.kaggle/kaggle.json
python kaggle_mcp.py --setup --no-validate # 跳过 API 检查
```
手动替代:
```bash
export KAGGLE_USERNAME=your_username
export KAGGLE_KEY=your_api_key
export KAGGLE_API_TOKEN=$KAGGLE_KEY
```
或手动编写 `~/.kaggle/kaggle.json`:
```json
{"username":"your_username","key":"your_api_key"}
```
## 快速测试
```bash
python kaggle_mcp.py --setup # 首次
python kaggle_mcp.py --list-tools
python kaggle_mcp.py --stdio
```
## 客户端设置
将 `/ABSOLUTE/PATH/TO/kaggle-mcp/kaggle_mcp.py` 替换为实际路径。
复制粘贴示例:[`examples/`](examples/)。
### Claude Desktop
`%APPDATA%\Claude\claude_desktop_config.json`(Windows)/ `~/Library/Application Support/Claude/claude_desktop_config.json`(macOS):
```json
{
"mcpServers": {
"kaggle": {
"command": "python",
"args": ["/ABSOLUTE/PATH/TO/kaggle-mcp/kaggle_mcp.py", "--stdio"],
"env": {
"KAGGLE_USERNAME": "your_kaggle_username",
"KAGGLE_KEY": "your_kaggle_api_key",
"KAGGLE_API_TOKEN": "your_kaggle_api_key"
}
}
}
}
```
### Claude Code / Cursor / Windsurf
与上述相同的 `mcpServers.kaggle` JSON 结构。
### Codex CLI (`~/.codex/config.toml`)
```toml
[mcp_servers.kaggle]
command = "python"
args = ["/ABSOLUTE/PATH/TO/kaggle-mcp/kaggle_mcp.py", "--stdio"]
[mcp_servers.kaggle.env]
KAGGLE_USERNAME = "your_kaggle_username"
KAGGLE_KEY = "your_kaggle_api_key"
KAGGLE_API_TOKEN = "your_kaggle_api_key"
```
### Hermes Agent (`config.yaml`)
```yaml
mcp_servers:
kaggle:
command: python
args:
- /ABSOLUTE/PATH/TO/kaggle-mcp/kaggle_mcp.py
- --stdio
env:
KAGGLE_USERNAME: your_kaggle_username
KAGGLE_KEY: your_kaggle_api_key
KAGGLE_API_TOKEN: your_kaggle_api_key
timeout: 180
```
对 Hermes 使用 **stdio**(不是 HTTP SSE)。
### OpenCode / VS Code / Continue
参见 `examples/opencode_config.json`、`examples/vscode_mcp.json`、`examples/continue_config.yaml`。
## 工具(68)
### 内核(15)
`search_kernels` `list_my_kernels` `kernel_status` `kernel_logs` `kernel_files` `kernel_output` `pull_notebook` `push_notebook` `init_kernel` `update_kernel` `delete_kernel` `preview_notebook` `toggle_kernel_visibility` `list_kernel_topics` `show_kernel_topic`
### 数据集(13)
`search_datasets` `list_my_datasets` `dataset_details` `list_dataset_files` `download_dataset` `init_dataset` `upload_dataset` `update_dataset` `get_dataset_metadata` `dataset_status` `delete_dataset` `list_dataset_topics` `show_dataset_topic`
### 竞赛(13)
`list_competitions` `list_competition_files` `download_competition_data` `submit_competition` `list_competition_submissions` `competition_leaderboard` `list_team_submissions` `list_competition_episodes` `download_competition_replay` `download_competition_episode_logs` `list_competition_pages` `list_competition_topics` `show_competition_topic`
### 模型(17)
`list_models` `model_details` `init_model` `create_model` `update_model` `delete_model` `list_model_instances` `get_model_instance` `init_model_instance` `create_model_instance` `update_model_instance` `delete_model_instance` `list_model_instance_versions` `list_model_version_files` `download_model_version` `create_model_version` `delete_model_version` `list_model_topics`
### 论坛 / 基准 / 账户(10)
`list_forums` `list_forum_topics` `show_forum_topic` `list_benchmark_tasks` `list_benchmark_models` `benchmark_task_status` `get_quota` `get_account_info` `get_config`
## 现场测试笔记(v3.0)
在该机器上针对真实API进行了验证:
- 内核 搜索/列表/状态/日志/文件/拉取/预览/输出
- 数据集 搜索/列表/详情/文件/元数据/下载/主题
- 竞赛 列表/文件/排行榜/页面/主题/团队提交
- 模型 列表/获取/实例/版本
- 论坛 列表/主题,基准 列表/模型,配额,配置,初始化模板
已知的Kaggle侧软故障(工具连线正常;API返回错误):
- `dataset_status` → 部分公共数据集的404错误
- `list_competition_submissions` → 如果您从未参加竞赛,则返回400错误
- `list_model_version_files` / 部分实例路径 → 如果版本引用错误,则返回404错误
- 主题 `show_*` → 在速率限制下为429错误(稍后重试)
破坏性工具(`delete_*`、`submit_competition`、`push_notebook`、上传)已实现但未在CI样式测试中自动运行。
## 安全
- 无硬编码凭证
- 环境变量或 `~/.kaggle/kaggle.json` 仅限
- 密钥在除发送到Kaggle以外的情况下不会离开您的机器
## 许可证
MIT — 参见 [LICENSE](LICENSE)
## 链接
- 仓库:https://github.com/mtrakretech/kaggle-mcp
- Kaggle令牌:https://www.kaggle.com/settings
- MCP:https://modelcontextprotocol.io/