@supersoniks/concorde 3.3.2 → 3.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,269 +0,0 @@
1
- # Documentation Technique - Serveur MCP Concorde
2
-
3
- ## Architecture
4
-
5
- Le serveur MCP Concorde est construit avec les technologies suivantes :
6
- - **Python 3.8+** : Langage principal
7
- - **MCP (Model Context Protocol)** : Protocole de communication avec l'IA
8
- - **asyncio** : Gestion asynchrone des requêtes
9
- - **re** : Analyse des expressions régulières pour extraire les propriétés
10
- - **pathlib** : Gestion des chemins de fichiers
11
-
12
- ## Structure du code
13
-
14
- ### Classe principale : `ConcordeMCPServer`
15
-
16
- ```python
17
- class ConcordeMCPServer:
18
- def __init__(self):
19
- self.server = Server("concorde-mcp")
20
- self.components: Dict[str, ComponentInfo] = {}
21
- self.documentation: Dict[str, str] = {}
22
- self._setup_handlers()
23
- self._load_components()
24
- self._load_documentation()
25
- ```
26
-
27
- ### Structure des données
28
-
29
- #### `ComponentInfo`
30
- ```python
31
- @dataclass
32
- class ComponentInfo:
33
- name: str # Nom du composant (ex: "button")
34
- tag_name: str # Nom de la balise (ex: "sonic-button")
35
- category: str # "ui" ou "functional"
36
- file_path: Path # Chemin vers le fichier .ts
37
- doc_path: Optional[Path] # Chemin vers le fichier .md
38
- description: str # Description du composant
39
- props: List[Dict[str, Any]] # Propriétés du composant
40
- examples: List[str] # Exemples d'utilisation
41
- ```
42
-
43
- ## Analyse du code source
44
-
45
- ### Extraction des propriétés
46
-
47
- Le serveur analyse les fichiers TypeScript pour extraire les propriétés des composants :
48
-
49
- ```python
50
- def _extract_properties(self, content: str) -> List[Dict[str, Any]]:
51
- """Extrait les propriétés du composant"""
52
- props = []
53
-
54
- # Recherche les décorateurs @property
55
- property_pattern = r'@property\([^)]*\)\s+(\w+)(?::\s*([^=]+))?'
56
- matches = re.findall(property_pattern, content)
57
-
58
- for match in matches:
59
- prop_name = match[0]
60
- prop_type = match[1] if match[1] else "string"
61
-
62
- # Recherche les commentaires JSDoc
63
- comment_pattern = rf'/\*\*\s*\n\s*\*\s*([^\n]+)'
64
- comment_match = re.search(comment_pattern, content)
65
- description = comment_match.group(1).strip() if comment_match else ""
66
-
67
- props.append({
68
- "name": prop_name,
69
- "type": prop_type,
70
- "description": description
71
- })
72
-
73
- return props
74
- ```
75
-
76
- ### Extraction des exemples
77
-
78
- Les exemples sont extraits des fichiers Markdown :
79
-
80
- ```python
81
- def _extract_examples(self, doc_content: str) -> List[str]:
82
- """Extrait les exemples de la documentation"""
83
- examples = []
84
-
85
- # Recherche les blocs sonic-code
86
- code_pattern = r'<sonic-code>(.*?)</sonic-code>'
87
- matches = re.findall(code_pattern, doc_content, re.DOTALL)
88
-
89
- for match in matches:
90
- example = match.strip()
91
- if example:
92
- examples.append(example)
93
-
94
- return examples
95
- ```
96
-
97
- ## Outils MCP
98
-
99
- ### 1. `search_component`
100
- Recherche un composant par nom ou fonctionnalité.
101
-
102
- **Paramètres :**
103
- - `query` (string) : Terme de recherche
104
-
105
- **Retour :** Liste des composants correspondants
106
-
107
- ### 2. `get_component_info`
108
- Obtient des informations détaillées sur un composant.
109
-
110
- **Paramètres :**
111
- - `component_name` (string) : Nom du composant
112
-
113
- **Retour :** Documentation complète du composant
114
-
115
- ### 3. `generate_component_code`
116
- Génère du code HTML pour un composant.
117
-
118
- **Paramètres :**
119
- - `component_name` (string) : Nom du composant
120
- - `properties` (object) : Propriétés du composant
121
- - `content` (string, optionnel) : Contenu du composant
122
-
123
- **Retour :** Code HTML généré
124
-
125
- ### 4. `get_form_example`
126
- Génère un exemple de formulaire.
127
-
128
- **Paramètres :**
129
- - `fields` (array) : Liste des champs du formulaire
130
-
131
- **Retour :** Code HTML du formulaire
132
-
133
- ### 5. `get_theme_info`
134
- Obtient des informations sur les thèmes.
135
-
136
- **Paramètres :**
137
- - `theme` (string) : Nom du thème ("light", "dark", "auto")
138
-
139
- **Retour :** Informations sur le thème
140
-
141
- ### 6. `get_icons_list`
142
- Liste les icônes disponibles.
143
-
144
- **Paramètres :**
145
- - `library` (string) : Bibliothèque d'icônes ("core", "iconoir", "fontAwesome")
146
-
147
- **Retour :** Liste des icônes
148
-
149
- ## Ressources MCP
150
-
151
- ### Composants
152
- - **URI :** `concorde://component/{component_name}`
153
- - **Type :** `text/markdown`
154
- - **Description :** Documentation complète d'un composant
155
-
156
- ### Documentation
157
- - **URI :** `concorde://docs/{doc_name}`
158
- - **Type :** `text/markdown`
159
- - **Description :** Documentation générale
160
-
161
- ### Exemples
162
- - **URI :** `concorde://examples/{category}`
163
- - **Type :** `text/markdown`
164
- - **Description :** Exemples d'utilisation
165
-
166
- ## Configuration
167
-
168
- ### Fichier de configuration Cursor
169
-
170
- ```json
171
- {
172
- "mcpServers": {
173
- "concorde": {
174
- "command": "python3",
175
- "args": ["/usr2/sites/concorde/concorde-mcp-server.py"],
176
- "env": {
177
- "PYTHONPATH": "/usr2/sites/concorde"
178
- }
179
- }
180
- }
181
- }
182
- ```
183
-
184
- ### Variables d'environnement
185
-
186
- - `PYTHONPATH` : Chemin vers le répertoire Concorde
187
- - `CONCORDE_ROOT` : Racine du projet (détectée automatiquement)
188
-
189
- ## Développement
190
-
191
- ### Ajout d'un nouveau composant
192
-
193
- 1. Créer le composant dans `src/core/components/{category}/{name}/`
194
- 2. Ajouter le fichier TypeScript avec les décorateurs `@property`
195
- 3. Ajouter la documentation Markdown avec des exemples `<sonic-code>`
196
- 4. Redémarrer le serveur MCP
197
-
198
- ### Ajout d'un nouvel outil
199
-
200
- 1. Ajouter l'outil dans `list_tools()`
201
- 2. Implémenter la méthode dans `call_tool()`
202
- 3. Créer la méthode de traitement correspondante
203
- 4. Tester avec le script de test
204
-
205
- ### Debugging
206
-
207
- Utiliser le script de test pour vérifier le fonctionnement :
208
-
209
- ```bash
210
- python3 test-mcp.py
211
- ```
212
-
213
- ### Logs
214
-
215
- Le serveur MCP utilise le système de logging standard de Python. Pour activer les logs détaillés :
216
-
217
- ```python
218
- import logging
219
- logging.basicConfig(level=logging.DEBUG)
220
- ```
221
-
222
- ## Performance
223
-
224
- ### Optimisations
225
-
226
- - **Cache des composants** : Les composants sont chargés une seule fois au démarrage
227
- - **Analyse regex optimisée** : Utilisation de patterns compilés
228
- - **Lazy loading** : La documentation n'est chargée que si nécessaire
229
-
230
- ### Métriques
231
-
232
- - **Temps de démarrage** : ~2-3 secondes
233
- - **Mémoire utilisée** : ~50-100 MB
234
- - **Temps de réponse** : <100ms pour la plupart des requêtes
235
-
236
- ## Sécurité
237
-
238
- ### Validation des entrées
239
-
240
- - Tous les paramètres sont validés avant traitement
241
- - Les chemins de fichiers sont vérifiés pour éviter les accès non autorisés
242
- - Les expressions regex sont échappées pour éviter les injections
243
-
244
- ### Permissions
245
-
246
- - Le serveur ne peut lire que les fichiers du projet Concorde
247
- - Aucune écriture sur le système de fichiers
248
- - Communication uniquement via stdio avec Cursor
249
-
250
- ## Maintenance
251
-
252
- ### Mise à jour automatique
253
-
254
- Le serveur analyse automatiquement le code source à chaque démarrage, donc :
255
- - Les nouveaux composants sont détectés automatiquement
256
- - Les modifications de propriétés sont prises en compte
257
- - La documentation est mise à jour en temps réel
258
-
259
- ### Monitoring
260
-
261
- Pour surveiller le fonctionnement du serveur :
262
-
263
- ```bash
264
- # Vérifier que le processus est actif
265
- ps aux | grep concorde-mcp-server
266
-
267
- # Tester la connectivité
268
- python3 test-mcp.py
269
- ```