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_listavecentity="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 :
- Ouvrez Settings > MCP Servers
- 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
| Outil | Description |
|---|---|
smartdoc_list | Lister les enregistrements avec recherche, filtres et pagination |
smartdoc_get | Recuperer un enregistrement par UUID |
smartdoc_create | Creer un enregistrement (portee read-write ou full-access) |
smartdoc_update | Modifier un enregistrement existant |
smartdoc_delete | Supprimer un enregistrement (portee full-access) |
smartdoc_schema | Decouvrir les champs disponibles pour une entite |
smartdoc_search | Recherche globale cross-entites |
smartdoc_whoami | Informations sur la cle API courante |
Entites disponibles
| Entite | Operations |
|---|---|
companies | list, get, create, update, delete |
documents | list, get, create, update, delete |
document-types | list, get |
kb-articles | list, get, create, update, delete |
kb-categories | list, get |
assets | list, get, create, update, delete |
asset-types | list, get |
credentials | list, get, create, update, delete |
certificates | list, get, create, update, delete |
applications | list, get, create, update, delete |
serials | list, get, create, update, delete |
vpn | list, get, create, update, delete |
wifi | list, get, create, update, delete |
agreements | list, get, create, update, delete |
websites | list, get, create, update, delete |
network-diagrams | list, get, create, update, delete |
racks | list, get, create, update, delete |
changelogs | list, get, create, update, delete |
changelog-entries | list, get, create, update, delete |
photos | list, get, update, delete |
processes | list, 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
| Valeur | Description |
|---|---|
summary | Colonnes legeres uniquement (defaut pour list) |
full | Toutes les colonnes |
smartdoc_list(entity="assets", mode="full")
Exemples
| Appel | Resultat |
|---|---|
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
| Parametre | Type | Defaut | Description |
|---|---|---|---|
entity | string | — | Type d'entite (obligatoire) |
page | number | 1 | Page a recuperer |
limit | number | 25 | Elements par page (max: 100) |
search | string | — | Recherche textuelle |
sort_by | string | varie | Colonne de tri |
sort_order | asc | desc | desc | Ordre |
company_id | string | — | Filtrer par compagnie (si applicable) |
status | string | — | Filtrer par statut |
fields | string | — | Colonnes specifiques (camelCase, separes par virgule). "*" = toutes. |
mode | summary | full | summary | Mode de selection des colonnes |
smartdoc_get
| Parametre | Type | Description |
|---|---|---|
entity | string | Type d'entite (obligatoire) |
id | string | UUID de l'enregistrement (obligatoire) |
fields | string | Colonnes 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.
smartdoc_search
| Parametre | Type | Description |
|---|---|---|
q | string | Terme de recherche (obligatoire) |
entity_types | string | Types d'entites separes par virgule |
limit | number | Max 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 :
| Methode | Endpoint | Description |
|---|---|---|
POST | /mcp | Appels d'outils et initialisation de session |
GET | /mcp | Reconnexion SSE (flux evenements) |
DELETE | /mcp | Fermeture de session |
Gestion des sessions
- Chaque connexion cree une session unique identifiee par un UUID
- L'en-tete
Mcp-Session-Idest 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_listavecentity="documents"etcompany_idpour filtrer.
Inventaire reseau
« Quels serveurs ont une garantie qui expire dans les 90 prochains jours ? »
L'IA appelle
smartdoc_listavecentity="assets"et filtre les resultats.
Recherche rapide
« Trouve tous les identifiants lies au VPN du bureau de Montreal »
L'IA appelle
smartdoc_searchavec la requete « VPN Montreal ».
Creation de documentation
« Cree un document de procedure pour le client XYZ avec les etapes suivantes... »
L'IA appelle
smartdoc_createavecentity="documents"et le contenu genere.
Audit de securite
« Liste-moi tous les certificats SSL qui expirent ce mois-ci »
L'IA appelle
smartdoc_listavecentity="certificates"et filtre parvalid_until.
Depannage
L'outil n'apparait pas dans Claude Desktop
- Verifiez que le fichier de configuration est au bon emplacement
- Verifiez que la cle API est valide (testez avec
curl) - Redemarrez completement Claude Desktop
- 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.