
Kaggle
β 38from arrismo
Interact with the Kaggle API to access datasets, notebooks, and competitions.
<a href="https://glama.ai/mcp/servers/arwswog1el"><img width="380" height="200" src="https://glama.ai/mcp/servers/arwswog1el/badge" alt="Kaggle MCP Server" /></a>
Kaggle MCP Server
A Model Context Protocol (MCP) server that exposes Kaggle dataset search, download, and EDA prompt generation to MCP clients such as Claude Desktop.
Features
- Search Kaggle datasets by keyword.
- Download and unzip Kaggle datasets locally.
- Generate a starter Exploratory Data Analysis (EDA) prompt for a Kaggle dataset.
- Supports Kaggle credentials via environment variables or the standard
kaggle.jsonfile. - Runs locally, in Docker, or through Smithery.
Available MCP Capabilities
Tools
search_kaggle_datasets(query: str)
Searches Kaggle for datasets matching query and returns up to 10 results as JSON.
Returned fields include:
reftitlesubtitledownload_countlast_updatedusability_rating
download_kaggle_dataset(dataset_ref: str, download_path: str | None = None)
Downloads and unzips a Kaggle dataset.
dataset_ref: Kaggle dataset reference inowner/dataset-slugformat, for examplekaggle/titanic.download_path: Optional local output path. If omitted, files are saved to./datasets/<dataset_slug>/.
Prompts
generate_eda_notebook(dataset_ref: str)
Creates a prompt for generating basic Python EDA code for the provided Kaggle dataset reference. The prompt asks for data loading, missing-value checks, visualizations, and summary statistics.
Kaggle Credentials
Create a Kaggle API token from your Kaggle account settings:
- Go to https://www.kaggle.com/settings.
- Select Create New API Token.
- Download
kaggle.json.
Use either environment variables or the standard Kaggle config file.
Option 1: Environment variables
Create a .env file in the project root:
KAGGLE_USERNAME=your_kaggle_username
KAGGLE_KEY=your_kaggle_api_keyOption 2: kaggle.json
Place kaggle.json in the standard Kaggle location:
- macOS/Linux:
~/.kaggle/kaggle.json - Windows:
C:\Users\<Your User Name>\.kaggle\kaggle.json
On macOS/Linux, make sure the file is not world-readable:
chmod 600 ~/.kaggle/kaggle.jsonDocker
Build the image:
docker build -t kaggle-mcp .Run with credentials from .env:
docker run --rm -i --env-file .env kaggle-mcpSmithery
This repository includes smithery.yaml. Smithery starts the server over stdio and passes these configuration values as environment variables:
kaggleUsername->KAGGLE_USERNAMEkaggleKey->KAGGLE_KEY
Example Workflow
- Ask your MCP client: "Search Kaggle for heart disease datasets."
- The client calls
search_kaggle_datasets. - Choose a dataset reference from the results, for example
user/heart-disease-dataset. - Ask: "Download
user/heart-disease-dataset." - Ask: "Generate an EDA notebook prompt for
user/heart-disease-dataset."
Project Structure
.
βββ Dockerfile
βββ README.md
βββ pyproject.toml
βββ requirements.txt
βββ smithery.yaml
βββ src/
β βββ __init__.py
β βββ server.py
βββ uv.lockDownloaded datasets are saved under datasets/ by default. This directory is created at runtime when downloads are requested.
uv syncBefore it works, you'll need: KAGGLE_USERNAMEKAGGLE_KEY
Requirements
- Python 3.10+
- Kaggle account and API token
- An MCP-compatible client
Installation
git clone <repository-url>
cd kaggle-mcpCreate and activate a virtual environment:
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activateInstall dependencies with one of the following methods.
Using uv
uv syncUsing pip
pip install -r requirements.txtRunning Locally
With uv:
uv run kaggle-mcpOr run the server module directly:
python src/server.pyThe server communicates over MCP stdio and is intended to be launched by an MCP client.
Claude Desktop Configuration
Open Claude Desktop settings, then go to Developer > Edit Config and add this server to claude_desktop_config.json.
If installed in the project environment:
{
"mcpServers": {
"kaggle-mcp": {
"command": "uv",
"args": ["run", "kaggle-mcp"],
"cwd": "/absolute/path/to/kaggle-mcp",
"env": {
"KAGGLE_USERNAME": "your_kaggle_username",
"KAGGLE_KEY": "your_kaggle_api_key"
}
}
}
}If using kaggle.json, you can omit the env block.
No common issues documented yet. If you hit a problem, the repository's GitHub Issues page is the best place to look.
Licensed under MITβ you can use, modify, and redistribute it under that license's terms.