sspcloud-mcp
Click on "Deploy 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., "@sspcloud-mcppush my repo and run the training script on a GPU"
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.
sspcloud-mcp — Agent Compute pour SSPCloud / Onyxia
▶ Présentation produit · Installer · Pour un agent IA · Changelog
Serveur MCP qui donne à un agent LLM (Claude Desktop, Claude Code, tout client MCP) un poste de travail distant sur SSPCloud : pousser un repo (local ou GitHub) dans un pod, écrire / exécuter / tester / évaluer du code, exploiter le GPU et des kernels Jupyter à état persistant, déployer des services, rapatrier les livrables — le tout piloté par des outils MCP.
Pourquoi
SSPCloud (Onyxia, INSEE) offre du calcul GPU gratuit, mais un agent LLM ne peut pas s'en servir seul :
Un utilisateur SSPCloud standard a la policy
stsonly→ aucun droitkubectl(même en lecture dans son propre namespace) et l'API OnyxiaPUT /my-lab/appest bloquée. Un agent ne peut donc ni lancer ni piloter un pod pour ce compte.Les pods Onyxia sont éphémères, sans port entrant, sans IP publique.
sspcloud-mcp lève ces verrous : il s'exécute avec un contexte admin (kubectl/helm
dans un namespace disposant des droits), lance/scale les pods, et pilote leur kernel
Jupyter — exposant tout cela à l'agent sous forme d'outils simples et bornés.
C'est précisément ce qui manque quand un agent dit « il faut lancer un service GPU depuis l'interface Onyxia, je ne peux pas le faire à ta place ».
Related MCP server: Ambient Code Platform MCP Server
Modes d'utilisation — quel mode pour qui
Mode | Pour qui | Comment | Mobile |
Hébergé durable (recommandé) | tout collègue | catalogue Onyxia en un clic, ou | oui |
Local (stdio) | admin / power-user avec droits kubectl |
| non |
L'hébergé durable est le mode « produit » : chacun lance son service dans son namespace, comme Deployment (redémarrage auto, jamais auto-suspendu), exposé en HTTPS/OAuth, utilisable depuis Claude Desktop et l'app mobile. Le serveur agit avec un ServiceAccount
edit; aucun droit kubectl côté PC requis.Le local est le plus rapide si vous avez déjà kubectl configuré (aucun pod à déployer).
Même code (sspcloud_mcp) dans les deux cas — seule la façade change (stdio vs HTTP+OAuth).
Agent IA qui installe avec vous : voir AGENTS.md.
En un coup d'œil
Agent LLM (Claude Desktop / Code)
│ outils MCP
▼
sspcloud-mcp ──► kubectl / helm (contexte admin) → lance/scale les pods
│ └► kernel Jupyter (WebSocket) → exec Python STATEFUL
▼
Pod(s) SSPCloud ── git clone · pip · pytest · GPU · notebooks · checkpoints S3Exécution Python à état persistant : le modèle chargé, les variables, les imports survivent entre les appels d'outils (kernel Jupyter maintenu vivant).
Shell via le kernel :
git,pip,pytest… tournent dans le pod sans dépendance supplémentaire.Slot GPU arbitré : 1 GPU/utilisateur SSPCloud → bascule par projet avec préemption, environnement de chaque projet préservé (PVC).
Installation
Nouveau venu ? Deux guides d'installation individuelle (votre compte, votre namespace) :
docs/INSTALL-IN-CLUSTER.md — illustré, service dans un pod SSPCloud (fonctionne même en compte restreint
stsonly). Recommandé.docs/ONBOARDING.md — depuis un PC avec kubectl (compte avec droits).
Usage strictement individuel : chaque personne installe le service pour son propre namespace, avec son propre kubeconfig. Aucun compte central, aucun accès aux pods d'autrui.
git clone https://github.com/nic01asFr/sspcloud-mcp.git
cd sspcloud-mcp
pip install -e . # cœur autonome (websockets)
# pip install -e .[service] # + outils de déploiement service_* (SDK Passerelle)Prérequis runtime (côté machine qui héberge le serveur MCP) :
kubectlethelmdans lePATH, avec un kubeconfig configuré pour SSPCloud (copié depuisdatalab.sspcloud.fr → Mon compte → Kubernetes).Un contexte disposant des droits dans un namespace (compte admin). Voir docs/GUIDE.md pour la contrainte
stsonly.Python ≥ 3.9.
Configuration client
Claude Desktop
%APPDATA%\Roaming\Claude\claude_desktop_config.json (Windows) — ajouter dans mcpServers :
"sspcloud-mcp": {
"command": "sspcloud-mcp",
"env": {
"SSPCLOUD_NAMESPACE": "user-VOTRE_NS",
"PASSERELLE_KUBE_CONTEXT": "VOTRE_CONTEXTE_ADMIN",
"PASSERELLE_MCP_POD": "passerelle-mcp-dev-jupyter-python-0"
}
}Si
sspcloud-mcpn'est pas installé (pip install), remplacez par"command": "python", "args": ["-m", "sspcloud_mcp.server"]avec"PYTHONPATH": "chemin/vers/sspcloud_mcp"dansenv.
Redémarrer Claude Desktop complètement (quitter depuis la zone de notification).
Claude Code (.mcp.json de projet)
{
"mcpServers": {
"sspcloud-mcp": {
"command": "sspcloud-mcp",
"env": {
"SSPCLOUD_NAMESPACE": "user-VOTRE_NS",
"PASSERELLE_KUBE_CONTEXT": "VOTRE_CONTEXTE_ADMIN",
"PASSERELLE_MCP_POD": "passerelle-mcp-dev-jupyter-python-0"
}
}
}
}Variables d'environnement
Variable | Rôle |
| Namespace K8s cible (ex. |
| Épingle le contexte kubectl (évite d'hériter d'un contexte |
| Pod substrat par défaut quand |
Prise en main (workflow type)
session_start() # attache le pod substrat (env PASSERELLE_MCP_POD)
push_repo(source="github.com/org/repo") # git clone dans le pod (ou chemin local)
exec(code="import torch; model = load()") # Python — reste en mémoire
exec(lang="bash", code="pytest -q") # shell dans le pod
gpu_switch(project="mon-projet") # bascule le slot GPU vers un pod GPU
exec(code="preds = model(batch)") # inférence / éval sur GPU
pull_artifact(path="results/out.gpkg") # rapatrie le livrable en local
session_stop(session_id=...) # libère kernel + port-forwardRéférence des outils (24)
Sessions & exécution
Outil | Rôle |
| Ouvre une session (attache un pod, URL publique, ou lance un pod). |
| État d'une session / liste des sessions. |
| Exécute du code : |
| Suit un traitement lancé en |
| Ferme la session (option |
Code & fichiers
Outil | Rôle |
| Repo → pod : URL git (clone) ou chemin local (upload). |
| Édition et lecture bornées dans le pod. |
| Rapatrie un fichier du pod vers le PC (livrable, checkpoint). |
GPU (slot unique arbitré)
Outil | Rôle |
| État du slot GPU (quel projet le détient) ou |
| Bascule le slot GPU vers le pod GPU d'un projet (préemption, PVC préservé). |
| Libère le slot GPU (scale 0) sans détruire l'environnement. |
Projets & pods
Outil | Rôle |
| Lance un pod dédié pour un projet (CPU ou GPU). |
| Attache une session à un pod existant (nom ou filtre projet). |
| Liste les pods / statefulsets du namespace. |
Exposition HTTPS publique
Outil | Rôle |
| Publie un port du pod (app / PWA / démo) à une URL HTTPS — crée Service + Ingress |
| Retire l'exposition (supprime Service + Ingress). |
Déploiement de services (extra [service])
Outil | Rôle |
| Génère un |
| Upload packages/modèles vers S3 (prérequis au deploy). |
| Déploie un service SSPCloud → URL publique HTTPS. |
| Cycle de vie du service. |
Guide détaillé, exemples et dépannage : docs/GUIDE.md.
Architecture
Transport :
port-forwardvers le kernel Jupyter du pod (court-circuite l'ingress K8s) ; le token Jupyter = lesecurity.passworddu pod. En pod (in-cluster), le kernel est joint via le DNS interne.Cœur autonome :
websocketsuniquement.jupyter_protocol(protocole ZMQ binaire) et les helpers helm sont vendorés.Outils
service_*: reposent surpasserelle-sdk(extra[service]).
Détails de conception : voir la note d'architecture d'origine dans le dépôt Passerelle
(docs/mcp-agent-compute-plan.md).
Limites connues
Le transport URL publique + token (sans kubectl) fonctionne en REST mais le WebSocket kernel ne traverse pas l'ingress Onyxia de façon fiable → utiliser le
port-forward(contexte admin). Résolu nativement par l'hébergement in-cluster (V2).Cold start GPU ~5-8 min à la première allocation d'un pod GPU.
1 seul GPU par utilisateur SSPCloud →
gpu_switcharbitre le slot (préemption).
Hébergement durable + connecteur OAuth — livré ✅
Le serveur s'héberge dans le namespace SSPCloud de l'utilisateur comme Deployment Kubernetes (process principal du pod) : redémarrage automatique, jamais auto-suspendu, survit à la fermeture des pods Jupyter. Exposé en connecteur MCP OAuth (Streamable HTTP + OAuth 2.1 + DCR RFC 7591 + PKCE, CORS pour le flux navigateur de claude.ai), déclarable dans Claude Desktop et l'app mobile.
Deux voies d'installation. Les deux tirent l'image ghcr.io/nic01asfr/sspcloud-mcp
et le chart Helm publié sur GitHub (pas un clone GitLab au démarrage du pod) :
Catalogue Onyxia (recommandé, un clic) — source Helm
https://raw.githubusercontent.com/nic01asFr/sspcloud-mcp/main/helm-repo. Onyxia crée SA dédié + RoleBindingedit, et le service apparaît dans « Mes services » (notes : URL du connecteur + clé API).CLI — depuis un pod lancé en
kubernetes.role: edit:
curl -fsSL https://raw.githubusercontent.com/nic01asFr/sspcloud-mcp/main/install.sh | bashLe script enregistre aussi le service dans Mes services. Voir docs/INSTALL-IN-CLUSTER.md et AGENTS.md.
scripts/mcp_expose.sh(lancement dans le terminal) reste pour un test rapide, mais il est fragile (tombe en ~10 min) — préférez la voie durable ci-dessus.
Licence
MIT — voir LICENSE.
This server cannot be deployed
Maintenance
Related MCP Connectors
On-demand GPU nodes for agents: create nodes, run commands, and submit jobs, billed by the minute.
Deploy and manage Jade Hosting projects from AI clients. Jade account and OAuth required.
Provides capabilities that let LLM agents perform a range of infrastructure management tasks.
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceEnables delegation of agentic sessions to Kubernetes-hosted Claude agents running on the Ambient Code Platform. Supports creating, managing, and communicating with remote AI agent sessions through OpenShift authentication.-
- FlicenseAqualityCmaintenanceDelegates expensive or long-running AI tasks to Kubernetes-hosted Claude agents running on OpenShift. Enables creating, managing, and monitoring remote agentic sessions for complex work like codebase analysis and security audits.41-
- AlicenseNot gradedqualityCmaintenanceProvides ML engineering tools including local/remote bash, text editor, file search, remote GPU helpers via vast.ai, and an OpenRouter LLM proxy.4Apache 2.0
- AlicenseNot gradedqualityAmaintenanceEnables AI clients to securely operate isolated coding workspaces with file, command, Git, and deployment tools via authenticated remote MCP.12MIT