mcpField
S
Safe Kaggle MCP

Safe Kaggle MCP

本地服务
github.com/parkseokjune数据与分析019 周前更新

关于 Safe Kaggle MCP

Safe Kaggle MCP 是连接 Claude 与 Kaggle 的 MCP 服务,面向需要通过 Agent 管理竞赛、数据集、内核和模型的用户。不可逆操作需预览并确认,提交有每日额度,并对 Kaggle 返回文本进行注入防护。

主要功能

  1. 01提交、删除和发布前预览确认
  2. 02按竞赛展示提交额度
  3. 03数据集与竞赛的本地 EDA
  4. 04对讨论文本进行注入防护
  5. 05追踪排行榜变化与审计操作
  6. 06支持竞赛启动和内核运行

适用场景

  1. 01筛选竞赛并查看截止时间和指标
  2. 02下载数据并检查训练集与测试集
  3. 03在额度限制内提交并查看得分
  4. 04追踪排行榜名次变化

MCP 相关

该 MCP 服务向 Claude 等 MCP 客户端提供 Kaggle 竞赛、数据集、内核、模型及讨论相关工具,也提供资源和提示词。提交等不可逆操作通过预览令牌确认,并受额度限制。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"parkseokjune-kaggle": {
"command": "uvx",
"args": [
"safe-kaggle-mcp"
],
"env": {
"KAGGLE_USERNAME": "<KAGGLE_USERNAME>",
"KAGGLE_KEY": "<KAGGLE_KEY>",
"KAGGLE_API_TOKEN": "<KAGGLE_API_TOKEN>",
"KAGGLE_MCP_ENABLE_DESTRUCTIVE": "<KAGGLE_MCP_ENABLE_DESTRUCTIVE>",
"KAGGLE_MCP_ENABLE_PUBLISH": "<KAGGLE_MCP_ENABLE_PUBLISH>",
"KAGGLE_MCP_SUBMISSION_CAP": "<KAGGLE_MCP_SUBMISSION_CAP>"
}
}
}
}
启动命令uvx safe-kaggle-mcp
需要配置的环境变量
KAGGLE_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+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypisafe-kaggle-mcp0.4.1

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

kaggle-mcp

CI PyPI smithery Python License: MIT

一个安全优先的 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_DESTRUCTIVE0开放 kaggle_delete_dataset / kaggle_delete_model
KAGGLE_MCP_ENABLE_PUBLISH0允许创建公开数据集
KAGGLE_MCP_SUBMISSION_CAP5每个竞赛的每日提交额度

即使启用,每次破坏性调用仍需从其 *_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

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。