ROMEO MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ROMEO_QOS | No | Slurm QOS to use (optional). | |
| ROMEO_HOST | No | SSH alias for the ROMEO login node (default: romeo1). | romeo1 |
| ROMEO_ACCOUNT | Yes | Your ROMEO project account code (required, e.g., VOTRE_PROJET). | |
| ROMEO_PROFILE | No | Tool profile: 'essential' or 'full' (default: full). | full |
| ROMEO_DOCS_DIR | No | Path to the local ROMEO documentation directory (optional). |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| romeo_statusA | Etat de ROMEO en un appel : partitions, noeuds libres par architecture, tes jobs en cours et ta part d'ordonnancement. A appeler avant de dimensionner un job. |
| romeo_modulesA | Liste les modules Environment Modules, herites de l'ancien calculateur. Sur ROMEO 2025 la voie officielle est Spack : utilise |
| romeo_softwareA | Cherche un logiciel dans le catalogue Spack de ROMEO, plusieurs centaines de paquets qui constituent la voie officielle de chargement des logiciels. ATTENTION : le catalogue differe selon l'architecture. Des outils absents du PATH du noeud de login (conda via |
| romeo_quotaA | Quotas de stockage reels, par espace (home, scratch, projet), lus avec |
| search_docsA | Recherche locale classee par pertinence dans la documentation ROMEO livree avec le MCP. Accepte mots-cles ou questions, sans distinction d'accents/casse. mode='phrase' cherche un motif exact. page_prefix restreint une branche (ex. ressources/romeo_2025/). max_chars borne le total des extraits. Chaque resultat donne source, titres, lignes et read_args pour lire la section complete. Suivre next_call pour parcourir les autres resultats sans perte par troncature. |
| read_docA | Lit le texte original d'une page locale ROMEO. Utiliser les read_args de search_docs ou choisir start_line/end_line (inclusives, base 1). max_chars borne la reponse. Si truncated=true, rappeler avec next_call pour recuperer la suite exacte ; offset est relatif a la plage choisie. expected_sha256 detecte un changement de page entre deux lectures. |
| romeo_selfcheckA | Confronte le modele de cluster encode dans ce serveur a la realite de SLURM : partitions et limites de temps, comptes de noeuds par architecture, capacites d'un noeud, plafonds du compte, outils declares absents. Rend les ecarts, sans rien corriger. A lancer quand un refus de dimensionnement parait injustifie, ou apres une maintenance du cluster. |
| submit_jobA | Prepare et soumet un job SLURM. |
| job_statusB | Etat d'un job : file d'attente puis historique si le job est termine. Inclut le demarrage estime pour un job en attente. |
| job_outputA | Sortie d'un job, tronquee par defaut. N'affiche JAMAIS un log entier : utilise |
| job_efficiencyA | Efficacite reelle d'un job termine : CPU, memoire, GPU alloues, plus des recommandations de redimensionnement. Remplace |
| cancel_jobB | Annule un job en file ou en cours. |
| list_jobsA | Tes jobs : ceux en file cote SLURM, et ceux soumis via ce serveur (avec leur repertoire de travail et le chemin de leurs logs, meme apres une perte de contexte). |
| wait_for_jobA | Attend qu'un job se termine, avec un plafond strict (600 s). Utilise-le seulement pour un job court : sinon reviens interroger job_status. |
| submit_array_jobA | Soumet un balayage parametrique en tableau SLURM : une tache par jeu de parametres, avec un plafond de taches simultanees. Chaque tache recoit sa ligne de parametres dans la variable $PARAMS, que ta commande peut interpoler. Ideal pour une recherche d'hyperparametres ou une evaluation sur plusieurs jeux de donnees. Simulation par defaut, comme submit_job. |
| submit_resilient_jobA | Soumet un calcul long sous forme de chaine de segments reprenables, pour depasser la limite de temps d'une partition rapide. Chaque segment recoit SIGUSR1 avant son expiration pour sauvegarder, et le suivant demarre apres lui via une dependance, en reprenant du dernier point de sauvegarde. Un marqueur de fin fait sauter les segments restants si le calcul se termine avant terme. Ton code doit savoir reprendre depuis checkpoint_dir et, idealement, traiter SIGUSR1. |
| romeo_fairshare_forecastB | Estime l'effet d'une charge envisagee sur la part d'usage du compte, donc sur la priorite des jobs suivants de l'equipe. Lit l'usage courant via sshare et le compare a la consommation projetee. |
| suggest_submission_slotC | Recommande ou soumettre en confrontant la file d'attente a l'etat du parc : quelle partition et quelle architecture demarreraient le plus vite pour la taille de job envisagee. |
| submit_pipelineA | Soumet un enchainement de jobs relies par des dependances SLURM : preparer, calculer, rassembler. Chaque etape decrit une intention (commande, temps, ressources) et les etapes dont elle depend ; le serveur ordonne, valide chacune comme submit_job le ferait, et pose les --dependency. L'architecture declaree pour l'enchainement est heritee par toutes les etapes, ce qui evite qu'une etape sans GPU parte sur x86_64 alors que les autres tournent en aarch64. SIMULATION PAR DEFAUT : rappelle avec confirm=true pour soumettre. |
| list_dirC | Contenu d'un repertoire distant (taille et date incluses). |
| read_remote_fileB | Lit une tranche d'un fichier distant. Toujours borne : precise offset et limit plutot que de rapatrier un fichier entier. |
| write_remote_fileB | Ecrit ou remplace un fichier texte distant (script, configuration). |
| upload_to_romeoC | Envoie un fichier ou un repertoire local vers ROMEO. |
| download_from_romeoC | Rapatrie un fichier ou un repertoire depuis ROMEO vers la machine locale. |
| storage_cleanup_helperB | Repere ce qui occupe le stockage : plus gros repertoires, journaux de jobs anciens, points de reprise volumineux, environnements virtuels dupliques. Ne supprime rien ; propose les commandes de menage. A utiliser quand romeo_quota signale un depassement. |
| stage_datasetB | Telecharge un jeu de donnees depuis un noeud de calcul plutot que depuis le noeud de login, dont la bande passante est partagee. Accepte une URL directe, un depot Hugging Face ou un depot git. |
| sbatch_lintA | Verifie un script de soumission AVANT de l'envoyer : fins de ligne Windows qui corrompent l'interpreteur, directives #SBATCH placees trop tard, |
| audit_orphan_filesA | Repere les fichiers volumineux abandonnes sous le scratch : anciens, sans job actif associe, ou typiques de fichiers temporaires de calcul (.rwf, .scr, .tmp). Ne supprime rien. Utile quand romeo_quota signale un depassement. |
| secret_env_setupA | Explique et prepare le stockage des variables sensibles (jetons, mots de passe) pour les jobs. Les valeurs ne transitent JAMAIS par ce serveur : tu les ecris toi-meme dans un fichier a droits restreints, que submit_job source au demarrage via |
| build_on_nodeA | Compile ou installe sur un noeud de calcul de l'architecture voulue, via srun. INDISPENSABLE pour cibler les noeuds GPU : ils sont en aarch64 alors que le noeud de login est en x86_64, donc tout artefact produit sur le login y est inutilisable. Synchrone, plafonne a 15 min. |
| run_login_commandA | Execute une commande COURTE et LEGERE sur le noeud de login (inspection, git, ls, grep). Les compilations, installations et calculs sont refuses par defaut : le noeud de login est partage par tout le laboratoire. |
| launch_interactive_serviceB | Lance un service web sur un noeud de calcul (JupyterLab, TensorBoard, vLLM, MLflow) et rend la commande de pont SSH exacte a executer en local pour y acceder. Attend l'affectation du noeud pour pouvoir composer cette commande. |
| allocate_debug_nodeB | Reserve un noeud de calcul pour de la mise au point interactive (compilation, profilage, essais). Rend la commande a executer pour obtenir un shell dessus. Utile pour tester sur aarch64 sans passer par un aller-retour de job batch. |
| build_wheelA | Compile un paquet Python en roue binaire sur un noeud de la bonne architecture et la depose dans un depot local. Evite de recompiler les extensions C++/CUDA (deepspeed, flash-attn, bitsandbytes) a chaque nouvel environnement. Les roues ainsi produites sont ensuite trouvees automatiquement par romeo_pip_install. |
| romeo_pip_installA | Installe des paquets Python dans un environnement virtuel, sur un noeud de la bonne architecture, en privilegiant les roues deja compilees par build_wheel. Evite de recompiler les extensions natives et n'utilise jamais le noeud de login, dont les roues seraient en x86_64. |
| inject_io_stagingA | Insere la mise en cache d'un jeu de donnees en memoire vive dans un script sbatch existant, que ce serveur n'a pas genere. Rend le script modifie sans rien ecrire : a toi de le relire puis de le deposer. Pour un job cree ici, prefere submit_job(stage_archive=...). |
| spawn_remote_workspaceA | Ouvre un espace de travail interactif sur un noeud GPU et rend tout ce qu'il faut pour s'y connecter : commande de pont SSH a coller, et URL locale avec son jeton d'authentification. Contrairement a launch_interactive_service, le jeton est genere ici, donc l'URL est utilisable immediatement sans lire la sortie du job. |
| diagnose_jobA | Autopsie d'un job en echec, en un seul appel : etat SLURM, fin des journaux, causes reconnues et remedes. Reconnait notamment le binaire x86 execute sur un noeud aarch64, la saturation de VRAM, le depassement de memoire, l'erreur de bus, les echecs NCCL et les quotas. En cas de depassement de temps, cherche aussi les points de reprise disponibles. A appeler des qu'un job echoue, avant toute autre investigation. |
| job_live_metricsA | Telemetrie instantanee d'un job EN COURS, sans lire de journal ni attendre la fin : occupation et memoire des GPU, temperature, puissance, et processus les plus actifs. Detecte le cas ou le calcul dort sur des entrees-sorties pendant que les GPU sont reserves, et la montee vers la saturation de VRAM avant qu'elle ne provoque un echec. |
| job_stack_traceA | Capture la pile d'appels des processus d'un job EN COURS, pour diagnostiquer un blocage : interblocage MPI, noyau CUDA fige, attente sur verrou. Utilise pstack, avec repli sur gdb puis eu-stack. Ne s'attache pas de maniere interactive : il preleve une trace et rend la main, ce qui n'interrompt pas le calcul. |
| job_system_healthA | Sante systeme d'un job EN COURS, GPU ou non : charge processeur face aux coeurs reserves, attente d'entrees-sorties, memoire utilisee face a la reservation. Detecte les trois gaspillages classiques : un code cense etre parallele qui tourne sur un seul coeur, un calcul qui passe son temps a attendre le systeme de fichiers, et une reservation memoire massivement surdimensionnee. |
| profile_jobC | Profile un calcul GPU avec NVIDIA Nsight Systems et produit un rapport exploitable, au lieu de laisser deviner pourquoi un code est lent. La capture est fenetree pour ne pas produire une trace enorme. Lis ensuite le resume avec profile_report. |
| profile_reportA | Resume le rapport de profilage d'un job traite par profile_job : repartition entre calcul et transferts memoire, et noyaux les plus couteux. Condense une sortie nsys de plusieurs centaines de lignes en quelques constats. |
| run_cluster_sanity_checkA | Verifie la sante des GPU sur un ou plusieurs noeuds : bridage thermique ou de puissance, erreurs memoire non corrigees, frequence anormalement basse. Un noeud degrade ne plante pas, il ralentit tout un job reparti sans erreur visible. Rend une clause --exclude prete a l'emploi pour les noeuds suspects. |
| job_energy_footprintA | Estime l'energie consommee et l'empreinte carbone d'un job. ATTENTION : ROMEO n'active aucun greffon de comptabilite energetique SLURM, le resultat est donc un MODELE et non une mesure. Sur un job en cours, la puissance GPU reelle est relevee, ce qui reduit fortement l'incertitude. |
| tool_profileA | Consulte ou change le profil d'outils pour cette connexion : essential ou full. full reaffiche immediatement les outils avances. Aucun job ni fichier distant n'est modifie. |
| export_job_reportA | Exporte hors de Git une fiche JSON/Markdown d'un job soumis via ce MCP : script Slurm filtre, provenance, ressources mesurees et SHA-256 de fichiers distants explicitement choisis. Lecture seule sur ROMEO ; cree des fichiers locaux prives. live=false autorise l'export hors ligne. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| optimize_for_gh200 | Adapte un script Python aux noeuds Grace Hopper aarch64 de ROMEO. |
| debug_slurm_failure | Enquete guidee sur un job termine anormalement. |
| scale_to_multi_node | Adapte un entrainement mono-noeud vers plusieurs noeuds GPU. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| Aide-memoire ROMEO | Partitions, architectures, comptes, stockage et pieges du cluster. A lire avant de dimensionner un job. |
| Documentation officielle ROMEO | Index de la documentation officielle scrapee localement, si elle est presente sur la machine. |
| Limites et outils manquants | Ce que ROMEO ne propose pas, et par quoi le remplacer. |
| Jobs en cours | Etat instantane de tes jobs dans la file SLURM. |
| Charge du cluster | Occupation instantanee des noeuds et des GPU, par architecture. |
TDQS
Scored across 47 tools
Descriptions are detailed and most tools target distinct actions, but several clusters overlap: launch_interactive_service vs spawn_remote_workspace, storage_cleanup_helper vs audit_orphan_files, and the multiple job-diagnostic/monitoring tools require careful reading to choose correctly. Boundaries are usually explained, yet the sheer number of near-neighbours invites misselection.
snake_case is used throughout and the verb_noun pattern is common, but conventions are mixed: some tools carry a romeo_ prefix (romeo_status, romeo_quota) while analogous ones do not (search_docs, list_dir), and many tools are noun-first (job_output, job_efficiency, tool_profile). Readable but not fully predictable.
At 47 tools this is far beyond the well-scoped 15-tool range; even for a complex HPC workflow it is heavy and necessitates profile gating via tool_profile (essential/full). Many tools are individually justified, but the volume itself is a significant usability cost.
The surface covers the full job lifecycle: submission variants (batch, array, resilient, pipeline), monitoring, diagnostics, profiling, file transfer, storage management, interactive services, builds, docs and quotas. Missing pieces such as remote file deletion/move or directory creation are minor and can be worked around via run_login_command.