Docs/API MCP

API MCP (Model Context Protocol)

Un endpoint. 11 outils. JSON-RPC 2.0. Connectez Claude Desktop, Windsurf, Cursor, ou faites du cURL à l'ancienne. On ne juge pas vos choix technologiques. (Enfin, presque pas.)

Pourquoi MCP ?

Parce que REST c'est bien, mais MCP c'est mieux. Un seul endpoint, un protocole standardisé, et vos outils IA peuvent directement interagir avec vos données. Plus besoin de coder des intégrations à la main. Claude fait le boulot pour vous.

Endpoint

POST https://api.skemacms.com/mcp

En local : http://localhost:3000/mcp

Authentification

Header Authorization: Bearer pk_live_xxx. Pas de OAuth, pas de refresh tokens, pas de danse du ventre. Juste votre clé API. Simple. Efficace. Comme on aime.

Les 11 outils disponibles

OutilDescriptionPermission
get_collectionsListe les collections accessiblesread
get_collectionSchéma d'une collection (champs, types, relations)read
get_collection_itemsListe les items (pagination, tri, filtres, populate)read
get_collection_itemRécupère un item par ID (avec populate)read
search_collection_itemsRecherche textuelle dans une collectionread
count_collection_itemsCompte les items (avec filtres)read
create_collection_itemCrée un nouvel itemcreate
update_collection_itemMet à jour un item (merge partiel)update
delete_collection_itemSupprime un item. Irréversible. Comme vos regrets.delete
batch_create_itemsCrée plusieurs items d'un coupcreate
batch_update_itemsMet à jour plusieurs items d'un coupupdate

Exemple rapide

Lister les commandes avec les clients associés :

curl -X POST https://api.skemacms.com/mcp \
  -H "Authorization: Bearer pk_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
      "name": "get_collection_items",
      "arguments": {
        "collection": "commandes",
        "perPage": 10,
        "populate": "id_client"
      }
    }
  }'

Format de réponse

{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [{
      "type": "text",
      "text": "{"data": [...], "count": 42, "page": 1}"
    }]
  }
}

Le résultat est dans result.content[0].text. C'est du JSON stringifié. Parsez-le et c'est bon.