Aller au contenu principal

Serveur MCP SmartDoc

Le serveur MCP (Model Context Protocol) permet aux assistants IA comme Claude Desktop et Cursor d'acceder directement a vos donnees SmartDoc. L'IA peut ainsi consulter votre documentation, rechercher des actifs, lister des identifiants et bien plus, le tout de maniere securisee via votre cle API.

Qu'est-ce que MCP ?

Le Model Context Protocol est un standard ouvert qui permet aux applications IA de se connecter a des sources de donnees externes. Au lieu de copier-coller des informations, l'IA peut interroger SmartDoc directement.

Exemple d'utilisation avec Claude :

« Liste-moi tous les serveurs du client Acme Corp »

Claude utilise l'outil smartdoc_list avec entity="assets" et le filtre compagnie pour retourner les resultats directement depuis votre base SmartDoc.


Configuration Claude Desktop

Ajoutez la configuration suivante dans votre fichier Claude Desktop :

macOS : ~/Library/Application Support/Claude/claude_desktop_config.json Windows : %APPDATA%\Claude\claude_desktop_config.json

{
"mcpServers": {
"smartdoc": {
"url": "https://smartdoc.mspsmart.ca/mcp",
"headers": {
"Authorization": "Bearer sk-smartdoc-VOTRE_CLE_ICI"
}
}
}
}

Redemarrez Claude Desktop apres la modification. Le serveur SmartDoc apparaitra dans la liste des outils disponibles.

Configuration Cursor

Dans les parametres de Cursor, ajoutez un serveur MCP :

  1. Ouvrez Settings > MCP Servers
  2. Ajoutez un nouveau serveur avec :
{
"smartdoc": {
"url": "https://smartdoc.mspsmart.ca/mcp",
"headers": {
"Authorization": "Bearer sk-smartdoc-VOTRE_CLE_ICI"
}
}
}

Configuration Claude Code

Ajoutez dans votre fichier .claude/settings.json :

{
"mcpServers": {
"smartdoc": {
"url": "https://smartdoc.mspsmart.ca/mcp",
"headers": {
"Authorization": "Bearer sk-smartdoc-VOTRE_CLE_ICI"
}
}
}
}

Outils disponibles

Le serveur MCP expose 8 outils consolides couvrant toutes les operations CRUD sur 21 entites SmartDoc. L'entite cible est passee en parametre entity.

Liste des outils

OutilDescription
smartdoc_listLister les enregistrements avec recherche, filtres et pagination
smartdoc_getRecuperer un enregistrement par UUID
smartdoc_createCreer un enregistrement (portee read-write ou full-access)
smartdoc_updateModifier un enregistrement existant
smartdoc_deleteSupprimer un enregistrement (portee full-access)
smartdoc_schemaDecouvrir les champs disponibles pour une entite
smartdoc_searchRecherche globale cross-entites
smartdoc_whoamiInformations sur la cle API courante

Entites disponibles

EntiteOperations
companieslist, get, create, update, delete
documentslist, get, create, update, delete
document-typeslist, get
kb-articleslist, get, create, update, delete
kb-categorieslist, get
assetslist, get, create, update, delete
asset-typeslist, get
credentialslist, get, create, update, delete
certificateslist, get, create, update, delete
applicationslist, get, create, update, delete
serialslist, get, create, update, delete
vpnlist, get, create, update, delete
wifilist, get, create, update, delete
agreementslist, get, create, update, delete
websiteslist, get, create, update, delete
network-diagramslist, get, create, update, delete
rackslist, get, create, update, delete
changelogslist, get, create, update, delete
changelog-entrieslist, get, create, update, delete
photoslist, get, update, delete
processeslist, get, create, update, delete

Optimisation des reponses

Par defaut, les appels smartdoc_list retournent uniquement les colonnes summary (colonnes legeres) pour reduire la taille des reponses et economiser des tokens. Les appels smartdoc_get retournent toutes les colonnes.

Parametre fields

Selectionnez des colonnes specifiques en passant une liste de noms camelCase separes par virgule :

smartdoc_list(entity="assets", fields="name,hostname,ipAddresses")

Retourne uniquement id, tenantId, name, hostname et ipAddresses. Les champs id et tenantId sont toujours inclus.

Utilisez fields="*" pour recuperer toutes les colonnes :

smartdoc_list(entity="assets", fields="*")

Parametre mode

ValeurDescription
summaryColonnes legeres uniquement (defaut pour list)
fullToutes les colonnes
smartdoc_list(entity="assets", mode="full")

Exemples

AppelResultat
smartdoc_list(entity="assets")~10 colonnes summary
smartdoc_list(entity="assets", mode="full")~26 colonnes
smartdoc_list(entity="assets", fields="name,ipAddresses")id + tenantId + name + ipAddresses
smartdoc_get(entity="assets", id="...")Toutes les colonnes (defaut GET)
smartdoc_get(entity="assets", id="...", fields="name,status")id + tenantId + name + status

Decouvrir les colonnes summary

Utilisez smartdoc_schema pour voir quels champs sont retournes par defaut :

smartdoc_schema(entity="assets")
→ summaryFields: ["id", "tenantId", "companyId", "name", "hostname", "serialNumber", "status", "assetTypeId", "createdAt", "updatedAt"]

Parametres des outils

smartdoc_list

ParametreTypeDefautDescription
entitystringType d'entite (obligatoire)
pagenumber1Page a recuperer
limitnumber25Elements par page (max: 100)
searchstringRecherche textuelle
sort_bystringvarieColonne de tri
sort_orderasc | descdescOrdre
company_idstringFiltrer par compagnie (si applicable)
statusstringFiltrer par statut
fieldsstringColonnes specifiques (camelCase, separes par virgule). "*" = toutes.
modesummary | fullsummaryMode de selection des colonnes

smartdoc_get

ParametreTypeDescription
entitystringType d'entite (obligatoire)
idstringUUID de l'enregistrement (obligatoire)
fieldsstringColonnes specifiques (camelCase). Defaut : toutes les colonnes.

smartdoc_create / smartdoc_update

Les parametres varient selon l'entite. Utilisez smartdoc_schema pour decouvrir les champs disponibles. La portee de la cle doit etre read-write ou full-access.

ParametreTypeDescription
qstringTerme de recherche (obligatoire)
entity_typesstringTypes d'entites separes par virgule
limitnumberMax resultats par type (defaut : 10)

smartdoc_whoami

Aucun parametre. Retourne les informations sur la cle API courante : portee, filtrage par compagnie, tenant et liste des entites disponibles.


Protocole technique

Le serveur MCP SmartDoc utilise le transport Streamable HTTP :

MethodeEndpointDescription
POST/mcpAppels d'outils et initialisation de session
GET/mcpReconnexion SSE (flux evenements)
DELETE/mcpFermeture de session

Gestion des sessions

  • Chaque connexion cree une session unique identifiee par un UUID
  • L'en-tete Mcp-Session-Id est retourne apres l'initialisation
  • Les sessions expirent apres 30 minutes d'inactivite
  • L'authentification est verifiee a chaque requete POST

Securite

  • Meme authentification par cle API que l'API REST
  • Meme filtrage par compagnie et portee
  • Les champs chiffres ne sont jamais exposes
  • Rate limiting partage avec l'API REST

Cas d'utilisation

Documentation client

« Montre-moi tous les documents du client Acme Corp »

L'IA appelle smartdoc_list avec entity="documents" et company_id pour filtrer.

Inventaire reseau

« Quels serveurs ont une garantie qui expire dans les 90 prochains jours ? »

L'IA appelle smartdoc_list avec entity="assets" et filtre les resultats.

Recherche rapide

« Trouve tous les identifiants lies au VPN du bureau de Montreal »

L'IA appelle smartdoc_search avec la requete « VPN Montreal ».

Creation de documentation

« Cree un document de procedure pour le client XYZ avec les etapes suivantes... »

L'IA appelle smartdoc_create avec entity="documents" et le contenu genere.

Audit de securite

« Liste-moi tous les certificats SSL qui expirent ce mois-ci »

L'IA appelle smartdoc_list avec entity="certificates" et filtre par valid_until.


Depannage

L'outil n'apparait pas dans Claude Desktop

  1. Verifiez que le fichier de configuration est au bon emplacement
  2. Verifiez que la cle API est valide (testez avec curl)
  3. Redemarrez completement Claude Desktop
  4. Verifiez les logs Claude Desktop pour des erreurs de connexion

Erreur 401

La cle API est invalide, expiree ou revoquee. Creez une nouvelle cle dans l'onglet API Keys.

Erreur 403

La portee de la cle ne permet pas cette operation. Utilisez une cle read-write ou full-access.

Erreur 429

Limite de requetes depassee (1 000/heure). Attendez ou utilisez une autre cle.

Resultats vides

Verifiez le filtrage par compagnie de votre cle API. Si la cle est en mode include, seules les compagnies selectionnees sont accessibles.