Skip to main content
Glama

A full-featured MCP server for the Kaggle API — competitions, datasets, kernels, models, benchmarks, and discussions.

PyPI License: MIT GitHub stars GitHub last commit

English | 中文

Why kaggle-mcp?

Kaggle provides an official remote MCP server (https://www.kaggle.com/mcp) covering competitions, datasets, notebooks, models, and benchmarks — a solid foundation for most Kaggle workflows.

kaggle-mcp extends that foundation with what the official server is missing: 10 discussion tools. You can search discussions, browse by source type, filter competition discussions by recency, read solution write-ups, explore trending topics, and more — none of which are available in the official MCP.

It also runs locally over stdio, so there's no remote MCP dependency and no npx mcp-remote required.

Use kaggle-mcp if you need discussion tools or prefer a local stdio setup without remote dependencies. Use the official MCP if you prefer OAuth 2.0 auth or want zero local installation.

Quick Navigation

Section

Description

Prerequisites

Kaggle API token setup

Installation

uvx / pip / source

Configuration

Claude Desktop, Claude Code, VS Code, Cursor

Tools (51)

Competitions, Datasets, Kernels, Models, Benchmarks, Discussions

Debugging

MCP Inspector

Development

Local development setup

Prerequisites

A Kaggle API token is required. You can authenticate using either method:

  1. Go to https://www.kaggle.com/settings → API → Create New API Token

  2. Set the environment variable:

export KAGGLE_API_TOKEN="KGAT_xxxxxxxxxxxx"

Download the token file from Kaggle settings, it will be saved to ~/.kaggle/kaggle.json:

{"username": "your_username", "key": "your_api_key"}

Installation

Note: MCP servers are launched automatically by MCP clients (Claude Code, VS Code, etc.) — you don't need to run them manually in the terminal. The commands below are what the client uses under the hood.

No installation needed. uvx will automatically download and run the server:

# Used by MCP clients internally; no need to run this yourself
uvx kaggle-mcp-server

Using pip

pip install kaggle-mcp-server

From source

git clone https://github.com/Galaxy-Dawn/kaggle-mcp.git
cd kaggle-mcp
uv sync

Configuration

Claude Desktop

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "kaggle": {
      "command": "uvx",
      "args": ["kaggle-mcp-server"],
      "env": {
        "KAGGLE_API_TOKEN": "KGAT_xxxxxxxxxxxx"
      }
    }
  }
}
{
  "mcpServers": {
    "kaggle": {
      "command": "python",
      "args": ["-m", "kaggle_mcp.server"],
      "env": {
        "KAGGLE_API_TOKEN": "KGAT_xxxxxxxxxxxx"
      }
    }
  }
}

Claude Code

claude mcp add kaggle -- uvx kaggle-mcp-server

Or add to your project's .mcp.json (not settings.json):

{
  "mcpServers": {
    "kaggle": {
      "command": "uvx",
      "args": ["kaggle-mcp-server"],
      "env": {
        "KAGGLE_API_TOKEN": "KGAT_xxxxxxxxxxxx"
      }
    }
  }
}

VS Code

Install with UV in VS Code Install with UV in VS Code Insiders

Add to .vscode/mcp.json (note: the key is "servers", not "mcpServers"):

{
  "servers": {
    "kaggle": {
      "command": "uvx",
      "args": ["kaggle-mcp-server"],
      "env": {
        "KAGGLE_API_TOKEN": "KGAT_xxxxxxxxxxxx"
      }
    }
  }
}

Cursor

Add to .cursor/mcp.json:

{
  "mcpServers": {
    "kaggle": {
      "command": "uvx",
      "args": ["kaggle-mcp-server"],
      "env": {
        "KAGGLE_API_TOKEN": "KGAT_xxxxxxxxxxxx"
      }
    }
  }
}

Tip: If you already have KAGGLE_API_TOKEN in your shell environment (e.g. in .bashrc or .zshrc), you can omit the "env" block.

Tools (51)

Competitions (10)

Tool

Description

competitions_list

Search and list Kaggle competitions

competition_files

List data files for a competition

competition_download

Download competition data files

competition_submit

Submit predictions to a competition

competition_submissions

View submission history

competition_leaderboard

View leaderboard (top 20)

competition_get

Get detailed competition info

competition_data_summary

Get data files summary

competition_get_submission

Get details for a single submission

competition_leaderboard_download

Download full leaderboard as CSV

  1. competitions_listsearch, category, sort_by (latestDeadline/numberOfTeams/recentlyCreated), page

  2. competition_filescompetition (URL suffix, e.g. titanic)

  3. competition_downloadcompetition, file_name (optional, empty = all files) → download URL

  4. competition_submitcompetition, blob_file_tokens, message

  5. competition_submissionscompetition

  6. competition_leaderboardcompetition → top 20 teams and scores

  7. competition_getcompetition → full details (deadline, reward, evaluation metric, etc.)

  8. competition_data_summarycompetition → data files summary dict

  9. competition_get_submissioncompetition, submission_id (integer)

  10. competition_leaderboard_downloadcompetition → download URL for full leaderboard CSV

Datasets (11)

Tool

Description

datasets_list

Search and list Kaggle datasets

dataset_files

List files in a dataset

dataset_download

Download dataset files

dataset_metadata

Get dataset metadata

dataset_create

Create a new dataset

file_upload

Upload a file to Kaggle

dataset_get

Get full dataset information

dataset_create_version

Create a new dataset version

dataset_update_metadata

Update dataset title/description

dataset_delete

Delete a dataset

dataset_download_file

Download a single file from a dataset

  1. datasets_listsearch, sort_by (hottest/votes/updated/active), file_type, page

  2. dataset_filesowner, dataset_slug

  3. dataset_downloadowner, dataset_slug, file_name (optional) → download URL

  4. dataset_metadataowner, dataset_slug → metadata dict

  5. dataset_createowner, slug, title, file_tokens (from file_upload), license_name, is_private

  6. file_uploadfile_name, content → file token for use in dataset_create

  7. dataset_getowner, dataset_slug → full dataset details

  8. dataset_create_versionowner, dataset_slug, version_notes, file_tokens

  9. dataset_update_metadataowner, dataset_slug, title, description

  10. dataset_deleteowner, dataset_slug

  11. dataset_download_fileowner, dataset_slug, file_name → download URL

Kernels (9)

Tool

Description

kernels_list

Search and list notebooks/kernels

kernel_pull

Get a notebook's source code

kernel_push

Push/save a notebook to Kaggle

kernel_output

Get kernel output download URL

kernel_session_create

Create an interactive kernel session

kernel_session_status

Get kernel session execution status

kernel_session_output

List output files from a kernel session

kernel_session_cancel

Cancel a running kernel session

competition_top_kernels

List top public kernels for a competition sorted by score

  1. kernels_listsearch, competition, dataset, sort_by (hotness/commentCount/dateCreated/dateRun/relevance/voteCount), page

  2. kernel_pulluser_name, kernel_slug → metadata + source code

  3. kernel_pushtitle, text, language (python/r), kernel_type (notebook/script), is_private

  4. kernel_outputuser_name, kernel_slug → download URL

  5. kernel_session_createuser_name, kernel_slug → session details

  6. kernel_session_statususer_name, kernel_slug → status + failure message if any

  7. kernel_session_outputuser_name, kernel_slug → list of output files with URLs

  8. kernel_session_canceluser_name, kernel_slug

  9. competition_top_kernelscompetition, sort_by (scoreDescending/scoreAscending/voteCount/hotness/dateCreated/dateRun/commentCount), page_size — Note: Kaggle API does not expose score values for active competitions; scores are extracted from notebook titles where authors include them (e.g. [0.371], LB:0.95)

Models (10)

Tool

Description

models_list

Search and list Kaggle models

model_get

Get detailed model information

model_create

Create a new model

model_update

Update model metadata

model_delete

Delete a model

model_instances_list

List all instances of a model

model_instance_get

Get a specific model instance

model_instance_create

Create a new model instance

model_instance_versions

List versions of a model instance

model_instance_version_create

Create a new model instance version

  1. models_listsearch, owner, sort_by (hotness/downloadCount/createTime/updateTime), page_size

  2. model_getowner, model_slug

  3. model_createowner, slug, title, subtitle, is_private, description

  4. model_updateowner, model_slug, title, subtitle, description

  5. model_deleteowner, model_slug

  6. model_instances_listowner, model_slug

  7. model_instance_getowner, model_slug, framework, instance_slug

  8. model_instance_createowner, model_slug, framework, instance_slug, license_name, is_private

  9. model_instance_versionsowner, model_slug, framework, instance_slug

  10. model_instance_version_createowner, model_slug, framework, instance_slug, version_notes, file_tokens

Benchmarks (1)

Tool

Description

benchmark_leaderboard

Get benchmark leaderboard

  1. benchmark_leaderboardowner_slug, benchmark_slug, version_number (optional, default 0)

Discussions (10)

Tool

Description

discussions_search

Search Kaggle discussions

discussions_list

List discussions for a competition/dataset

discussion_detail

Get discussion content by ID

discussion_comments

Get comments for a discussion

discussion_comments_search

Search comments across all discussions

discussions_by_source

Browse discussions by source type

discussions_solutions

Browse competition solution write-ups

discussions_writeups

Browse Kaggle write-ups by type

discussions_trending

Browse trending discussions

discussions_my

List the current user's discussions

  1. discussions_searchquery, sort_by (hotness/votes/comments/created/updated), source_type, page_size

  2. discussions_listcompetition, dataset, page_size, since_hours (filter to last N hours), new_only (filter by createTime vs updateTime)

  3. discussion_detaildiscussion_id (integer), competition (recommended for accuracy)

  4. discussion_commentsdiscussion_id, page_size

  5. discussion_comments_searchquery, page_size

  6. discussions_by_sourcesource_type (competition/dataset/kernel/site_forum/competition_solution/model/write_up/learn_track/benchmark/benchmark_task), query, sort_by, page_size

  7. discussions_solutionscompetition (optional slug), sort_by, page_size

  8. discussions_writeupswrite_up_type (knowledge/competition_solution/hackathon/personal_project/forum_topic/blog), query, page_size

  9. discussions_trendingsource_type (optional), page_size

  10. discussions_mypage_size

Debugging

You can use the MCP Inspector to debug the server:

npx @modelcontextprotocol/inspector uvx kaggle-mcp-server

The Inspector will provide a URL to access debugging tools in your browser.

Development

git clone https://github.com/Galaxy-Dawn/kaggle-mcp.git
cd kaggle-mcp
uv sync

Then configure the server in your MCP client using the local path, or test with MCP Inspector.

Contributing

Contributions are welcome! Please open an issue or submit a pull request on the GitHub repository.

License

This project is licensed under the MIT License. See the LICENSE file for details.

Install Server
A
license - permissive license
B
quality
C
maintenance

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

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/Galaxy-Dawn/kaggle-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server