@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.
- package/build-infos.json +1 -1
- package/concorde-core.bundle.js +2 -2
- package/concorde-core.es.js +2 -2
- package/dist/concorde-core.bundle.js +2 -2
- package/dist/concorde-core.es.js +2 -2
- package/package.json +1 -1
- package/src/core/decorators/subscriber/onAssign.ts +3 -1
- package/src/docs/_misc/on-assign.md +5 -5
- package/src/docs/search/docs-search.json +85 -0
- package/mcp-server/COMPARISON-MCP.md +0 -176
- package/mcp-server/README-MCP-NODEJS.md +0 -284
- package/mcp-server/README-MCP.md +0 -114
- package/mcp-server/README.md +0 -127
- package/mcp-server/TECHNICAL-DOCS.md +0 -269
- package/mcp-server/concorde-mcp-server.js +0 -859
- package/mcp-server/concorde-mcp-server.py +0 -801
- package/mcp-server/cursor-mcp-config-advanced.json +0 -68
- package/mcp-server/cursor-mcp-config-nodejs.json +0 -74
- package/mcp-server/cursor-mcp-config.json +0 -11
- package/mcp-server/install-mcp-nodejs.sh +0 -104
- package/mcp-server/install-mcp.sh +0 -62
- package/mcp-server/package-lock.json +0 -147
- package/mcp-server/package-mcp.json +0 -40
- package/mcp-server/package.json +0 -40
- package/mcp-server/test-mcp.js +0 -107
- package/mcp-server/test-mcp.py +0 -73
|
@@ -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
|
-
```
|