Kaggle MCP (Model Context Protocol) Server
LocalAbout Kaggle MCP (Model Context Protocol) Server
Kaggle MCP Server is an MCP server that exposes Kaggle dataset search, download, and EDA prompt generation to clients such as Claude Desktop. It suits users who want to find datasets and start exploratory analysis from an MCP client.
Key features
- 01Keyword search for Kaggle datasets
- 02Download and unzip datasets locally
- 03Starter EDA prompt generation
- 04Credentials via environment variables or kaggle.json
- 05Runs locally, in Docker, or through Smithery
Use cases
- 01Finding and downloading datasets for modeling
- 02Asking an AI assistant for an EDA plan on a given dataset
MCP support
This project is an MCP server that provides the search_kaggle_datasets and download_kaggle_dataset tools and the generate_eda_notebook prompt over MCP stdio.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
We haven’t collected a package or remote endpoint for this server. Follow the instructions in the project README.
Tools
Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.
Details
From the project READMEKaggle 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.
Requirements
- Python 3.10+
- Kaggle account and API token
- An MCP-compatible client
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_key
Option 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.json
Installation
git clone <repository-url>
cd kaggle-mcp
Create and activate a virtual environment:
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
Install dependencies with one of the following methods.
Using uv
uv sync
Using pip
pip install -r requirements.txt
Running Locally
With uv:
uv run kaggle-mcp
Or run the server module directly:
python src/server.py
The 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.
Docker
Build the image:
docker build -t kaggle-mcp .
Run with credentials from .env:
docker run --rm -i --env-file .env kaggle-mcp
Smithery
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.lock
Downloaded datasets are saved under datasets/ by default. This directory is created at runtime when downloads are requested.
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.