SingleStore
officielInteragir avec la plateforme de base de données SingleStore
Que pouvez-vous faire avec SingleStore MCP ?
- Obtenez vos informations utilisateur et organisation — demandez à l’assistant de récupérer les détails de votre compte avec
get_user_infoetorganization_info. - Gérez les espaces de travail — listez, créez, reprenez ou terminez des espaces de travail à l’aide de
workspaces_info,create_starter_workspace,resume_workspaceetterminate_starter_workspace. - Exécutez des requêtes SQL sur un espace de travail — exécutez du SQL sur un espace de travail connecté en fournissant la requête et les détails de connexion via
run_sql. - Créez et planifiez des notebooks — construisez des notebooks avec
create_notebook_file, téléchargez des fichiers avecupload_notebook_fileet planifiez des tâches aveccreate_job_from_notebook. - Gérez les fichiers Stage — listez, téléchargez, déplacez et supprimez des fichiers dans les déploiements Stage à l’aide de
stage_list_files,stage_upload_file,stage_moveetstage_delete.
Documentation
Serveur MCP SingleStore
Le [Model Context Protocol]((https://modelcontextprotocol.io/introduction) (MCP) est un protocole standardisé conçu pour gérer le contexte entre les grands modèles de langage (LLM) et les systèmes externes. Ce dépôt fournit un installateur et un serveur MCP pour SingleStore, permettant une intégration transparente.
Avec MCP, vous pouvez utiliser Claude Desktop, Claude Code, Cursor ou tout client MCP compatible pour interagir avec SingleStore en langage naturel, ce qui facilite la réalisation d'opérations complexes sans effort.
💡 Astuce de pro : Vous ne savez pas ce que le serveur MCP peut faire ? Appelez simplement l'invite /help dans votre chat !
Prérequis
- Python >= v3.10.0
- uvx installé dans votre environnement Python
- VS Code, Cursor, Windsurf, Claude Desktop, Claude Code, Goose ou tout autre client MCP
Pour commencer
Tout d'abord, installez le serveur MCP SingleStore avec votre client.
La configuration standard fonctionne dans la plupart des outils :
{
"mcpServers": {
"singlestore-mcp-server": {
"command": "uvx",
"args": [
"singlestore-mcp-server",
"start"
]
}
}
}
Aucune clé API, jeton ou variable d'environnement requis ! Le serveur gère automatiquement l'authentification via OAuth par navigateur au démarrage.
Claude Desktop
Configuration automatique :
uvx singlestore-mcp-server init --client=claude-desktop
Configuration manuelle : Suivez le guide d'installation MCP, utilisez la configuration standard ci-dessus.
Claude Code
Configuration automatique :
uvx singlestore-mcp-server init --client=claude-code
Cela exécutera automatiquement la commande CLI Claude pour vous.
Configuration manuelle :
claude mcp add singlestore-mcp-server uvx singlestore-mcp-server start
Cursor
Configuration automatique :
uvx singlestore-mcp-server init --client=cursor
Configuration manuelle :
Allez dans Cursor Settings -> MCP -> Add new MCP Server. Nommez à votre convenance, utilisez le type command avec la commande uvx singlestore-mcp-server start. Vous pouvez également vérifier la configuration ou ajouter des arguments de ligne de commande en cliquant sur Edit.
VS Code
Configuration automatique :
uvx singlestore-mcp-server init --client=vscode
Configuration manuelle : Suivez le guide d'installation MCP, utilisez la configuration standard ci-dessus. Vous pouvez également installer en utilisant la CLI VS Code :
code --add-mcp '{"name":"singlestore-mcp-server","command":"uvx","args":["singlestore-mcp-server","start"]}'
Après l'installation, le serveur MCP SingleStore sera disponible pour une utilisation avec votre agent GitHub Copilot dans VS Code.
Windsurf
Configuration automatique :
uvx singlestore-mcp-server init --client=windsurf
Configuration manuelle : Suivez la documentation MCP de Windsurf. Utilisez la configuration standard ci-dessus.
Gemini CLI
Configuration automatique :
uvx singlestore-mcp-server init --client=gemini
Configuration manuelle : Suivez le guide d'installation MCP, utilisez la configuration standard ci-dessus.
LM Studio
Configuration automatique :
uvx singlestore-mcp-server init --client=lm-studio
Configuration manuelle :
Allez dans Program dans la barre latérale droite -> Install -> Edit mcp.json. Utilisez la configuration standard ci-dessus.
Goose
Configuration manuelle uniquement :
Allez dans Advanced settings -> Extensions -> Add custom extension. Nommez à votre convenance, utilisez le type STDIO, et définissez le command sur uvx singlestore-mcp-server start. Cliquez sur "Ajouter une extension".
Qodo Gen
Configuration manuelle uniquement : Ouvrez le panneau de chat Qodo Gen dans VSCode ou IntelliJ → Connecter plus d'outils → + Ajouter un nouveau MCP → Collez la configuration standard ci-dessus.
Cliquez sur Enregistrer.
Utilisation de Docker
REMARQUE : Une clé API est requise lors de l'utilisation de Docker car le flux OAuth n'est pas pris en charge pour les serveurs exécutés dans des conteneurs Docker.
{
"mcpServers": {
"singlestore-mcp-server": {
"command": "docker",
"args": [
"run", "-i", "--rm", "--init", "--pull=always",
"-e", "MCP_API_KEY=your_api_key_here",
"singlestore/mcp-server-singlestore"
]
}
}
}
Vous pouvez construire l'image Docker vous-même :
docker build -t singlestore/mcp-server-singlestore .
Pour une meilleure sécurité, nous recommandons d'utiliser Docker Desktop pour configurer le serveur MCP SingleStore — consultez cet article de blog pour plus de détails sur le nouveau catalogue MCP de Docker.
Composants
Outils
Le serveur implémente les outils suivants :
-
get_user_info : Récupère les détails de l'utilisateur actuel
- Aucun argument requis
- Renvoie les informations et détails de l'utilisateur
-
organization_info : Récupère les détails de l'organisation actuelle de l'utilisateur
- Aucun argument requis
- Renvoie les détails de l'organisation
-
choose_organization : Choisir parmi les organisations disponibles (disponible uniquement lorsque la variable d'environnement de clé API n'est pas définie)
- Aucun argument requis
- Renvoie une liste des organisations disponibles parmi lesquelles choisir
-
set_organization : Définir l'organisation active (disponible uniquement lorsque la variable d'environnement de clé API n'est pas définie)
- Arguments :
organization_id(chaîne) - Définit l'organisation spécifiée comme active
- Arguments :
-
workspace_groups_info : Récupère les détails des groupes d'espaces de travail accessibles à l'utilisateur
- Aucun argument requis
- Renvoie les détails des groupes d'espaces de travail
-
workspaces_info : Récupère les détails des espaces de travail dans un groupe d'espaces de travail spécifique
- Arguments :
workspace_group_id(chaîne) - Renvoie les détails des espaces de travail
- Arguments :
-
resume_workspace : Reprendre un espace de travail suspendu
- Arguments :
workspace_id(chaîne) - Reprend l'espace de travail spécifié
- Arguments :
-
list_starter_workspaces : Lister tous les espaces de travail de démarrage accessibles à l'utilisateur
- Aucun argument requis
- Renvoie les détails des espaces de travail de démarrage disponibles
-
create_starter_workspace : Créer un nouvel espace de travail de démarrage
- Arguments : paramètres de configuration de l'espace de travail
- Renvoie les détails de l'espace de travail de démarrage créé
-
terminate_starter_workspace : Terminer un espace de travail de démarrage existant
- Arguments :
workspace_id(chaîne) - Termine l'espace de travail de démarrage spécifié
- Arguments :
-
list_regions : Récupère une liste de toutes les régions prenant en charge les espaces de travail
- Aucun argument requis
- Renvoie une liste des régions disponibles
-
list_sharedtier_regions : Récupère une liste des régions de niveau partagé
- Aucun argument requis
- Renvoie une liste des régions de niveau partagé
-
run_sql : Exécuter des opérations SQL sur un espace de travail connecté
- Arguments :
workspace_id,database,sql_queryet paramètres de connexion - Renvoie les résultats de la requête SQL dans un format structuré
- Arguments :
-
create_notebook_file : Créer un nouveau fichier notebook dans SingleStore Spaces
- Arguments :
notebook_name,content(optionnel) - Renvoie les détails du notebook créé
- Arguments :
-
upload_notebook_file : Téléverser un fichier notebook vers SingleStore Spaces
- Arguments :
file_path,notebook_name - Renvoie les détails du notebook téléversé
- Arguments :
-
create_job_from_notebook : Créer un travail planifié à partir d'un notebook
- Arguments : configuration du travail incluant
notebook_path,schedule_mode, etc. - Renvoie les détails du travail créé
- Arguments : configuration du travail incluant
-
get_job : Récupérer les détails d'un travail existant
- Arguments :
job_id(chaîne) - Renvoie les détails du travail spécifié
- Arguments :
-
delete_job : Supprimer un travail existant
- Arguments :
job_id(chaîne) - Supprime le travail spécifié
- Arguments :
-
stage_list_files : Lister les fichiers et dossiers dans le système de fichiers d'un déploiement Stage
- Arguments :
deployment_id(chaîne),path(chaîne, optionnel) - Renvoie le contenu du dossier incluant les fichiers et sous-dossiers
- Arguments :
-
stage_get_file : Obtenir un fichier de Stage par chemin
- Arguments :
deployment_id(chaîne),path(chaîne),return_type(chaîne : 'metadata', 'url' ou 'content') - Renvoie les métadonnées du fichier, une URL de téléchargement ou le contenu texte
- Arguments :
-
stage_create_folder : Créer un dossier dans Stage
- Arguments :
deployment_id(chaîne),path(chaîne) - Renvoie le statut de création
- Arguments :
-
stage_upload_file : Téléverser un fichier vers Stage avec du contenu texte
- Arguments :
deployment_id(chaîne),path(chaîne),content(chaîne),local_path(chaîne) - Renvoie le statut du téléversement
- Arguments :
-
stage_move : Déplacer ou renommer un fichier ou dossier dans Stage
- Arguments :
deployment_id(chaîne),source_path(chaîne),destination_path(chaîne) - Renvoie le statut du déplacement
- Arguments :
-
stage_delete : Supprimer un fichier ou dossier de Stage
- Arguments :
deployment_id(chaîne),path(chaîne) - Renvoie le statut de suppression
- Arguments :
Remarque : Les outils de gestion d'organisation (choose_organization et set_organization) sont uniquement disponibles lorsque la variable d'environnement de clé API n'est pas définie, permettant une sélection interactive de l'organisation lors de l'authentification OAuth.
Développement
Prérequis
- Python >= 3.11
- uv pour la gestion des dépendances
Configuration
- Cloner le dépôt :
git clone https://github.com/singlestore-labs/mcp-server-singlestore.git
cd mcp-server-singlestore
- Installer les dépendances :
uv sync --dev
- Configurer les hooks de pré-commit (optionnel mais recommandé) :
uv run pre-commit install
Flux de travail de développement
# Quick quality checks (fast feedback)
./scripts/check.sh
# Run tests independently
./scripts/test.sh
# Comprehensive validation (before PRs)
./scripts/check-all.sh
# Create and publish releases
./scripts/release.sh
Exécution des tests
# Run test suite with coverage
./scripts/test.sh
# Or use pytest directly
uv run pytest
uv run pytest --cov=src --cov-report=html
Qualité du code
Nous utilisons Ruff pour le linting et le formatage :
# Format code
uv run ruff format src/ tests/
# Lint code
uv run ruff check src/ tests/
# Lint and fix issues automatically
uv run ruff check --fix src/ tests/
Processus de publication
Les versions sont gérées via des tags git et une publication automatisée sur PyPI :
- Créer une version :
./scripts/release.sh(outil interactif) - Publication automatique : Déclenchée par le push des tags de version
- Pas de téléversements manuels sur PyPI - pipeline entièrement automatisé
Consultez scripts/dev-workflow.md pour une documentation détaillée du flux de travail.