关于 Safe Kaggle MCP
Safe Kaggle MCP 是连接 Claude 与 Kaggle 的 MCP 服务,面向需要通过 Agent 管理竞赛、数据集、内核和模型的用户。不可逆操作需预览并确认,提交有每日额度,并对 Kaggle 返回文本进行注入防护。
主要功能
- 01提交、删除和发布前预览确认
- 02按竞赛展示提交额度
- 03数据集与竞赛的本地 EDA
- 04对讨论文本进行注入防护
- 05追踪排行榜变化与审计操作
- 06支持竞赛启动和内核运行
适用场景
- 01筛选竞赛并查看截止时间和指标
- 02下载数据并检查训练集与测试集
- 03在额度限制内提交并查看得分
- 04追踪排行榜名次变化
MCP 相关
该 MCP 服务向 Claude 等 MCP 客户端提供 Kaggle 竞赛、数据集、内核、模型及讨论相关工具,也提供资源和提示词。提交等不可逆操作通过预览令牌确认,并受额度限制。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
uvx safe-kaggle-mcpKAGGLE_USERNAMEKaggle account username (legacy scheme; pair with KAGGLE_KEY). Optional — read-only tools work without credentials.KAGGLE_KEY密钥Kaggle API key, the 40-char 'key' from kaggle.json (legacy scheme; pair with KAGGLE_USERNAME).KAGGLE_API_TOKEN密钥Modern Kaggle KGAT_... token (alternative to KAGGLE_USERNAME/KAGGLE_KEY). Optional.KAGGLE_MCP_ENABLE_DESTRUCTIVESet to 1 to expose delete tools. Default 0 (off).KAGGLE_MCP_ENABLE_PUBLISHSet to 1 to allow making datasets/kernels public. Default 0 (off).KAGGLE_MCP_SUBMISSION_CAPDaily per-competition submission budget. Default 5.本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
kaggle-mcp
一个安全优先的 Model Context Protocol 服务,将 Claude(Desktop / Code)连接到 Kaggle,涵盖竞赛、数据集、内核(笔记本)和模型。
safe-kaggle-mcp 是唯一一款以安全为先的 Kaggle MCP。 每项不可逆操作——提交、删除、公开发布——都必须通过两步调用的预览→提交确认令牌;每个响应都会显示每场竞赛的提交预算;破坏性标志默认关闭;所有 Kaggle 返回的文本都会封装在
<untrusted-content>中,并且你的凭据绝不会进入模型上下文。其他服务追求工具数量,而官方远程服务胜在无需安装,但**它们都没有为任何破坏性调用设置门槛、限制提交次数或强化防御提示词注入,包括官方服务。**它牺牲了广度,换取自主 Agent 使用你的 Kaggle 账户时真正需要的一点:它无法悄悄耗尽你的每日提交次数、泄露密钥、公开你的私有作品,或被恶意讨论帖劫持。
claude mcp add --transport stdio kaggle -- uvx --from safe-kaggle-mcp kaggle-mcp
对比情况
| 特性 | safe-kaggle-mcp | 典型社区服务 | 官方远程服务 / Composio |
|---|---|---|---|
| 两步调用预览→提交确认令牌(提交/删除/发布) | ✅ 支持 | ❌ 不支持(单次调用) | ❌ 不支持(单次调用) |
| 向 Agent 显示每项竞赛的提交预算 | ✅ 支持(默认每天 5 次) | ❌ 不支持 | ❌ 不支持(服务端配额不透明) |
提示词注入加固(使用 <untrusted-content> 隔离) | ✅ 支持 | ❌ 不支持 | ❌ 不支持 |
| 默认私有 + 默认关闭破坏性操作/发布标志 | ✅ 支持 | ⚠️ 可选的 is_private 参数 | ❌ 不支持 |
不在聊天中调用 authenticate() + 对 40 位十六进制凭据进行脱敏 | ✅ 支持 | ❌ 有些会将密钥泄露到上下文中 | ⚠️ OAuth 会避免暴露密钥,但不做脱敏 |
| 防 zip-slip/沙箱化下载 | ✅ 支持 | ❌ 不支持 | ❌ 无法沙箱化本地写入 |
| 可调用的本地 EDA 工具(精简的 pandas 摘要,不返回原始行) | ✅ 支持(数据集 + 竞赛) | ❌ 最多提供 EDA 提示词 | ❌ 不支持 |
| 竞赛 训练集/测试集架构差异 + 自动检测目标 | ✅ 支持 | ❌ 不支持 | ❌ 不支持 |
| 竞赛 概况评估(剩余天数、预算、指标) | ✅ 支持 | ❌ 仅提供简单的原始列表 | ❌ 提供原始字段,不含摘要 |
| 提交最佳成绩摘要(结合指标的最佳成绩/趋势/失败情况) | ✅ 支持 | ❌ 原始列表 | ❌ 原始列表 |
| 排行榜差值跟踪(本地快照 + 排名变动) | ✅ 支持 | ❌ 不支持 | ❌ 也没有 API 端点 |
| 修改操作的会话审计账本(已脱敏) | ✅ 支持 | ❌ 不支持 | ❌ 不支持 |
| 只读的讨论 + 解读摘要,带注入隔离 | ✅ 支持(通过不可信内容隔离) | ⚠️ 支持,但未隔离(Galaxy-Dawn) | ⚠️ 未隔离 |
| 单次调用启动竞赛(数据 + EDA + 基线方案) | ✅ 支持 | ❌ 不支持 | ❌ 不支持 |
| 输出规范(排名/数量受限的表格、分页、前 N 项) | ✅ 支持 | ❌ 未记录 | ❌ 由客户端负责 |
现代 KGAT_ 令牌 + 旧版用户名/密钥认证 | ✅ 两者均支持 | ⚠️ 基本只支持旧版认证 | ✅ OAuth 2.0 |
| 安装方式 | 本地 stdio(PyPI + git,uvx) | 本地(pip/uv) | ✅ 零安装远程服务 |
| 原始工具数量 | 41 个工具(不含基准测试列表——API 未提供) | 最多约 51 个 | 约 35–57 个 |
有两点我们确实不占优势:官方远程服务无需安装,而覆盖面最广的社区服务(Galaxy-Dawn,约 51 个工具)提供更多原始端点(例如基准测试)。它们以未隔离的方式提供约 10 个论坛工具;我们则提供只读的讨论搜索 + 阅读,并将每篇正文都用 <untrusted-content> 隔离——不提供发帖工具,因为该 API 并未提供此功能。
可用功能
用自然语言在 Claude 聊天中掌控整个 Kaggle 工作流:
| 向 Claude 提出请求…… | 底层执行的操作 |
|---|---|
| “筛选活跃竞赛——奖金额、评估指标、剩余天数。” | kaggle_competition_landscape(生成一份整理好的报告,按截止时间排序) |
| “下载 titanic 数据,推断目标列并进行 EDA。” | kaggle_eda_competition → 训练集/测试集架构差异(自动识别目标列)+ 精简的 pandas 摘要 |
| “找一个不错的 Titanic 数据集,给我看看数据是什么样的。” | kaggle_search_datasets → kaggle_dataset_preview(限制行数,并将数据行标记为不可信内容) |
| “总结 iris 数据集。” | kaggle_eda_dataset → 形状、数据类型、缺失情况、目标分布、主要相关性 |
| “将 predictions.csv 提交到 titanic,并告诉我得分。” | kaggle_preview_submission → kaggle_submit_to_competition(令牌 + 预算检查)→ kaggle_get_submission_score |
| “值得继续迭代吗?目前为止我的最佳得分是多少?” | kaggle_submission_best_score(根据评估指标汇总最佳成绩、趋势和失败情况 + 今日预算) |
| “上次查看后,排行榜上有人超过我了吗?” | kaggle_leaderboard_track(比较快照差异,查看谁超过了你) |
| “大家在讨论这场竞赛的哪些技巧?” | kaggle_search_discussions → kaggle_get_discussion(只读,所有帖子均标记为不可信内容) |
| “找出这场竞赛的获胜方案解析。” | kaggle_search_writeups → kaggle_get_discussion |
| “帮我启动这场竞赛。” | kaggle_competition_kickoff — 一次调用即可获取:评估指标 + 规则 + 数据下载 + 训练集/测试集 EDA(自动识别目标列)+ 基线方案 + 预算 |
| “本次会话中我执行过哪些会修改数据的操作?” | kaggle_audit_log(记录每次提交、创建和删除操作的脱敏日志) |
| “在 Kaggle 的免费 GPU 上运行这个 notebook,并获取输出。” | kaggle_push_kernel → kaggle_kernel_status → kaggle_kernel_output |
| “将我构造的特征保存为私有数据集版本。” | kaggle_version_dataset — 默认设为私有 |
Agent 可自行串联的高级工作流: 自主竞赛循环(下载 → 训练 → 提交 → 查看得分 → 迭代,在每日预算范围内)、将 Kaggle 用作远程 GPU/TPU 后端,以及通过私有数据集版本实现跨运行记忆。每个不可逆步骤都会经过检查,因此 Agent 可以自主运行,而不必担心账户安全。
不支持的功能(如实说明限制)
有些竞品宣称具备公开 Kaggle API 实际上无法提供的功能。我们不会发布不实的占位功能:
- 无法在论坛/讨论区发帖。 API 可以读取主题,但没有创建、回复或投票接口,因此我们不会假装支持这些操作。
- 无法预测私有排行榜得分或最终排名。 截止日期前不会公开私有得分;我们的工具会将得分标记为仅限公开数据。
- 无法获取 Kaggle 的历史排行榜。 Kaggle 没有此类接口——
kaggle_leaderboard_track会将数据与你在本地保存的快照进行比较,并明确说明这一点。 - 无法获取隐藏的测试标签或私有数据划分。 我们只会提供竞赛公开的文件。
安装
# fastest: install + register with Claude Code
claude mcp add --transport stdio kaggle -- uvx --from safe-kaggle-mcp kaggle-mcp
# or straight from this repo (no PyPI):
claude mcp add --transport stdio kaggle -- uvx --from git+https://github.com/parkseokjune/kaggle-mcp kaggle-mcp
# or for development
uv sync --extra dev && uv run kaggle-mcp
PyPI 发行包名为
safe-kaggle-mcp(名称kaggle-mcp已被占用);安装后的命令仍为kaggle-mcp,因此请使用uvx --from safe-kaggle-mcp kaggle-mcp启动。
前往 https://www.kaggle.com/settings → API → Create New Token 获取令牌。两种方案均可使用(按顺序解析):
# 1) legacy username/key (env or ~/.kaggle/kaggle.json)
export KAGGLE_USERNAME=your_user
export KAGGLE_KEY=your_40_char_key
# 2) current API token (KGAT_...): the client reads it automatically
mkdir -p ~/.kaggle && echo "KGAT_..." > ~/.kaggle/access_token && chmod 600 ~/.kaggle/access_token
Claude Desktop — 编辑 claude_desktop_config.json,然后完全重启:
{ "mcpServers": { "kaggle": {
"command": "uvx", "args": ["--from", "safe-kaggle-mcp", "kaggle-mcp"],
"env": { "KAGGLE_USERNAME": "your_user", "KAGGLE_KEY": "your_key" } } } }
安全开关(默认关闭 → 只读/隐私模式)
| 环境变量 | 默认值 | 设为 1 时的效果 |
|---|---|---|
KAGGLE_MCP_ENABLE_DESTRUCTIVE | 0 | 开放 kaggle_delete_dataset / kaggle_delete_model |
KAGGLE_MCP_ENABLE_PUBLISH | 0 | 允许创建公开数据集 |
KAGGLE_MCP_SUBMISSION_CAP | 5 | 每个竞赛的每日提交额度 |
即使启用,每次破坏性调用仍需从其 *_preview_* 工具获取一次性 confirm_token,并记录在 kaggle_audit_log 中。
工具
41 个工具,涵盖账户、竞赛、数据集、讨论、内核、模型,以及 kaggle:// 资源(元数据、排行榜、规则)和 /kaggle-eda、/kaggle-submit-checklist、/kaggle-landscape、/kaggle-solution-research 提示词。运行 kaggle_status 可查看身份验证状态和提交额度。
已使用两种身份验证方案针对 Kaggle API(kaggle 2.2.2)完成实时验证;53 项离线测试和 6 项实时只读测试均已通过。
开发
uv run pytest # offline unit + integration tests
KAGGLE_LIVE=1 uv run pytest tests/test_live_readonly.py # live read-only smoke (needs creds)
uv run mcp dev src/kaggle_mcp/server.py # MCP Inspector
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。