Aller au contenu

← Blog

Une CAO pilotée par une IA : ce qu’est MCP et comment l’utiliser avec LinceCAD

· Guides

L’interface du logiciel et son aide sont disponibles en anglais et en espagnol. Les commandes et les options sont données ici telles qu’elles apparaissent dans la version anglaise du logiciel.

Les assistants d’IA ne se contentent plus de répondre aux questions : ils peuvent aussi utiliser des logiciels, si le logiciel leur en donne le moyen. Ce moyen est, de plus en plus souvent, MCP. LinceCAD intègre un serveur MCP : un assistant peut ouvrir un DWG, l’interroger, dessiner, coter et enregistrer pendant que vous décidez des modifications qu’il peut faire. Cet article explique ce qu’est MCP, ce que permet exactement le serveur de LinceCAD et à quoi ressemble une session réelle.

Qu’est-ce que MCP

Le Model Context Protocol est un protocole ouvert, publié par Anthropic en novembre 2024, pour relier des applications d’IA à des logiciels et à des données. Il a deux côtés :

Les messages sont en JSON-RPC 2.0 et passent par l’entrée et la sortie standard (le client démarre le serveur) ou par HTTP. Le modèle d’IA choisit quel outil appeler et avec quelles données ; le client fait l’appel et lui renvoie le résultat. Le serveur n’a pas besoin de savoir quel modèle se trouve de l’autre côté.

Ce que permet le serveur MCP de LinceCAD

Le serveur se lance avec lince --mcp et communique par l’entrée et la sortie standard. Avec LinceCAD ouvert, on peut aussi activer un serveur MCP par HTTP, uniquement sur 127.0.0.1. Il prend en charge les versions du protocole 2025-06-18, 2025-03-26 et 2024-11-05, et propose 23 outils :

PourOutils
Dessinslist_drawings, open_drawing, new_drawing, save_drawing, drawing_summary
Interrogerquery_entities, get_entity, list_layers, list_blocks, list_block_library, get_variable, capture_view
Modifiercreate_entities, modify_entity, delete_entities, manage_layer, set_variable, add_dimension, insert_block
Commandes et AutoLISPrun_command, eval_lisp
Sortie et contrôleplot_pdf, undo

Quelques détails qui comptent en pratique :

Comment le connecter

Claude Desktop, dans %APPDATA%\Claude\claude_desktop_config.json :

{
  "mcpServers": {
    "lince": { "command": "C:\\Program Files\\lince\\lince.exe", "args": ["--mcp"] }
  }
}

Claude Code, sans fenêtre et dans un projet :

claude mcp add --scope project lince -- "C:\Program Files\lince\lince.exe" --mcp

Avec LinceCAD ouvert : dans OPTIONS, onglet Automation, autorisez l’automatisation et activez le serveur MCP par HTTP. Le jeton (le mot de passe que présentent les clients) se trouve dans api.toml, dans %APPDATA%\lince sous Windows ou ~/.config/lince sous Linux :

claude mcp add --transport http lince http://127.0.0.1:7341/mcp --header "Authorization: Bearer <jeton>"

Tout autre client MCP qui démarre un serveur par l’entrée et la sortie standard se configure de la même façon : la commande est lince.exe et l’argument, --mcp.

Un exemple réel

Pour voir ce qui se passe en dessous, nous avons joué le rôle du client avec un script Python, sans IA : il démarre lince.exe --mcp, se présente, demande la liste des outils et fait les appels qu’un assistant ferait pour une demande comme « crée le calque MUROS (murs) en rouge, dessine un rectangle de 8 × 5 m, cote le côté du bas et enregistre-le sous planta.dwg ». Les coordonnées sont en millimètres, et le calque de la cote est COTAS.

import json, subprocess

lince = subprocess.Popen([r"C:\Program Files\lince\lince.exe", "--mcp"],
                         stdin=subprocess.PIPE, stdout=subprocess.PIPE)
n = 0

def send(method, params=None, notify=False):
    global n
    msg = {"jsonrpc": "2.0", "method": method, "params": params or {}}
    if not notify:
        n += 1
        msg["id"] = n
    lince.stdin.write((json.dumps(msg) + "\n").encode())
    lince.stdin.flush()
    return None if notify else json.loads(lince.stdout.readline())["result"]

def tool(tool_name, /, **args):
    r = send("tools/call", {"name": tool_name, "arguments": args})
    return r["content"][0]["text"]

info = send("initialize", {"protocolVersion": "2025-06-18", "capabilities": {},
                           "clientInfo": {"name": "blog", "version": "1"}})
send("notifications/initialized", notify=True)
print(info["serverInfo"])
print(len(send("tools/list")["tools"]), "tools")

tool("manage_layer", action="create", name="MUROS", color=1)
print(tool("create_entities", entities=[{"type": "LWPOLYLINE", "layer": "MUROS", "closed": True,
           "vertices": [[0, 0], [8000, 0], [8000, 5000], [0, 5000]]}]))
tool("add_dimension", kind="linear", points=[[0, 0], [8000, 0]],
     textPosition=[4000, -800], layer="COTAS")
print(tool("drawing_summary"))
print(tool("save_drawing", path=r"C:\planos\planta.dwg"))
lince.stdin.close()
lince.wait()

Voici la sortie réelle avec LinceCAD 0.9.8-rc3 (nous avons seulement remplacé le chemin du fichier enregistré par celui de l’exemple ; le nom par défaut du dessin est en espagnol parce que le logiciel tournait en espagnol) :

{'name': 'lince', 'title': 'LinceCAD', 'version': '0.9.8-rc3'}
23 tools
{"handles":["51"]}
{"document":{"id":1,"name":"Dibujo1.dwg","path":null,"modified":true,"active":true,"version":"AC1032","entities":2},"extents":[[0.0,-801.25],[8000.0,5000.0]],"units":0,"byType":{"DIMENSION":1,"LWPOLYLINE":1},"byLayer":{"COTAS":1,"MUROS":1},"layers":3,"blocks":0,"currentLayer":"COTAS"}
{"path":"C:\\planos\\planta.dwg","version":"AC1032"}

Le résumé confirme ce qui a été demandé : une polyligne sur le calque MUROS, une cote sur COTAS et trois calques au total (le 0 et les deux nouveaux). add_dimension crée la cote en lançant DIMLINEAR, la même commande que vous utiliseriez à la main. Lors des tests de développement, Claude Code a servi de vrai client : il a créé un cercle et une ligne et lu le résumé du dessin.

Ce que contrôle l’utilisateur

Limites

Questions fréquentes

Faut-il savoir programmer ? Pas pour MCP : vous configurez le client une fois et vous donnez les instructions en langage courant.

Où se trouve la référence complète ? Dans le thème Automation (API and MCP) du manuel (en anglais).

Est-ce une alternative à AutoCAD LT ? Cela dépend de votre travail ; nous le passons en revue dans LinceCAD ou AutoCAD LT.

Le serveur MCP, l’API locale et AutoLISP sont inclus dans LinceCAD, en licence perpétuelle. Téléchargement · Voir les tarifs · Automatisation et toutes les fonctions.