Skip to main content
Glama
USONDIG

GLPI MCP

by USONDIG

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
GLPI_URLYesBase URL of your GLPI instance (without trailing /)
GLPI_LANGNoLabel language: fr (default) or enfr
GLPI_VERSIONNoGLPI version: 10 (default) or 1110
GLPI_APP_TOKENYesApp-Token created in GLPI API configuration
GLPI_USER_TOKENYesUser-Token from your GLPI account
GLPI_VERIFY_TLSNoValidate the GLPI TLS certificate: false (default) or truefalse

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

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
kill_sessionA

Ferme proprement la session GLPI active.

list_ticketsC

Liste les tickets avec pagination optionnelle.

  • status : 1=Nouveau 2=En cours(attribué) 3=En cours(planifié) 4=En attente 5=Résolu 6=Clos

  • type : 1=Incident 2=Demande de service

  • range_start / range_limit : pagination

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 :

  • keywords : le titre seulement. Rapide, mais aveugle au corps du ticket et aux suivis. C'est la portée historique de cet outil.

  • content_keywords : la description du ticket (corps initial).

  • followup_keywords : le contenu des suivis. Indispensable pour l'analyse historique : sur la plupart des instances, l'essentiel de la connaissance d'investigation vit dans les suivis, pas dans les titres. Le nom d'un outil ou d'un correctif mentionné uniquement en cours de diagnostic ne se trouve que par cette portée.

Note de performance : content_keywords et followup_keywords produisent un LIKE '%motif%' côté MySQL. Sans index FULLTEXT, ces recherches sont sensiblement plus lentes que par titre — les combiner avec status, category_id ou ticket_type pour réduire l'ensemble balayé.

create_ticketB

Crée un nouveau ticket.

  • type : 1=Incident 2=Demande de service

  • priority : 1 (très basse) → 6 (majeure)

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.

  • link_type : 1=Lié à, 2=Duplique, 3=Enfant de, 4=Parent de

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.

  • Lie chaque ticket source au ticket cible comme doublon (link_type=2)

  • Copie les suivis des tickets source vers le ticket cible (si add_followups=True)

  • Ferme les tickets source avec un suivi explicatif (si close_source=True)

Paramètres :

  • target_ticket_id : ID du ticket cible (celui qui reste ouvert)

  • source_ticket_ids : liste des IDs de tickets à fusionner dans le cible

  • add_followups : copier les suivis des tickets source vers le cible

  • close_source : fermer les tickets source après la fusion

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.

  • is_private : True pour un suivi visible uniquement par les techniciens

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 content doit être en HTML compatible GLPI, jamais en Markdown (cf. instructions du serveur).

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 add_followup, qui conserve la trace du raisonnement antérieur.

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 update_followup ; pour nuancer une conclusion, add_followup.

list_tasksA

Liste toutes les tâches d'un ticket.

add_taskB

Crée une tâche sur un ticket.

  • status : 1=À faire 2=Terminée

  • duration_seconds : durée en secondes (ex. 3600 = 1h)

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).

  • solution_type_id : ID du type de solution si applicable

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.

  • name_contains : filtre optionnel sur le nom (recherche partielle)

  • only_active : n'inclure que les fournisseurs actifs (is_active = 1)

  • range_start / range_limit : pagination

create_supplierC

Crée un fournisseur.

  • name : raison sociale (seul champ obligatoire)

  • supplier_type_id : ID d'un SupplierType existant (optionnel)

  • comment : texte libre, en HTML compatible GLPI (jamais de Markdown)

create_contactA

Crée un contact (personne-ressource chez un fournisseur).

  • name : nom de famille (seul champ obligatoire)

  • contact_type_id : ID d'un ContactType existant (optionnel)

  • supplier_id : si fourni, le contact est rattaché à ce fournisseur via Contact_Supplier. Le résultat contient alors la clé "_supplier_link".

  • comment : texte libre, en HTML compatible GLPI (jamais de Markdown)

create_contractA

Crée un contrat.

  • name : intitulé du contrat (seul champ obligatoire)

  • num : numéro de contrat chez le fournisseur

  • begin_date : date de début, format AAAA-MM-JJ

  • duration / notice / periodicity / billing : en MOIS (convention GLPI)

  • supplier_id : si fourni, le contrat est rattaché à ce fournisseur via Contract_Supplier. Le résultat contient alors la clé "_supplier_link".

  • comment : texte libre, en HTML compatible GLPI (jamais de Markdown)

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.

  • purge=False (défaut) : mise à la corbeille, réversible via update_supplier(supplier_id, {"is_deleted": 0})

  • purge=True : suppression définitive et IRRÉVERSIBLE, qui retire aussi les rattachements du fournisseur à ses contrats, contacts, matériels et tickets. À n'utiliser que sur un doublon ou une saisie erronée.

delete_contactA

Supprime un contact.

  • purge=False (défaut) : mise à la corbeille, réversible via update_contact(contact_id, {"is_deleted": 0})

  • purge=True : suppression définitive et IRRÉVERSIBLE.

delete_contractA

Supprime un contrat.

  • purge=False (défaut) : mise à la corbeille, réversible via update_contract(contract_id, {"is_deleted": 0})

  • purge=True : suppression définitive et IRRÉVERSIBLE, qui retire aussi les rattachements du contrat à ses matériels et à son fournisseur.

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:

  • keywords: text to search for

  • range_start, range_limit: pagination

  • search_content: also match against the article body (default False). Only enable when the GLPI database has a FULLTEXT index on knowbaseitems.answer, otherwise the request will be slow.

create_kb_articleB

Crée un nouvel article dans la base de connaissances.

  • name : titre de l'article

  • answer : contenu / solution (HTML accepté)

  • category_id : ID de la catégorie KB (optionnel)

  • is_faq : True pour publier dans la FAQ publique

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.

  • profiles_id : ID du profil GLPI

  • entities_id : 0 = entité racine

  • is_recursive : appliquer aux sous-entités

add_kb_article_visibility_groupC

Ajoute un groupe dans la visibilité d'un article KB.

  • groups_id : ID du groupe GLPI

update_kb_article_visibility_profileB

Met à jour une règle de visibilité par profil d'un article KB.

  • visibility_id : ID de l'entrée KnowbaseItem_Profile (obtenu via get_kb_article_visibility)

  • update_fields : champs à modifier, ex: {"entities_id": 1, "is_recursive": 1}

update_kb_article_visibility_groupA

Met à jour une règle de visibilité par groupe d'un article KB.

  • visibility_id : ID de l'entrée KnowbaseItem_Group (obtenu via get_kb_article_visibility)

  • update_fields : champs à modifier, ex: {"entities_id": 1, "is_recursive": 1}

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

B3.3/5.0

Scored across 52 tools

Disambiguation4/5

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.

Naming Consistency5/5

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.

Tool Count2/5

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.

Completeness3/5

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.

Maintenance

ActivityMaintained
ResponsivenessNo issues