Kaggle MCP-Server (Model Context Protocol)
Dieses Repository enthält einen MCP-Server (Model Context Protocol) ( server.py
), der mit der Bibliothek fastmcp
erstellt wurde. Er interagiert mit der Kaggle-API und bietet Tools zum Suchen und Herunterladen von Datensätzen sowie eine Eingabeaufforderung zum Generieren von EDA-Notebooks.
Projektstruktur
server.py
: Die FastMCP-Serveranwendung. Sie definiert Ressourcen, Tools und Eingabeaufforderungen für die Interaktion mit Kaggle..env.example
: Eine Beispieldatei für Umgebungsvariablen (Kaggle-API-Anmeldeinformationen). Benennen Sie die Datei in.env
um und geben Sie Ihre Daten ein.requirements.txt
: Listet die erforderlichen Python-Pakete auf.pyproject.toml
&uv.lock
: Projektmetadaten und gesperrte Abhängigkeiten füruv
Paketmanager.datasets/
: Standardverzeichnis, in dem heruntergeladene Kaggle-Datensätze gespeichert werden.
Aufstellen
- Klonen Sie das Repository:
- Erstellen Sie eine virtuelle Umgebung (empfohlen):
- Abhängigkeiten installieren: Verwenden von pip:Oder mit UV:
- Richten Sie die Kaggle-API-Anmeldeinformationen ein:
- Methode 1 (empfohlen): Umgebungsvariablen
- Erstellen Sie
.env
Datei - Öffnen Sie die
.env
Datei und fügen Sie Ihren Kaggle-Benutzernamen und API-Schlüssel hinzu: - Sie erhalten Ihren API-Schlüssel auf Ihrer Kaggle-Kontoseite (
Account
>API
>Create New API Token
). Dadurch wird einekaggle.json
Datei mit Ihrem Benutzernamen und Schlüssel heruntergeladen.
- Erstellen Sie
- Methode 2:
kaggle.json
-Datei- Laden Sie Ihre
kaggle.json
Datei von Ihrem Kaggle-Konto herunter. - Platzieren Sie die Datei
kaggle.json
am erwarteten Speicherort (normalerweise~/.kaggle/kaggle.json
unter Linux/macOS oderC:\Users\<Your User Name>\.kaggle\kaggle.json
unter Windows). Diekaggle
Bibliothek erkennt diese Datei automatisch, wenn die Umgebungsvariablen nicht gesetzt sind.
- Laden Sie Ihre
- Methode 1 (empfohlen): Umgebungsvariablen
Ausführen des Servers
- Stellen Sie sicher, dass Ihre virtuelle Umgebung aktiv ist.
- Führen Sie den MCP-Server aus:Der Server wird gestartet und registriert seine Ressourcen, Tools und Eingabeaufforderungen. Sie können über einen MCP-Client oder kompatible Tools mit ihm interagieren.
Ausführen des Docker-Containers
1. Kaggle-API-Anmeldeinformationen einrichten
Für den Zugriff auf Kaggle-Datensätze sind für dieses Projekt Kaggle-API-Anmeldeinformationen erforderlich.
- Gehen Sie zu https://www.kaggle.com/settings und klicken Sie auf „Neues API-Token erstellen“, um Ihre
kaggle.json
Datei herunterzuladen. - Öffnen Sie die Datei
kaggle.json
und kopieren Sie Ihren Benutzernamen und Schlüssel in eine neue.env
Datei im Projektstamm:
2. Erstellen Sie das Docker-Image
3. Führen Sie den Docker-Container mit Ihrer .env-Datei aus
Dadurch werden Ihre Kaggle-Anmeldeinformationen automatisch als Umgebungsvariablen in den Container geladen.
Serverfunktionen
Der Server stellt über das Model Context Protocol die folgenden Funktionen bereit:
Werkzeuge
search_kaggle_datasets(query: str)
:- Sucht auf Kaggle nach Datensätzen, die der angegebenen Abfragezeichenfolge entsprechen.
- Gibt eine JSON-Liste der 10 am besten übereinstimmenden Datensätze mit Details wie Referenz, Titel, Downloadanzahl und Datum der letzten Aktualisierung zurück.
download_kaggle_dataset(dataset_ref: str, download_path: str | None = None)
:- Lädt Dateien für einen bestimmten Kaggle-Datensatz herunter und entpackt sie.
dataset_ref
: Die Dataset-Kennung im Formatusername/dataset-slug
(z. B.kaggle/titanic
).download_path
(optional): Gibt an, wohin der Datensatz heruntergeladen werden soll. Wenn dieser Pfad weggelassen wird, wird standardmäßig./datasets/<dataset_slug>/
relativ zum Speicherort des Serverskripts verwendet.
Eingabeaufforderungen
generate_eda_notebook(dataset_ref: str)
:- Generiert eine für ein KI-Modell (wie Gemini) geeignete Eingabeaufforderung, um ein grundlegendes EDA-Notebook (Exploratory Data Analysis) für die angegebene Kaggle-Datensatzreferenz zu erstellen.
- Die Eingabeaufforderung verlangt Python-Code zum Laden von Daten, zur Überprüfung fehlender Werte, zu Visualisierungen und zu grundlegenden Statistiken.
Verbindung zu Claude Desktop herstellen
Gehen Sie zu Claude > Einstellungen > Entwickler > Konfiguration bearbeiten > claude_desktop_config.json, um Folgendes einzuschließen:
Anwendungsbeispiel
Ein KI-Agent oder MCP-Client könnte folgendermaßen mit diesem Server interagieren:
- Agent: „Durchsuchen Sie Kaggle nach Datensätzen zum Thema ‚Herzkrankheiten‘“
- Der Server führt
search_kaggle_datasets(query='heart disease')
aus.
- Der Server führt
- Agent: „Laden Sie den Datensatz ‚user/heart-disease-dataset‘ herunter.“
- Der Server führt
download_kaggle_dataset(dataset_ref='user/heart-disease-dataset')
aus.
- Der Server führt
- Agent: „Generieren Sie eine EDA-Notebook-Eingabeaufforderung für ‚user/heart-disease-dataset‘“
- Der Server führt
generate_eda_notebook(dataset_ref='user/heart-disease-dataset')
aus. - Der Server gibt eine strukturierte Eingabeaufforderungsnachricht zurück.
- Der Server führt
- Agent: (Sendet die Eingabeaufforderung an ein Code generierendes Modell) -> Empfängt EDA-Python-Code.
local-only server
The server can only run on the client's local machine because it depends on local resources.
Es interagiert mit der Kaggle-API, um Tools zum Suchen und Herunterladen von Datensätzen sowie eine Eingabeaufforderung zum Generieren von EDA-Notebooks bereitzustellen.
Related MCP Servers
- -securityAlicense-qualityAllows you to explore and manipulate kintone data using AI tools such as Claude Desktop!Last updated -9GoMIT License
- AsecurityAlicenseAqualityAllows the use of Kagi's API for web searching and content enrichment through methods like fastgpt, enrich/web, and enrich/news.Last updated -32PythonMIT License
- AsecurityAlicenseAqualityThis server facilitates interaction with Keboola's Storage API, enabling users to browse and manage project buckets, tables, and components efficiently through Claude Desktop.Last updated -767PythonMIT License
- AsecurityAlicenseAqualityEnables integration with Kibela API for searching and retrieving notes, allowing LLMs to interact with Kibela content seamlessly.Last updated -3316TypeScriptMIT License