kaggle-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| KAGGLE_KEY | Yes | Your Kaggle API key (40-character hex string) | |
| KAGGLE_USERNAME | Yes | Your Kaggle username (legacy auth scheme) | |
| KAGGLE_MCP_ENABLE_PUBLISH | No | Set to '1' to allow creating public datasets | 0 |
| KAGGLE_MCP_SUBMISSION_CAP | No | Per-competition daily submission budget | 5 |
| KAGGLE_MCP_ENABLE_DESTRUCTIVE | No | Set to '1' to enable destructive operations (delete dataset/model) | 0 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| kaggle_whoamiA | Return the authenticated Kaggle username and credential source. Does not transmit or echo the API key. Use to confirm the server resolved credentials for the expected account. |
| kaggle_statusA | Health check: credential validity, current per-competition submission budgets for this session, enabled safety switches, and the work-dir root. |
| kaggle_audit_logA | Return the session's append-only ledger of mutating actions (submit / create / version / delete) with timestamps and the submission budget at the time — every field redacted. Makes the safety machinery inspectable, which no other Kaggle MCP can offer (none track tokens or budgets). |
| kaggle_list_competitionsA | List/triage competitions as a compact ranked table (title, slug, prize, deadline, evaluation metric, category). Paginated. Read-only. |
| kaggle_competition_landscapeA | Pre-digested triage report of competitions: for each, the slug, prize, evaluation metric, deadline, and days_left — sorted by soonest deadline so you can decide what to enter at a glance. A single decision-ready artifact rather than raw endpoint output (which is what other Kaggle MCPs return). |
| kaggle_get_competitionA | Fetch one competition's details and a truncated, untrusted-wrapped rules
digest. |
| kaggle_competition_leaderboardA | Public leaderboard capped to top-N (default 20) to protect context. |
| kaggle_leaderboard_trackA | Snapshot the public top-N and diff it against the LAST snapshot you took: per-team rank deltas, new entrants, biggest climbers, and (if your_team is given) your movement + who passed you. Kaggle has no historical-leaderboard endpoint, so this stateful local tracking is unique. PUBLIC leaderboard only; deltas are vs your previous snapshot, not an absolute time series. |
| kaggle_download_competition_filesA | Download competition data into an isolated work dir (zip auto-extracted with a zip-slip guard). Returns local paths + metadata, NOT file contents. Requires the competition's rules accepted (403 otherwise). |
| kaggle_eda_competitionA | Download a competition's data and return a pre-first-submission view: a compact pandas digest per CSV (shape/dtypes/missingness/correlations) PLUS a train-vs-test column diff that auto-infers the target — the orientation no other Kaggle MCP ships. Requires the competition rules accepted (403 else). |
| kaggle_competition_kickoffA | One-call competition kickoff: fetch the metric/deadline/rules, download the data if rules are accepted (otherwise tell you to accept first), run a train/test EDA with target auto-detection, and return a baseline plan plus your remaining submission budget. Collapses the manual setup ritual into a single decision-ready bundle — no other Kaggle MCP does this. |
| kaggle_submission_best_scoreA | Reduce raw submission history to the decision signal: best public score (respecting metric direction), first/best/latest trend, today's submission count, and any failure reasons — the 'is it worth iterating?' answer other servers leave as a raw list. Public scores only (private score is hidden until the deadline). |
| kaggle_accept_competition_rulesA | There is NO API to accept competition rules (it is a legal agreement). This returns the rules URL and instructs the user to accept it manually in the browser. It NEVER auto-accepts. |
| kaggle_preview_submissionA | Dry-run a submission: validate the file exists/size, report the budget impact, and return a single-use confirm_token required by kaggle_submit_to_competition. No side effects. |
| kaggle_submit_to_competitionA | Submit a predictions file. GATED: requires a valid confirm_token from kaggle_preview_submission AND available submission budget (~5/day/team). Consumes a daily slot — hard to undo. Returns submission status + remaining budget. |
| kaggle_list_submissionsB | List submission history with status and scores. Read-only. |
| kaggle_get_submission_scoreA | Poll the newest submission until scoring completes (bounded polling with backoff — NOT a hot loop) and return its public score. Closes the submit loop. |
| kaggle_search_datasetsB | Search datasets; return top ~10 as a compact ranked table (ref, title, downloads, updated, usability) — not raw JSON. Paginated. |
| kaggle_get_dataset_metadataA | Fetch a dataset's metadata + file listing. |
| kaggle_download_datasetA | Download a dataset (or single file) into an isolated work dir; zip auto-extracted with a zip-slip guard. Returns local paths + metadata. |
| kaggle_eda_datasetA | Download a dataset and return a COMPACT exploratory summary — shape,
dtypes, missingness, target distribution, and top numeric correlations —
computed locally with pandas. Never streams raw rows into context. This is
the 'find data -> understand it' primitive that most Kaggle MCP servers
lack (they dump raw files or just emit a prompt). |
| kaggle_dataset_previewA | Safe first-N-rows preview of a dataset CSV — headers, dtypes, and up to
|
| kaggle_create_datasetA | Create a NEW dataset from a local folder. PRIVATE by default. Making it public requires KAGGLE_MCP_ENABLE_PUBLISH=1 AND a confirm_token from a preview. Async — returns 'queued'; poll kaggle_dataset_status. The folder must contain a valid dataset-metadata.json (id, title, licenses). |
| kaggle_preview_publish_datasetB | Issue a confirm_token to publish a dataset publicly. Surfaces that the data WILL become world-visible. No side effects. |
| kaggle_version_datasetA | Push a new version/revision of an existing dataset from a local folder (persists engineered features across runs). Async; non-destructive (adds a version). |
| kaggle_dataset_statusB | Poll the processing status of a dataset create/version op. Read-only. |
| kaggle_delete_datasetA | Delete a dataset and ALL its versions — IRREVERSIBLE. Disabled unless the server was started with KAGGLE_MCP_ENABLE_DESTRUCTIVE=1, AND requires a confirm_token. Never defaults to yes. |
| kaggle_preview_delete_datasetA | Issue a confirm_token for an irreversible dataset delete. No side effects. |
| kaggle_search_discussionsA | Search/list Kaggle discussion topics. Returns a compact table (title, author, votes, comments, forum, url). READ-ONLY — there is intentionally no post/reply/vote tool (the API has none). Titles are external untrusted text; drill into a thread with kaggle_get_discussion(topic_id). |
| kaggle_search_writeupsA | Search competition SOLUTION write-ups — the post-competition explanations of what actually won. The highest-signal source for strategy research; pairs with the /kaggle-solution-research prompt. Read-only and untrusted-fenced; drill into one with kaggle_get_discussion(topic_id). Powered by the Kaggle 'competition_write_ups' discussion category. |
| kaggle_get_discussionA | Read a discussion topic's messages. Each message body is fenced as and truncated. READ-ONLY — no reply/comment/vote. |
| kaggle_list_kernelsA | List/search notebooks (kernels) as a compact table. Paginated. Read-only. |
| kaggle_pull_kernelA | Pull a kernel's source (and optionally metadata) into a local work dir.
Source code is untrusted-wrapped and truncated. |
| kaggle_push_kernelA | Push (create/update AND queue-run) a notebook from a local folder, using Kaggle's free GPU/TPU. Requires a valid kernel-metadata.json. PRIVATE by default (set is_private:true in metadata). Async — poll kaggle_kernel_status. |
| kaggle_kernel_statusB | Poll a kernel run's status (running|complete|error|cancelAcknowledged). |
| kaggle_kernel_outputC | Download a completed kernel's output files and logs into a local work dir. Log tail is untrusted-wrapped and truncated. Read-only fetch. |
| kaggle_list_modelsA | List/search published models as a compact table. Paginated. Read-only. |
| kaggle_get_modelA | Fetch a model's metadata and instances/variations. |
| kaggle_download_modelA | Download a specific model instance version's artifacts into a work dir.
|
| kaggle_delete_modelA | Delete a model — IRREVERSIBLE. Disabled unless KAGGLE_MCP_ENABLE_DESTRUCTIVE=1, and requires a confirm_token from kaggle_preview_delete_model. |
| kaggle_preview_delete_modelB | Issue a confirm_token for an irreversible model delete. No side effects. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| kaggle_eda | Templated exploratory-data-analysis workflow for a dataset. |
| kaggle_submit_checklist | Guided, safe pre-submission workflow. |
| kaggle_landscape | Generate a pre-digested competition landscape/triage report. |
| kaggle_solution_research | Research prior techniques/solutions for a competition. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/parkseokjune/kaggle-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server