GLPI MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| GLPI_URL | Yes | Base URL of your GLPI instance (without trailing /) | |
| GLPI_LANG | No | Label language: fr (default) or en | fr |
| GLPI_VERSION | No | GLPI version: 10 (default) or 11 | 10 |
| GLPI_APP_TOKEN | Yes | App-Token created in GLPI API configuration | |
| GLPI_USER_TOKEN | Yes | User-Token from your GLPI account | |
| GLPI_VERIFY_TLS | No | Validate the GLPI TLS certificate: false (default) or true | false |
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": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| kill_sessionA | Ferme proprement la session GLPI active. |
| list_ticketsC | Liste les tickets avec pagination optionnelle.
|
| get_ticketB | Retourne le détail complet d'un ticket, avec libellés lisibles. |
| search_ticketsA | Recherche avancée de tickets via l'API GLPI /search/Ticket. Tous les paramètres sont optionnels et combinables (combinés en ET). Trois portées de recherche textuelle, à ne pas confondre :
Note de performance : |
| create_ticketB | Crée un nouveau ticket.
|
| update_ticketA | Met à jour un ticket. Passer uniquement les champs à modifier. Exemples de champs : status, priority, name, content, itilcategories_id |
| delete_ticketB | Supprime un ticket par son ID. |
| link_ticketsB | Crée un lien entre deux tickets.
|
| list_ticket_linksB | Liste tous les liens d'un ticket avec d'autres tickets. |
| merge_ticketsA | Fusionne un ou plusieurs tickets source vers un ticket cible.
Paramètres :
|
| list_itil_categoriesA | Liste toutes les catégories ITIL disponibles (Incident, Demande, Changement, Problème). |
| list_followupsB | Liste tous les suivis d'un ticket. |
| add_followupA | Ajoute un suivi à un ticket.
|
| get_followupB | Retourne le détail d'un suivi spécifique. |
| update_followupA | Met à jour un suivi existant. Exemples de champs : content, is_private. Le champ Note : un suivi est une pièce horodatée et signée du dossier. Corriger le
contenu d'un suivi déjà publié réécrit l'historique visible par l'équipe —
à réserver aux corrections d'erreurs factuelles récentes. Pour un
changement de fond, préférer l'ajout d'un nouveau suivi via |
| delete_followupA | Supprime un suivi. ATTENTION : opération destructive et non réversible depuis cet outil — le
suivi disparaît de la piste d'audit du ticket. Ne l'utiliser que sur un
suivi publié par erreur (mauvais ticket, doublon). Pour corriger un
contenu, utiliser |
| list_tasksA | Liste toutes les tâches d'un ticket. |
| add_taskB | Crée une tâche sur un ticket.
|
| update_taskA | Met à jour une tâche. Exemples : state (1/2), content, actiontime, users_id_tech |
| delete_taskC | Supprime une tâche. |
| get_solutionC | Retourne la solution d'un ticket. |
| add_solutionA | Poste une solution sur un ticket (le clôture automatiquement selon la config GLPI).
|
| stats_by_statusA | Retourne le nombre de tickets ouverts par statut. |
| stats_by_typeA | Retourne le nombre de tickets par type (Incident / Demande de service). |
| stats_by_priorityA | Retourne le nombre de tickets ouverts par priorité. |
| stats_by_categoryA | Retourne le nombre de tickets par catégorie ITIL. |
| stats_by_assigneeA | Retourne le nombre de tickets par technicien assigné. |
| stats_resolution_timeA | Retourne le délai moyen de résolution des tickets résolus ou clos. |
| stats_overdueA | Retourne les tickets en retard (date d'échéance dépassée et non résolus). Utilise le champ time_to_resolve de GLPI. |
| get_usersB | Liste les utilisateurs GLPI. |
| get_groupsA | Liste les groupes GLPI. |
| list_suppliersB | Liste les fournisseurs enregistrés dans GLPI.
|
| create_supplierC | Crée un fournisseur.
|
| create_contactA | Crée un contact (personne-ressource chez un fournisseur).
|
| create_contractA | Crée un contrat.
|
| update_supplierA | Met à jour un fournisseur. Passer uniquement les champs à modifier. Exemples de champs : name, suppliertypes_id, address, town, phonenumber, email, website, comment, is_active Pour restaurer un fournisseur mis à la corbeille : {"is_deleted": 0} |
| update_contactB | Met à jour un contact. Passer uniquement les champs à modifier. Exemples de champs : name, firstname, contacttypes_id, phone, mobile, email, comment Pour restaurer un contact mis à la corbeille : {"is_deleted": 0} |
| update_contractB | Met à jour un contrat. Passer uniquement les champs à modifier. Exemples de champs : name, num, contracttypes_id, begin_date, duration, notice, periodicity, billing, accounting_number, comment Les durées sont en MOIS et begin_date au format AAAA-MM-JJ. Pour restaurer un contrat mis à la corbeille : {"is_deleted": 0} |
| delete_supplierA | Supprime un fournisseur.
|
| delete_contactA | Supprime un contact.
|
| delete_contractA | Supprime un contrat.
|
| list_kb_articlesA | List GLPI knowledge base articles with pagination. Each KnowbaseItem returned by the API embeds the full HTML answer. On large KBs this makes the JSON response heavy: in production we observed that range_start > 60 combined with range_limit > 10 is enough to exceed PHP-FPM memory_limit on the GLPI side and the request fails. To stay below that ceiling, range_limit is auto-clamped to 10 when range_start > 60. When clamping kicks in the response is wrapped in a dict carrying _clamped_range_limit and _warning so callers can detect the change. Behaviour is unchanged for range_start <= 60. |
| get_kb_articleC | Retourne le détail complet d'un article de la base de connaissances. |
| search_kb_articlesA | Search knowledge base articles by keyword. By default the search runs only against the title column, which is fast on any GLPI instance. Set search_content=True to also match against the full HTML body. On a GLPI instance that has no MySQL FULLTEXT index on knowbaseitems.answer, that branch produces a LIKE '%keyword%' scan on the answer column which routinely exceeds the 30 second client timeout on KBs with sizeable HTML payloads. Field IDs are discovered at runtime via listSearchOptions/KnowbaseItem and looked up by column name ("name", "answer") so the tool works on both GLPI 10 and GLPI 11 (where numeric IDs may differ). When discovery fails the legacy GLPI 10 IDs (6 for title, 7 for body) are used as a fallback. Parameters:
|
| create_kb_articleB | Crée un nouvel article dans la base de connaissances.
|
| update_kb_articleC | Met à jour un article de la base de connaissances. Exemples de champs : name, answer, is_faq, knowbaseitemcategories_id |
| list_kb_categoriesB | Liste toutes les catégories de la base de connaissances. |
| get_kb_article_visibilityB | Retourne les règles de visibilité d'un article KB : profils, groupes, utilisateurs et entités ayant accès. |
| add_kb_article_visibility_profileB | Ajoute un profil dans la visibilité d'un article KB.
|
| add_kb_article_visibility_groupC | Ajoute un groupe dans la visibilité d'un article KB.
|
| update_kb_article_visibility_profileB | Met à jour une règle de visibilité par profil d'un article KB.
|
| update_kb_article_visibility_groupA | Met à jour une règle de visibilité par groupe d'un article KB.
|
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 52 tools
Each tool has a clearly distinct purpose, with resource+action naming that separates e.g. list_tickets vs search_tickets and profile vs group visibility tools. A few tools (stats_by_*) follow similar patterns but target different metrics, so confusion is unlikely.
All tool names follow a consistent snake_case verb_noun pattern (list_tickets, add_followup, update_supplier), with only minor deviations like stats_resolution_time and kill_session. No mixed conventions are present.
52 tools is far above the typical 3–15 range; while GLPI is a broad domain, the granular CRUD for each entity could be consolidated. The count is excessive and likely burdens tool selection.
Core ticketing, followups, tasks, and KB articles have near-complete lifecycles, but there are notable gaps: no list/get for contacts and contracts, no update/delete for solutions, no asset/problem/change management, and KB category CRUD is missing. These gaps limit the server's coverage of GLPI.