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.
- 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
- Python 3.10 or higher
- A Kaggle account with API credentials
git clone https://github.com/Seif-Sameh/Kaggle-mcp.git
cd Kaggle-mcp- Go to https://www.kaggle.com/account
- Scroll to the "API" section
- Click "Create New Token"
- This downloads
kaggle.jsonwith your credentials
Option A: Environment Variables (Recommended)
export KAGGLE_USERNAME=your_username
export KAGGLE_API_KEY=your_api_keyOr add to your ~/.zshrc or ~/.bashrc:
echo 'export KAGGLE_USERNAME=your_username' >> ~/.zshrc
echo 'export KAGGLE_API_KEY=your_api_key' >> ~/.zshrc
source ~/.zshrcOption B: Using .env File
Create a .env file in your project directory:
KAGGLE_USERNAME=your_username
KAGGLE_API_KEY=your_api_keyThe 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": "uv",
"args": [
"--directory",
"/ABSOLUTE/PATH/TO/Kaggle-mcp",
"run",
"kaggle_mcp/server.py"
],
"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"
Run the MCP server directly:
kaggle-mcpOr as a Python module:
python -m kaggle_mcp| 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 |
| 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 |
| 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 |
| 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 |
Ask Claude:
"List active Kaggle competitions about computer vision"
Claude will use the competitions_list tool to search and display relevant competitions.
Ask Claude:
"Download the Titanic dataset to my Downloads folder"
Claude will use dataset_download_files to fetch all dataset files.
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.
This project is licensed under the MIT License - see the LICENSE file for details.