All skills
shepsci avatar

/kaggle

@256664c

Unified Kaggle skill. Use when the user explicitly mentions Kaggle, kaggle.com, a Kaggle URL, Kaggle competitions, Kaggle datasets/models/notebooks, Kaggle forums/discussions/writeups, Kaggle benchmarks, hackathons hosted on Kaggle, Kaggle badges, or Kaggle account setup. Do not use for generic ML, GPU/TPU, notebook, dataset, benchmark, or data-science tasks unless the user clearly ties them to Kaggle.

Use this Skill: https://skilld.dev/gh/shepsci/kaggle-skill/kaggle

This session only. Nothing lands on disk.

modulesreferencesmcp-reference.md

≈2.3k tokens on demand. Your agent reads this file only when SKILL.md points to it.

Kaggle MCP Server Reference

Official docs: https://www.kaggle.com/docs/mcp Blog: https://www.kaggle.com/blog/kaggles-official-mcp-server

Endpoint

https://www.kaggle.com/mcp

Protocol: Streamable HTTP (MCP standard).

Authentication

Pass your Kaggle API token as a Bearer token:

Authorization: Bearer <your_api_token>

Use the API token from "Generate New Token" at kaggle.com/settings. Legacy API keys from kaggle.json also work but are deprecated.

Client Configuration

Claude Code (CLI)

claude mcp add kaggle --transport http https://www.kaggle.com/mcp \
  --header "Authorization: Bearer YOUR_API_KEY"

Antigravity CLI (agy)

Type /mcp inside agy to open the interactive MCP manager, or add the server to a config file directly:

  • Workspace config: .agents/mcp_config.json
  • Global config: ~/.gemini/config/mcp_config.json
{
  "mcpServers": {
    "kaggle": {
      "serverUrl": "https://www.kaggle.com/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_API_TOKEN"
      }
    }
  }
}

Generic MCP Client (Claude Desktop, Cursor, etc.)

Check your client docs for the exact remote-server key. Many clients use url; Antigravity CLI uses serverUrl.

{
  "mcpServers": {
    "kaggle": {
      "url": "https://www.kaggle.com/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_API_TOKEN"
      }
    }
  }
}

OpenClaw (via HTTP/curl)

OpenClaw can call the Kaggle MCP server directly over HTTP using the Streamable HTTP transport:

# List available tools (use KAGGLE_API_TOKEN, not KAGGLE_KEY)
curl -s -X POST https://www.kaggle.com/mcp \
  -H "Authorization: Bearer ${KAGGLE_API_TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | python3 -m json.tool

# Call a tool (e.g., search competitions)
curl -s -X POST https://www.kaggle.com/mcp \
  -H "Authorization: Bearer ${KAGGLE_API_TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"search_competitions","arguments":{"search":"titanic"}}}' | python3 -m json.tool
# Python requests example
import os, requests, json

KAGGLE_KEY = os.environ["KAGGLE_API_TOKEN"]  # API token from "Generate New Token"
URL = "https://www.kaggle.com/mcp"
HEADERS = {"Authorization": f"Bearer {KAGGLE_KEY}", "Content-Type": "application/json"}

def mcp_call(method, params=None):
    payload = {"jsonrpc": "2.0", "id": 1, "method": method}
    if params:
        payload["params"] = params
    resp = requests.post(URL, headers=HEADERS, json=payload)
    return resp.json()

# List tools
print(mcp_call("tools/list"))

# Search datasets
print(mcp_call("tools/call", {"name": "search_datasets", "arguments": {"search": "titanic"}}))

Tool Inventory (70 live tools, verified 2026-07-03)

Source: tools/list against https://www.kaggle.com/mcp, cross-referenced against shepsci/kmcp-tools data/endpoints.md. Use tools/list to confirm against the current server.

Status flag changes since the 2026-04-22 audit (verified by tests/integration/test_mcp_live.py and tests/manifest/test_mcp_inventory_drift.py):

  • get_hackathon_write_up — was KNOWN_FAIL, now PASS. Kaggle shipped a fix.
  • get_benchmark_leaderboard — was BLOCKED (permission-gated), now PASS for ordinary KGAT tokens.
  • get_competition for classic competitions (titanic, playground-series-s6e2) — was KNOWN_FAIL, now PASS.
  • New live MCP tools documented on 2026-07-03: get_accelerator_quota, list_competition_topics, list_team_public_submissions, and list_topic_messages.

The hackathon module's fetch_writeup.py fallback chain (get_writeup → get_writeup_by_topic → get_writeup_by_slug) is retained as defensive plumbing but is no longer required to work around server bugs.

Status legend:

  • ✅ verified PASS (as of 2026-05-04)
  • 🔒 BLOCKED by role/permission (host or judge required)
  • 🔬 BAD_PROBE (test infra issue, tool may still work)

Auth

  • ✅ authorize — Check whether the client can authorize with Kaggle
  • ✅ get_user_profile — Fetch a public user profile

Competition

  • ✅ get_competition — Backend bug for classic competitions (titanic, playground-series-s6e2) was fixed between 2026-04-22 and 2026-05-04
  • ✅ search_competitions
  • ✅ get_competition_data_files_summary
  • ✅ get_competition_leaderboard
  • ✅ get_competition_submission
  • ✅ search_competition_submissions
  • ✅ list_team_public_submissions — public team submission history
  • ✅ list_competition_data_files
  • ✅ list_competition_data_tree_files
  • ✅ list_competition_pages — host-authored overview pages (rules, evaluation, data-description, FAQ, prizes, timeline). Universal: works for regular competitions, playgrounds, and hackathons. See competition-overview.md for the full reference and patterns. Wrapper script: modules/competitions/scripts/competition_pages.py.
  • ✅ list_competition_topics — discussion topics for a competition
  • ✅ download_competition_data_file
  • ✅ download_competition_data_files
  • ✅ download_competition_leaderboard
  • ✅ start_competition_submission_upload
  • ✅ submit_to_competition
  • 🔒 create_code_competition_submission — kernel→competition; permission-gated

Dataset

  • ✅ search_datasets
  • ✅ get_dataset_info
  • ✅ get_dataset_metadata
  • ✅ get_dataset_status
  • ✅ get_dataset_files_summary
  • ✅ list_dataset_files
  • ✅ list_dataset_tree_files
  • ✅ download_dataset
  • ✅ update_dataset_metadata
  • ✅ upload_dataset_file

Notebook

  • ✅ search_notebooks
  • ✅ get_notebook_info
  • ✅ get_notebook_session_status
  • ✅ create_notebook_session
  • ✅ cancel_notebook_session
  • ✅ download_notebook_output
  • ✅ download_notebook_output_zip
  • ✅ list_notebook_files
  • ✅ list_notebook_session_output
  • ✅ save_notebook

Model

  • ✅ list_models
  • ✅ get_model
  • ✅ create_model
  • ✅ update_model
  • ✅ list_model_variations
  • ✅ get_model_variation
  • ✅ update_model_variation
  • ✅ list_model_variation_versions
  • ✅ list_model_variation_version_files
  • ✅ download_model_variation_version

Forum

  • ✅ list_forums
  • ✅ list_forum_topics
  • ✅ get_forum
  • ✅ get_forum_topic
  • ✅ list_topic_messages — messages/comments for a topic

Hackathon (newer surface — see modules/competitions/hackathons/)

  • ✅ get_hackathon_overview — rules, eligibility, rubric, prizes
  • ✅ list_hackathon_write_ups — submission roster (paginated)
  • ✅ list_hackathon_tracks — resolve track id → title
  • ✅ get_hackathon_write_up — generic invocation error fixed between 2026-04-22 and 2026-05-04; get_writeup remains the simpler interface (no competitionName arg needed)
  • ⚠️ download_hackathon_write_ups — host-only; may return CSV header only

Writeup

  • ✅ get_writeup — preferred full-body fetch (use over get_hackathon_write_up)
  • ✅ get_writeup_by_slug
  • ✅ get_writeup_by_topic
  • ⚠️ get_resolved_writeup_links — host context returns {}; participants get role-gated denial

Benchmark

  • ✅ create_benchmark_task_from_prompt
  • ✅ get_benchmark_leaderboard — permission gate lifted between 2026-04-22 and 2026-05-04 (now responds to ordinary KGAT tokens)

Episode (simulation/agent evaluation)

  • 🔬 get_episode_agent_logs
  • 🔬 get_episode_replay
  • ✅ list_submission_episodes

Search

  • ✅ search_content — generic content search

Quota

  • ✅ get_accelerator_quota — Kaggle accelerator quota status

Usage Patterns

Search and Download

Search datasets matching "titanic" → select best match → download it

Competition Workflow

List competitions → join → download data → submit predictions → check leaderboard

Publish Resources

Create private dataset with title and license → upload files → verify

Execute Notebook

Push notebook code → poll status → retrieve output when complete

Hackathon Writeup Retrieval

get_hackathon_overview (rules/rubric) → list_hackathon_tracks (id→title) →
list_hackathon_write_ups (roster) → get_writeup per submission →
get_resolved_writeup_links (host/judge only)

Prefer get_writeup when a writeup id is available because it has the simplest argument shape. The modules/competitions/hackathons/scripts/fetch_writeup.py script encodes the fallback chain (get_writeup → get_writeup_by_topic → get_writeup_by_slug).

Official Documentation

Source: SKILL.md on GitHub

1 alert16d5 checks · Risk SAFE
  • Gen Agent Trust Hub16d

    The 'kaggle' skill is a comprehensive and secure integration for Kaggle platform operations. It implements multiple security best practices, including credential masking, restrictive file permissions, and protection against token leakage to third-party sites. It also handles untrusted user-generated content from forums using explicit boundary markers to prevent prompt injection.

  • Socket16d

    No alerts

  • Snyk16d

    Risk: MEDIUM · 1 issue

  • Runlayer6mo

    28/45 files flagged

  • ZeroLeaks5mo

    Score: 93/100 · 2 sections analyzed

Signed by skilld at 256664c. This ties the file your Agent reads to that commit on GitHub. It does not review the instructions.

Last checked against GitHub 2 months ago.

Activeupdated 3 months ago
homepage
https://github.com/shepsci/kaggle-skill
All 1 allowed tools
Bash Read WebFetch Grep Glob
Other metadata
compatibility
Python 3.11+, pip packages kagglehub>=1.0.0, kaggle>=2.2.3, kagglesdk>=0.1.33,<1.0, requests, python-dotenv. Optional: playwright for browser badges; kaggle-benchmarks for local benchmark task authoring. The competitions module's SPA-scraping steps assume Playwright MCP tools are provided by the host agent; the skill itself does not bundle them.
metadata
{
  "author": "shepsci",
  "version": "2.4.0",
  "primaryEnv": "KAGGLE_API_TOKEN",
  "openclaw": {
    "requires": {
      "bins": [
        "python3",
        "pip3"
      ],
      "env": [
        "KAGGLE_API_TOKEN"
      ]
    }
  }
}

README badge

README badge for shepsci/kaggle-skill