mcp-kaggle-tool
Integrates with Kaggle API to create, run, and manage Kaggle notebooks; search datasets and competitions; download outputs; and monitor execution status.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-kaggle-toolcreate a notebook titled 'My ARC Experiment' with GPU enabled"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
mcp-kaggle-tool
MCP server for Kaggle API integration - create, run, and manage Kaggle notebooks programmatically.
🚀 Features
✅ Authentication check for Kaggle API
📝 Create and manage Kaggle notebooks
🏃 Run notebooks with GPU support
📊 Search datasets and competitions
💾 Download notebook outputs
🔍 Monitor execution status
Related MCP server: Jupyter MCP Server
📋 Prerequisites
Kaggle Account: You need a Kaggle account
Kaggle API Token:
Click "Create New API Token"
Save the downloaded
kaggle.jsonto~/.kaggle/
Kaggle CLI: Install the Kaggle CLI:
pip install kaggle
🛠️ Installation
From npm (when published)
npm install -g mcp-kaggle-toolFrom source
git clone https://github.com/yourusername/mcp-kaggle-tool.git
cd mcp-kaggle-tool
npm install
npm run build🔧 Configuration
For Claude Desktop
Add to your Claude Desktop configuration (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):
{
"mcpServers": {
"kaggle": {
"command": "npx",
"args": ["mcp-kaggle-tool"]
}
}
}Or if running from source:
{
"mcpServers": {
"kaggle": {
"command": "node",
"args": ["/path/to/mcp-kaggle-tool/dist/index.js"]
}
}
}📚 Available Tools
Authentication
kaggle_auth_check- Verify Kaggle API credentials are configured
Notebooks
kaggle_list_notebooks- List your Kaggle notebookskaggle_create_notebook- Create a new notebook with codekaggle_run_notebook- Execute a notebookkaggle_get_notebook_status- Check execution statuskaggle_download_notebook_output- Download notebook outputs
Data & Competitions
kaggle_search_datasets- Search for datasetskaggle_list_competitions- List active competitions
💡 Usage Examples
Check Authentication
Use kaggle_auth_check to verify your credentials are set upCreate and Run a Notebook
1. Create a notebook with kaggle_create_notebook:
- title: "My ARC Experiment"
- code: "print('Hello from Kaggle!')"
- enableGpu: true
2. Monitor with kaggle_get_notebook_status
3. Download results with kaggle_download_notebook_outputSearch ARC Dataset
Use kaggle_search_datasets with search: "abstraction reasoning corpus"🚧 Development
# Install dependencies
npm install
# Build TypeScript
npm run build
# Run in development
npm run dev
# Run tests
npm test
# Lint code
npm run lint📝 License
MIT License - see LICENSE file for details.
🤝 Contributing
Contributions welcome! Please open an issue or submit a PR.
🐛 Known Issues
Kaggle API sometimes returns HTML instead of JSON for certain commands
Notebook execution status may take time to update
GPU availability depends on Kaggle quota
🔗 Resources
Available Tools
8 toolskaggle_auth_checkA
Check if Kaggle API credentials are configured
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description only states it 'checks if credentials are configured' without disclosing what happens if not configured, whether the operation is truly read-only, or any output format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that is front-loaded and contains no extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple auth check tool, the description lacks details about the response format or behavior, such as whether it returns a boolean or raises an error. Some context is missing despite the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has no parameters, so schema coverage is trivially 100%. The description adds value by confirming the purpose of checking credentials, which is the entire functionality.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Check' and identifies the resource 'Kaggle API credentials are configured', clearly distinguishing it from sibling tools which perform actions like creating, downloading, listing, etc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage before other Kaggle operations but does not provide explicit guidance on when to use, when not to use, or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kaggle_create_notebookB
Create a new Kaggle notebook
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Notebook title | |
| code | Yes | Python code for the notebook | |
| language | No | Programming language (python or r) | python |
| isPrivate | No | Make notebook private | |
| enableGpu | No | Enable GPU acceleration | |
| enableInternet | No | Enable internet access | |
| datasetSources | No | Dataset slugs to attach (e.g., ["username/dataset-name"]) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It only states 'Create a new Kaggle notebook' but omits critical behavioral details such as what happens after creation, authentication requirements, or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise at one sentence, but it is too minimal for a tool with 7 parameters. It could be structured to provide a brief overview of what each parameter achieves.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (7 parameters, no annotations, no output schema), the description is severely incomplete. It fails to indicate what the tool returns or how creation is confirmed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents each parameter. The description adds no extra meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Create a new Kaggle notebook' uses a specific verb and resource, and it clearly distinguishes this tool from siblings like kaggle_run_notebook (runs an existing notebook) and kaggle_get_notebook_status (checks status).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. It does not mention prerequisites, or cases where siblings would be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kaggle_download_notebook_outputC
Download the output of a completed notebook
| Name | Required | Description | Default |
|---|---|---|---|
| kernelSlug | Yes | Notebook identifier (username/notebook-slug) | |
| outputPath | No | Local directory to save outputs | ./kaggle-outputs |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations present, and the description only states the basic action without disclosing behavioral details like requirements for notebook completion, authentication, or error handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One concise sentence that efficiently states the purpose, though it could be slightly more informative without sacrificing brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema and no annotation; the description fails to mention important context such as what happens for incomplete notebooks or how output path is used. Incomplete for a download tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema covers 100% of parameters with clear descriptions, so the description adds minimal value beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Download') and resource ('output of a completed notebook'), but does not differentiate from sibling tools like kaggle_get_notebook_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool over alternatives; no context about prerequisites or exclusions provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kaggle_get_notebook_statusB
Get the status of a notebook execution
| Name | Required | Description | Default |
|---|---|---|---|
| kernelSlug | Yes | Notebook identifier (username/notebook-slug) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It fails to specify what 'status' means (e.g., possible values like pending, running, completed, failed), idempotency, or authentication requirements. This leaves uncertainty for the agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no redundancy, achieving maximum efficiency. However, it is too short to provide necessary context, which reduces its overall effectiveness. Still, it is well-structured for its length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description should provide more context about return values, possible statuses, and usage hints. It is insufficiently complete for an agent to reliably use the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single parameter, and the description adds no additional semantic information beyond the schema's 'Notebook identifier (username/notebook-slug)'. Baseline is 3, and the description does not improve it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get the status of a notebook execution' clearly states the action (get status) and resource (notebook execution). It distinguishes from siblings like kaggle_run_notebook (triggers execution) and kaggle_download_notebook_output (downloads results).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description lacks any guidance on when to use this tool. It does not mention typical use cases (e.g., after running a notebook) or alternatives like polling. The intended usage is implied but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kaggle_list_competitionsC
List Kaggle competitions
| Name | Required | Description | Default |
|---|---|---|---|
| group | No | Competition group (general, entered, inClass) | general |
| category | No | Competition category (all, featured, research, recruitment, gettingStarted, masters, playground) | all |
| sortBy | No | Sort by (grouped, prize, earliestDeadline, latestDeadline, numberOfTeams, recentlyCreated) | recentlyCreated |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, and the description does not disclose any behavioral traits such as pagination, rate limits, authentication requirements, or whether the listing is exhaustive. For a tool that likely returns a list, this lack of behavioral context is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no wasted words. It is concise, though it could be improved by front-loading key details. The brevity earns its place but does not enhance the tool's usability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite full schema coverage, the description lacks any information about the tool's output (e.g., returns a list of competition objects with fields), which is critical for an agent to use the tool effectively. Missing output schema and behavioral details make the description incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers all three parameters with descriptions (100% coverage), so the description adds no additional meaning. Baseline score of 3 is appropriate as the schema already documents the parameters adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'List' and resource 'Kaggle competitions', providing a specific verb+resource pair. However, it does not explicitly distinguish from sibling tools like kaggle_search_datasets, which could be confused for a similar competition listing operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool vs alternatives. The description lacks any when-to-use or when-not-to-use instructions, leaving the agent to infer context from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kaggle_list_notebooksB
List your Kaggle notebooks (kernels)
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: 1) | |
| pageSize | No | Page size (default: 20) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden. It indicates a read-like operation ('List') and scoping ('your'), but does not disclose whether the operation is read-only, if authentication is required, or what the response contains (e.g., metadata only). Critical behavioral traits are missing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no filler. It conveys the core purpose efficiently. However, it could include more details without becoming verbose, so not a perfect 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a list tool with no output schema, the description should at least hint at the return format (e.g., 'returns a list of notebook objects with metadata'). The current description is too sparse, leaving the agent uncertain about what it will receive. Pagination semantics are covered in the schema, but overall completeness is lacking.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear descriptions and defaults for both parameters (page, pageSize). The description adds no additional meaning beyond what the schema already provides, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('List') and the specific resource ('your Kaggle notebooks (kernels)'). It distinguishes from sibling tools like kaggle_search_datasets (public datasets) and kaggle_get_notebook_status (single notebook status) by specifying the scoping to the user's own notebooks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. The description does not mention that it only lists the authenticated user's notebooks, nor does it suggest kaggle_search_datasets for finding public notebooks. Implied usage is minimal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kaggle_run_notebookC
Run/execute a Kaggle notebook
| Name | Required | Description | Default |
|---|---|---|---|
| kernelSlug | Yes | Notebook identifier (username/notebook-slug) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, and the description fails to disclose key behaviors such as whether the execution is synchronous or asynchronous, what side effects occur, or what triggers are needed. The agent gains no behavioral insight beyond the verb 'run'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely brief (one short phrase) and front-loaded, but it is not a complete sentence. It avoids unnecessary words, yet could be slightly more verbose to improve clarity without losing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description is insufficient. It does not explain return values, execution behavior, or prerequisites, leaving the agent underinformed for a tool that likely involves non-trivial side effects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter 'kernelSlug' has a description in the schema that already explains it is a notebook identifier. The description adds no additional meaning beyond the schema, so baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (run/execute) and the resource (Kaggle notebook). It is distinct from sibling tools like create, get status, or list, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives (e.g., kaggle_get_notebook_status for checking completion). The agent must infer usage from context alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kaggle_search_datasetsC
Search for Kaggle datasets
| Name | Required | Description | Default |
|---|---|---|---|
| search | Yes | Search query | |
| page | No | Page number |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must convey behavioral traits, but it only states the basic function. Missing details like authorization needs, pagination behavior, or result format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no redundant information. Every word is functional.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having only two parameters and no output schema, the description omits critical context such as the structure of results, sorting options, or error handling. A search tool would benefit from explaining return fields.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the schema already provides descriptions for both parameters ('Search query', 'Page number'). The description adds no extra meaning beyond what the schema offers, achieving the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'search' and the resource 'Kaggle datasets', distinguishing it from siblings like 'kaggle_list_competitions' or 'kaggle_list_notebooks'. However, it lacks specificity about the search scope or filtering capabilities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. For instance, it does not contrast with other search or list tools among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
8 tool updates
v0.1.0- First observed
kaggle_auth_check - First observed
kaggle_create_notebook - First observed
kaggle_download_notebook_output - First observed
kaggle_get_notebook_status - First observed
kaggle_list_competitions - First observed
kaggle_list_notebooks - First observed
kaggle_run_notebook - First observed
kaggle_search_datasets
TDQS
Scored across 8 tools
Each tool has a clearly distinct purpose: auth check, notebook CRUD, status, output download, listing competitions/notebooks, and dataset search. No overlapping functionality.
All tools follow a consistent 'kaggle_verb_noun' pattern with underscores, making it easy to predict tool names.
With 8 tools, the server covers the main Kaggle operations (authentication, notebook lifecycle, listings, dataset search) without being too sparse or bloated.
Covers notebook lifecycle well (create, run, status, download) and includes listings for competitions and notebooks, but lacks dataset download, competition submission, and credential management beyond check.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server for building and testing AI agents with multi-model experimentation and insights.
MCP server providing access to the Scorecard API to evaluate and optimize LLM systems.
MCP Server for an Agent Task Marketplace
MCP server that lets AI assistants use all OneSchema features exposed via the public API.
Related MCP Servers
- AlicenseBqualityDmaintenanceA full-featured MCP server for the Kaggle API — competitions, datasets, kernels, models, benchmarks, and discussions.513MIT
- AlicenseAqualityDmaintenanceAI-powered MCP server for connecting and managing Jupyter Notebooks. Enables interactive code execution, multi-notebook management, and multimodal output for data analysis, visualization, and machine learning.129MIT
- AlicenseNot gradedqualityDmaintenanceA full-featured MCP server with 96 tools for the Kaggle API, enabling users to manage competitions, datasets, notebooks, models, discussions, and workflows via natural language.MIT
- AlicenseNot gradedqualityDmaintenanceAn MCP server that enables AI to connect and manage Jupyter Notebooks in real-time, with support for cell operations, execution, and multimodal outputs.BSD 3-Clause