Interact with Kaggle Competitions and Datasets
An MCP server for Kaggle - browse and submit competitions, manage datasets and kernels, and publish versioned ML models.
Maintainer of this project? Claim this page to edit the listing.
0.1.1Add to Favorites
Why it matters
Seamlessly integrate with the Kaggle API to manage competitions, datasets, kernels, and models. Automate tasks like downloading data, submitting predictions, and managing datasets.
Outcomes
What it gets done
List and search Kaggle competitions and datasets
Download competition files and datasets
Submit predictions to competitions
Create and manage Kaggle datasets
Install
Add it to your toolbox
Run in your project directory:
curl -fsSL https://spark.entire.vc/get/vb-kaggle-mcp | bash Capabilities
Tools your agent gets
List and search available competitions
List all files in a competition
Download a specific competition file
Download all competition files
Submit predictions to a competition
View your submission history
View the competition leaderboard
Download leaderboard data
Overview
Kaggle MCP Server
This MCP server exposes 38 tools for Kaggle: competition browsing and submission, dataset search/download/versioning, kernel push/pull, and full model and model-instance CRUD with version management. Use it to browse, download, submit to, or manage Kaggle competitions, datasets, kernels, and ML models conversationally. Requires a Kaggle account with API credentials.
What it does
A comprehensive MCP server for the Kaggle API covering 38 tools across four areas. Competitions (8 tools): list and search competitions, list and download competition files either individually or all at once, submit predictions, view submission history, and view or download the leaderboard. Datasets (9 tools): search and filter, get metadata, list files, check processing status, download files individually or all at once, create a new dataset, initialize its metadata, and create new versions with full version control. Kernels (7 tools): search and filter, list files, initialize metadata, push a kernel to Kaggle, pull or download one, download its output files, and check execution status. Models (14 tools): search and filter, get details, and initialize, create, update, and delete a model - plus the same lifecycle (get, initialize, create, update, delete) for model instances, along with creating, downloading, and deleting specific model versions.
When to use - and when NOT to
Use it to browse, download, submit to, or manage Kaggle competitions, datasets, kernels or notebooks, and ML models conversationally - for example, "list active computer vision competitions," "download the Titanic dataset," or "submit my predictions.csv with the message Initial baseline model." It requires a Kaggle account with API credentials (a username and API key generated from kaggle.com/account). It is not useful for actions Kaggle's own API doesn't support.
Capabilities
Tool naming is consistent across all four areas: the plural collection-search tool for each area (competitions_list, datasets_list, kernels_list, models_list) is distinct from the singular per-item tools that act on one competition, dataset, kernel, or model at a time (competition_submit, dataset_create, kernel_push, model_update, and so on) - a caller can predict which form to use once they know whether they're searching a collection or acting on a specific item.
How to install
uvx mcp-server-kaggle
Or pip install mcp-server-kaggle, uv tool install mcp-server-kaggle, or build from source with git clone plus uv sync. Requires Python 3.10 or higher. Get credentials from kaggle.com/account (Create New Token, which downloads a kaggle.json file), then set KAGGLE_USERNAME and KAGGLE_API_KEY as environment variables or in a .env file. A Claude Desktop config looks like:
{
"mcpServers": {
"kaggle": {
"command": "uvx",
"args": ["mcp-server-kaggle"],
"env": { "KAGGLE_USERNAME": "YOUR_KAGGLE_USERNAME", "KAGGLE_API_KEY": "YOUR_KAGGLE_API_KEY" }
}
}
}
It can also run standalone via mcp-server-kaggle or as a Python module with python -m kaggle_mcp.
Who it's for
Data scientists and ML practitioners who want to browse competitions and datasets, submit predictions, manage notebooks, or publish and version models directly from Claude Desktop or another MCP client, instead of switching to Kaggle's website or CLI.
Source README
Kaggle MCP Server
A Model Context Protocol (MCP) server that provides seamless integration with the Kaggle API. Interact with Kaggle competitions, datasets, kernels, and models through MCP-compatible clients like Claude Desktop.
Features
- Competitions: List, download files, submit, view leaderboards and submissions
- Datasets: Search, download, create, and manage datasets with version control
- Kernels: List, push, pull, and manage Kaggle notebooks and scripts
- Models: Create, update, and manage ML models and instances with full version control
Installation
Prerequisites
- Python 3.10 or higher
- A Kaggle account with API credentials
Install from PyPI
The recommended way is to run the server with uvx, which handles the install for you:
uvx mcp-server-kaggle
Or install it explicitly:
pip install mcp-server-kaggle
# or
uv tool install mcp-server-kaggle
Install from Source
For development or local modifications:
git clone https://github.com/Seif-Sameh/Kaggle-mcp.git
cd Kaggle-mcp
uv sync
Setup
1. Get Your Kaggle API Credentials
- Go to https://www.kaggle.com/account
- Scroll to the "API" section
- Click "Create New Token"
- This downloads
kaggle.jsonwith your credentials
2. Configure Credentials
Option A: Environment Variables (Recommended)
export KAGGLE_USERNAME=your_username
export KAGGLE_API_KEY=your_api_key
Or add to your ~/.zshrc or ~/.bashrc:
echo 'export KAGGLE_USERNAME=your_username' >> ~/.zshrc
echo 'export KAGGLE_API_KEY=your_api_key' >> ~/.zshrc
source ~/.zshrc
Option B: Using .env File
Create a .env file in your project directory:
KAGGLE_USERNAME=your_username
KAGGLE_API_KEY=your_api_key
Usage
With Claude Desktop
The recommended way to use Kaggle MCP is with Claude Desktop.
Locate your Claude Desktop config file:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json
- macOS:
Add the Kaggle MCP server configuration:
{
"mcpServers": {
"kaggle": {
"command": "uvx",
"args": ["mcp-server-kaggle"],
"env": {
"KAGGLE_USERNAME": "YOUR_KAGGLE_USERNAME",
"KAGGLE_API_KEY": "YOUR_KAGGLE_API_KEY"
}
}
}
}
Running from a local source clone (alternative)
{
"mcpServers": {
"kaggle": {
"command": "uv",
"args": [
"--directory",
"/ABSOLUTE/PATH/TO/Kaggle-mcp",
"run",
"mcp-server-kaggle"
],
"env": {
"KAGGLE_USERNAME": "YOUR_KAGGLE_USERNAME",
"KAGGLE_API_KEY": "YOUR_KAGGLE_API_KEY"
}
}
}
}
Restart Claude Desktop
Start using Kaggle through Claude!
Try asking Claude:
- "List the latest Kaggle competitions"
- "Download the Titanic dataset"
- "Show me my recent competition submissions"
- "Search for NLP datasets"
Standalone Usage
Run the MCP server directly:
mcp-server-kaggle
Or as a Python module:
python -m kaggle_mcp
Available Tools
Competitions (8 tools)
| Tool | Description |
|---|---|
competitions_list |
List and search available competitions |
competition_list_files |
List all files in a competition |
competition_download_file |
Download a specific competition file |
competition_download_files |
Download all competition files |
competition_submit |
Submit predictions to a competition |
competition_submissions |
View your submission history |
competition_leaderboard_view |
View the competition leaderboard |
competition_leaderboard_download |
Download leaderboard data |
Datasets (10 tools)
| Tool | Description |
|---|---|
datasets_list |
Search and filter datasets |
dataset_metadata |
Get dataset metadata |
dataset_list_files |
List files in a dataset |
dataset_status |
Check dataset processing status |
dataset_download_file |
Download a specific dataset file |
dataset_download_files |
Download all dataset files |
dataset_create |
Create a new dataset |
dataset_initialize |
Initialize dataset metadata |
dataset_create_version |
Create a new dataset version |
Kernels (7 tools)
| Tool | Description |
|---|---|
kernels_list |
Search and filter kernels |
kernel_list_files |
List files in a kernel |
kernel_initialize |
Initialize kernel metadata |
kernel_push |
Push a kernel to Kaggle |
kernel_pull |
Download a kernel |
kernel_output |
Download kernel output files |
kernel_status |
Check kernel execution status |
Models (14 tools)
| Tool | Description |
|---|---|
models_list |
Search and filter models |
model_get |
Get model details and metadata |
model_initialize |
Initialize model metadata |
model_create |
Create a new model |
model_update |
Update model information |
model_delete |
Delete a model |
model_instance_get |
Get model instance details |
model_instance_initialize |
Initialize model instance metadata |
model_instance_create |
Create a new model instance |
model_instance_update |
Update a model instance |
model_instance_delete |
Delete a model instance |
model_instance_version_create |
Create a new model version |
model_instance_version_download |
Download a model version |
model_instance_version_delete |
Delete a model version |
Examples
Example 1: Working with Competitions
Ask Claude:
"List active Kaggle competitions about computer vision"
Claude will use the competitions_list tool to search and display relevant competitions.
Example 2: Downloading Datasets
Ask Claude:
"Download the Titanic dataset to my Downloads folder"
Claude will use dataset_download_files to fetch all dataset files.
Example 3: Submitting to Competitions
Ask Claude:
"Submit my predictions.csv to the Titanic competition with the message 'Initial baseline model'"
Claude will use competition_submit to upload your submission.
FAQ
Common questions
Discussion
Questions & comments · 0
Sign In Sign in to leave a comment.