smart-thinking-mcp 1.0.0
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/LICENSE +21 -0
- package/README.md +104 -0
- package/build/index.d.ts +2 -0
- package/build/index.js +296 -0
- package/build/index.js.map +1 -0
- package/build/memory-manager.d.ts +89 -0
- package/build/memory-manager.js +226 -0
- package/build/memory-manager.js.map +1 -0
- package/build/quality-evaluator.d.ts +63 -0
- package/build/quality-evaluator.js +275 -0
- package/build/quality-evaluator.js.map +1 -0
- package/build/thought-graph.d.ts +103 -0
- package/build/thought-graph.js +278 -0
- package/build/thought-graph.js.map +1 -0
- package/build/tool-integrator.d.ts +58 -0
- package/build/tool-integrator.js +219 -0
- package/build/tool-integrator.js.map +1 -0
- package/build/types.d.ts +87 -0
- package/build/types.js +6 -0
- package/build/types.js.map +1 -0
- package/build/visualizer.d.ts +55 -0
- package/build/visualizer.js +346 -0
- package/build/visualizer.js.map +1 -0
- package/package.json +43 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Smart-Thinking Team
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
# Smart-Thinking MCP Server
|
|
2
|
+
|
|
3
|
+
Un serveur MCP (Model Context Protocol) qui fournit un cadre de raisonnement multi-dimensionnel, adaptatif et collaboratif pour les assistants IA comme Claude.
|
|
4
|
+
|
|
5
|
+
## Caractéristiques
|
|
6
|
+
|
|
7
|
+
- 🧠 **Architecture de raisonnement multi-dimensionnelle** basée sur un graphe plutôt qu'une séquence linéaire
|
|
8
|
+
- 🔄 **Estimation dynamique et auto-adaptative** du nombre de pensées nécessaires
|
|
9
|
+
- 💾 **Intégration d'une mémoire persistante** pour les sessions précédentes
|
|
10
|
+
- 📈 **Mécanismes d'auto-apprentissage** pour améliorer le raisonnement au fil du temps
|
|
11
|
+
- 🔍 **Intégration native de la recherche** et de la vérification des faits
|
|
12
|
+
- 👤 **Personnalisation adaptée à l'utilisateur** pour un raisonnement plus pertinent
|
|
13
|
+
- 📊 **Visualisations avancées** du processus de raisonnement
|
|
14
|
+
- ⚖️ **Système d'évaluation de la qualité** du raisonnement
|
|
15
|
+
- 👥 **Capacités de collaboration avancées** pour le travail d'équipe
|
|
16
|
+
- 🔌 **Écosystème d'outils MCP** profondément intégré
|
|
17
|
+
- 🤔 **Fonctionnalités de méta-cognition avancées** pour l'auto-analyse
|
|
18
|
+
|
|
19
|
+
## Installation
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
# Installer depuis npm
|
|
23
|
+
npm install -g smart-thinking-mcp
|
|
24
|
+
|
|
25
|
+
# Ou depuis GitHub
|
|
26
|
+
git clone https://github.com/votre-nom/smart-thinking-mcp.git
|
|
27
|
+
cd smart-thinking-mcp
|
|
28
|
+
npm install
|
|
29
|
+
npm run build
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## Configuration avec Claude Desktop
|
|
33
|
+
|
|
34
|
+
Ajoutez cette configuration à votre fichier `claude_desktop_config.json` :
|
|
35
|
+
|
|
36
|
+
```json
|
|
37
|
+
{
|
|
38
|
+
"mcpServers": {
|
|
39
|
+
"smart-thinking": {
|
|
40
|
+
"command": "npx",
|
|
41
|
+
"args": ["-y", "smart-thinking-mcp"]
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## Utilisation
|
|
48
|
+
|
|
49
|
+
Une fois configuré, Smart-Thinking peut être utilisé par Claude pour structurer son raisonnement. Les paramètres disponibles incluent :
|
|
50
|
+
|
|
51
|
+
- `thought`: Le contenu de la pensée actuelle
|
|
52
|
+
- `thoughtType`: Le type de pensée (regular, revision, meta, hypothesis, conclusion)
|
|
53
|
+
- `connections`: Connexions à d'autres pensées
|
|
54
|
+
- `requestSuggestions`: Demander des suggestions d'amélioration
|
|
55
|
+
- `generateVisualization`: Générer une visualisation du graphe de pensée
|
|
56
|
+
- `suggestTools`: Suggérer des outils MCP pertinents
|
|
57
|
+
|
|
58
|
+
### Exemples d'utilisation
|
|
59
|
+
|
|
60
|
+
1. **Raisonnement simple**
|
|
61
|
+
```
|
|
62
|
+
Utilise l'outil Smart-Thinking pour analyser les avantages et inconvénients des énergies renouvelables.
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
2. **Avec visualisation**
|
|
66
|
+
```
|
|
67
|
+
Utilise Smart-Thinking avec visualisation pour développer une stratégie marketing.
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
3. **Avec recherche intégrée**
|
|
71
|
+
```
|
|
72
|
+
Utilise Smart-Thinking avec recherche pour analyser les dernières avancées en IA.
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## Comparaison avec Sequential-Thinking
|
|
76
|
+
|
|
77
|
+
Smart-Thinking représente une évolution majeure par rapport à Sequential-Thinking, apportant:
|
|
78
|
+
|
|
79
|
+
1. Une structure de pensée multidimensionnelle plutôt que linéaire
|
|
80
|
+
2. Une capacité d'adaptation dynamique au contexte et aux besoins
|
|
81
|
+
3. Des fonctionnalités avancées de mémoire, d'auto-apprentissage et de collaboration
|
|
82
|
+
4. Une intégration plus profonde avec l'écosystème d'outils MCP
|
|
83
|
+
|
|
84
|
+
## Architecture technique
|
|
85
|
+
|
|
86
|
+
```
|
|
87
|
+
smart-thinking-mcp/
|
|
88
|
+
├── src/
|
|
89
|
+
│ ├── index.ts # Point d'entrée du serveur MCP
|
|
90
|
+
│ ├── thought-graph.ts # Implémentation du graphe de pensée
|
|
91
|
+
│ ├── memory-manager.ts # Gestionnaire de mémoire persistante
|
|
92
|
+
│ ├── tool-integrator.ts # Intégration avec d'autres outils MCP
|
|
93
|
+
│ ├── quality-evaluator.ts # Évaluation de la qualité des pensées
|
|
94
|
+
│ ├── visualizer.ts # Générateur de visualisations
|
|
95
|
+
│ └── types.ts # Définitions des types TypeScript
|
|
96
|
+
├── package.json
|
|
97
|
+
├── tsconfig.json
|
|
98
|
+
├── README.md
|
|
99
|
+
└── LICENSE
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
## Licence
|
|
103
|
+
|
|
104
|
+
MIT
|
package/build/index.d.ts
ADDED
package/build/index.js
ADDED
|
@@ -0,0 +1,296 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
const mcp_js_1 = require("@modelcontextprotocol/sdk/server/mcp.js");
|
|
5
|
+
const stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js");
|
|
6
|
+
const zod_1 = require("zod");
|
|
7
|
+
const thought_graph_1 = require("./thought-graph");
|
|
8
|
+
const memory_manager_1 = require("./memory-manager");
|
|
9
|
+
const tool_integrator_1 = require("./tool-integrator");
|
|
10
|
+
const quality_evaluator_1 = require("./quality-evaluator");
|
|
11
|
+
const visualizer_1 = require("./visualizer");
|
|
12
|
+
/**
|
|
13
|
+
* Point d'entrée du serveur MCP Smart-Thinking
|
|
14
|
+
*/
|
|
15
|
+
// Afficher un message de bienvenue sur stderr (n'affecte pas la communication JSON)
|
|
16
|
+
console.error(`
|
|
17
|
+
╔══════════════════════════════════════════════════════════════╗
|
|
18
|
+
║ ║
|
|
19
|
+
║ Smart-Thinking MCP Server ║
|
|
20
|
+
║ Un outil de raisonnement multi-dimensionnel avancé ║
|
|
21
|
+
║ ║
|
|
22
|
+
║ Version: 1.0.0 ║
|
|
23
|
+
║ ║
|
|
24
|
+
║ Démarrage du serveur... ║
|
|
25
|
+
║ ║
|
|
26
|
+
╚══════════════════════════════════════════════════════════════╝
|
|
27
|
+
`);
|
|
28
|
+
// Créer une instance de chaque composant
|
|
29
|
+
const thoughtGraph = new thought_graph_1.ThoughtGraph();
|
|
30
|
+
const memoryManager = new memory_manager_1.MemoryManager();
|
|
31
|
+
const toolIntegrator = new tool_integrator_1.ToolIntegrator();
|
|
32
|
+
const qualityEvaluator = new quality_evaluator_1.QualityEvaluator();
|
|
33
|
+
const visualizer = new visualizer_1.Visualizer();
|
|
34
|
+
// Créer une instance du serveur MCP
|
|
35
|
+
const server = new mcp_js_1.McpServer({
|
|
36
|
+
name: "smart-thinking-mcp",
|
|
37
|
+
version: "1.0.0",
|
|
38
|
+
capabilities: {}
|
|
39
|
+
});
|
|
40
|
+
// Définir le schéma des paramètres pour l'outil smartthinking
|
|
41
|
+
const SmartThinkingParamsSchema = zod_1.z.object({
|
|
42
|
+
thought: zod_1.z.string().describe('Le contenu de la pensée actuelle - OBLIGATOIRE - Exemple: "L\'intelligence artificielle va transformer profondément le marché du travail" - ' +
|
|
43
|
+
'Smart-Thinking est un outil de raisonnement multi-dimensionnel qui organise les pensées en graphe plutôt qu\'en séquence linéaire, ' +
|
|
44
|
+
'permettant une analyse plus riche, flexible et interconnectée des problèmes complexes.'),
|
|
45
|
+
thoughtType: zod_1.z.enum(['regular', 'revision', 'meta', 'hypothesis', 'conclusion']).default('regular')
|
|
46
|
+
.describe('Le type de pensée - Définit la nature et la fonction de cette pensée dans le graphe:\n' +
|
|
47
|
+
'- "regular": Pensée standard/normale pour développer une idée\n' +
|
|
48
|
+
'- "meta": Réflexion sur le processus de pensée lui-même pour évaluer la démarche\n' +
|
|
49
|
+
'- "revision": Modification ou amélioration d\'une pensée précédente\n' +
|
|
50
|
+
'- "hypothesis": Formulation d\'une hypothèse à tester ou explorer\n' +
|
|
51
|
+
'- "conclusion": Synthèse finale ou déduction globale'),
|
|
52
|
+
connections: zod_1.z.array(zod_1.z.any()).default([])
|
|
53
|
+
.describe('Connexions à d\'autres pensées - Permet de créer des liens entre les pensées pour former un graphe - ' +
|
|
54
|
+
'Format: [{targetId: "id-pensée-précédente", type: "type-connexion", strength: 0.8}] - ' +
|
|
55
|
+
'Types de connexions disponibles:\n' +
|
|
56
|
+
'- "supports": Pensée qui renforce une autre\n' +
|
|
57
|
+
'- "contradicts": Pensée qui s\'oppose à une autre\n' +
|
|
58
|
+
'- "refines": Pensée qui précise ou améliore une autre\n' +
|
|
59
|
+
'- "branches": Pensée qui explore une nouvelle direction\n' +
|
|
60
|
+
'- "derives": Pensée qui découle logiquement d\'une autre\n' +
|
|
61
|
+
'- "associates": Pensée simplement liée à une autre'),
|
|
62
|
+
requestSuggestions: zod_1.z.boolean().default(false)
|
|
63
|
+
.describe('Demander des suggestions d\'amélioration du raisonnement - Exemple: true - ' +
|
|
64
|
+
'Fournit des recommandations spécifiques pour améliorer la qualité, la pertinence et la rigueur de la pensée actuelle, ' +
|
|
65
|
+
'et détecte les biais cognitifs potentiels'),
|
|
66
|
+
generateVisualization: zod_1.z.boolean().default(false)
|
|
67
|
+
.describe('Générer une visualisation du graphe de pensée - Exemple: true - ' +
|
|
68
|
+
'Crée une représentation visuelle du réseau de pensées et leurs connexions selon le type de visualisation choisi'),
|
|
69
|
+
visualizationType: zod_1.z.enum(['graph', 'chronological', 'thematic']).default('graph')
|
|
70
|
+
.describe('Type de visualisation à générer:\n' +
|
|
71
|
+
'- "graph": Réseau de connexions entre pensées montrant les relations directes\n' +
|
|
72
|
+
'- "chronological": Timeline séquentielle montrant l\'évolution temporelle du raisonnement\n' +
|
|
73
|
+
'- "thematic": Clusters par thème regroupant les pensées selon leurs similitudes conceptuelles'),
|
|
74
|
+
suggestTools: zod_1.z.boolean().default(true)
|
|
75
|
+
.describe('Suggérer des outils MCP pertinents pour cette étape - Exemple: true - ' +
|
|
76
|
+
'Recommande des outils externes (recherche web, exécution de code, etc.) basés sur le contenu de la pensée ' +
|
|
77
|
+
'pour enrichir le raisonnement avec des données ou des analyses complémentaires'),
|
|
78
|
+
sessionId: zod_1.z.string().optional()
|
|
79
|
+
.describe('Identifiant de session pour maintenir l\'\u00e9tat entre les appels - Optionnel - ' +
|
|
80
|
+
'Permet de conserver le graphe de pensées entre plusieurs invocations et de bâtir un raisonnement progressif'),
|
|
81
|
+
userId: zod_1.z.string().optional()
|
|
82
|
+
.describe('Identifiant de l\'utilisateur pour la personnalisation - Optionnel - ' +
|
|
83
|
+
'Adapte les recommandations aux préférences et au style de raisonnement de l\'utilisateur'),
|
|
84
|
+
help: zod_1.z.boolean().default(true)
|
|
85
|
+
.describe('Afficher le guide d\'utilisation complet - Exemple: true - ' +
|
|
86
|
+
'Renvoie une documentation détaillée sur l\'utilisation de Smart-Thinking, ses fonctionnalités et des exemples d\'utilisation')
|
|
87
|
+
});
|
|
88
|
+
// Le guide d'utilisation est maintenant intégré directement dans les descriptions des paramètres
|
|
89
|
+
// Définir l'outil smartthinking
|
|
90
|
+
server.tool('smartthinking', SmartThinkingParamsSchema.shape, async (params) => {
|
|
91
|
+
// Si le paramètre help est activé et qu'aucune pensée n'est fournie, afficher le guide d'utilisation
|
|
92
|
+
if (params.help && !params.thought) {
|
|
93
|
+
const guideContent = `# Guide d'utilisation de Smart-Thinking
|
|
94
|
+
|
|
95
|
+
## Qu'est-ce que Smart-Thinking?
|
|
96
|
+
|
|
97
|
+
Smart-Thinking est un outil de raisonnement avancé qui permet d'organiser les pensées en un graphe multi-dimensionnel plutôt qu'en une séquence linéaire. Il représente une évolution majeure par rapport au raisonnement séquentiel classique.
|
|
98
|
+
|
|
99
|
+
## Principales caractéristiques
|
|
100
|
+
|
|
101
|
+
### 1. Structure en graphe multi-dimensionnel
|
|
102
|
+
- **Organisation non-linéaire** des pensées avec des connexions multiples
|
|
103
|
+
- **Types de pensées variés**:
|
|
104
|
+
- **regular**: Pensée standard/normale
|
|
105
|
+
- **meta**: Réflexion sur le processus de pensée lui-même
|
|
106
|
+
- **hypothesis**: Formulation d'une hypothèse à tester
|
|
107
|
+
- **revision**: Modification ou amélioration d'une pensée précédente
|
|
108
|
+
- **conclusion**: Synthèse ou déduction finale
|
|
109
|
+
- **Types de connexions**:
|
|
110
|
+
- **supports**: Pensée qui renforce une autre
|
|
111
|
+
- **contradicts**: Pensée qui s'oppose à une autre
|
|
112
|
+
- **refines**: Pensée qui précise ou améliore une autre
|
|
113
|
+
- **branches**: Pensée qui explore une nouvelle direction
|
|
114
|
+
- **derives**: Pensée qui découle logiquement d'une autre
|
|
115
|
+
- **associates**: Pensée simplement liée à une autre
|
|
116
|
+
|
|
117
|
+
### 2. Évaluation automatique de la qualité
|
|
118
|
+
- Mesure de **confiance** (degré de certitude)
|
|
119
|
+
- Mesure de **pertinence** (lien avec le contexte)
|
|
120
|
+
- Mesure de **qualité globale** (structure, clarté, profondeur)
|
|
121
|
+
- Détection des **biais cognitifs potentiels**
|
|
122
|
+
|
|
123
|
+
### 3. Mémoire persistante
|
|
124
|
+
- Conservation des pensées entre les sessions
|
|
125
|
+
- Récupération contextuelle d'informations pertinentes
|
|
126
|
+
- Enrichissement progressif de la base de connaissances
|
|
127
|
+
|
|
128
|
+
### 4. Visualisations avancées
|
|
129
|
+
- **graph**: Réseau de connexions entre pensées
|
|
130
|
+
- **chronological**: Timeline du développement du raisonnement
|
|
131
|
+
- **thematic**: Regroupement par clusters thématiques
|
|
132
|
+
|
|
133
|
+
### 5. Intégration d'outils externes
|
|
134
|
+
- Suggestions contextuelles d'outils MCP pertinents
|
|
135
|
+
- Priorisation intelligente selon le contexte actuel
|
|
136
|
+
|
|
137
|
+
## Exemples d'utilisation
|
|
138
|
+
|
|
139
|
+
### Exemple 1: Pensée initiale simple
|
|
140
|
+
\`\`\`
|
|
141
|
+
Utilise l'outil smartthinking avec thought="L'intelligence artificielle va transformer profondément le marché du travail dans les prochaines décennies."
|
|
142
|
+
\`\`\`
|
|
143
|
+
|
|
144
|
+
### Exemple 2: Avec visualisation
|
|
145
|
+
\`\`\`
|
|
146
|
+
Utilise l'outil smartthinking avec:
|
|
147
|
+
thought="Les énergies renouvelables représentent une solution viable au changement climatique, mais posent des défis d'implémentation."
|
|
148
|
+
generateVisualization=true
|
|
149
|
+
\`\`\`
|
|
150
|
+
|
|
151
|
+
### Exemple 3: Pensée de type hypothèse avec suggestions
|
|
152
|
+
\`\`\`
|
|
153
|
+
Utilise l'outil smartthinking avec:
|
|
154
|
+
thought="Si nous réduisons les émissions de carbone de 50% d'ici 2030, nous pourrons limiter le réchauffement global à moins de 2°C."
|
|
155
|
+
thoughtType="hypothesis"
|
|
156
|
+
requestSuggestions=true
|
|
157
|
+
\`\`\`
|
|
158
|
+
|
|
159
|
+
### Exemple 4: Connexion à une pensée précédente
|
|
160
|
+
\`\`\`
|
|
161
|
+
Utilise l'outil smartthinking avec:
|
|
162
|
+
thought="Cette approche présente toutefois des défis économiques importants pour les pays en développement."
|
|
163
|
+
connections=[{targetId:"PENSEE-ID-PRECEDENTE", type:"refines", strength:0.8}]
|
|
164
|
+
\`\`\`
|
|
165
|
+
|
|
166
|
+
## Conseils d'utilisation avancée
|
|
167
|
+
|
|
168
|
+
1. **Commencez simplement**: Débutez avec des pensées de type "regular" avant d'explorer des types plus spécifiques
|
|
169
|
+
2. **Utilisez les méta-pensées**: Évaluez régulièrement votre processus avec des pensées de type "meta"
|
|
170
|
+
3. **Créez des connexions riches**: Variez les types de connexions pour un réseau de pensée plus nuancé
|
|
171
|
+
4. **Alternez analyse et synthèse**: Combinez l'exploration détaillée avec des moments de synthèse
|
|
172
|
+
5. **Exploitez les visualisations**: Utilisez différents types de visualisation selon vos besoins d'analyse
|
|
173
|
+
|
|
174
|
+
Pour plus d'informations, consultez le paramètre help=true de l'outil.
|
|
175
|
+
`;
|
|
176
|
+
return {
|
|
177
|
+
content: [
|
|
178
|
+
{
|
|
179
|
+
type: 'text',
|
|
180
|
+
text: guideContent
|
|
181
|
+
}
|
|
182
|
+
]
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
// Vérifier explicitement si le paramètre 'thought' est présent
|
|
186
|
+
if (!params.thought) {
|
|
187
|
+
console.error('Smart-Thinking: ERROR - Paramètre "thought" manquant');
|
|
188
|
+
return {
|
|
189
|
+
isError: true,
|
|
190
|
+
content: [
|
|
191
|
+
{
|
|
192
|
+
type: 'text',
|
|
193
|
+
text: JSON.stringify({
|
|
194
|
+
error: "Le paramètre 'thought' est obligatoire.",
|
|
195
|
+
example: "Pour utiliser cet outil correctement, veuillez fournir une pensée à analyser.",
|
|
196
|
+
usage: {
|
|
197
|
+
thought: "Voici ma pensée à analyser",
|
|
198
|
+
thoughtType: "regular",
|
|
199
|
+
generateVisualization: true
|
|
200
|
+
},
|
|
201
|
+
tip: "Utilisez help=true pour afficher le guide d'utilisation complet."
|
|
202
|
+
}, null, 2)
|
|
203
|
+
}
|
|
204
|
+
]
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
// Utiliser console.error pour les messages de débogage qui ne seront pas interprétés comme JSON
|
|
208
|
+
console.error('Smart-Thinking: traitement de la pensée:', params.thought);
|
|
209
|
+
// Ajouter la pensée au graphe
|
|
210
|
+
const thoughtId = thoughtGraph.addThought(params.thought, params.thoughtType, params.connections);
|
|
211
|
+
// Évaluer la qualité de la pensée
|
|
212
|
+
const qualityMetrics = qualityEvaluator.evaluate(thoughtId, thoughtGraph);
|
|
213
|
+
// Mettre à jour les métriques dans le graphe
|
|
214
|
+
thoughtGraph.updateThoughtMetrics(thoughtId, qualityMetrics);
|
|
215
|
+
// Préparer la réponse
|
|
216
|
+
const response = {
|
|
217
|
+
thoughtId,
|
|
218
|
+
thought: params.thought,
|
|
219
|
+
thoughtType: params.thoughtType || 'regular',
|
|
220
|
+
qualityMetrics
|
|
221
|
+
};
|
|
222
|
+
// Si demandé, suggérer des outils
|
|
223
|
+
if (params.suggestTools) {
|
|
224
|
+
response.suggestedTools = toolIntegrator.suggestTools(params.thought);
|
|
225
|
+
}
|
|
226
|
+
// Si demandé, générer une visualisation
|
|
227
|
+
if (params.generateVisualization) {
|
|
228
|
+
const visualizationType = params.visualizationType || 'graph';
|
|
229
|
+
switch (visualizationType) {
|
|
230
|
+
case 'chronological':
|
|
231
|
+
response.visualization = visualizer.generateChronologicalVisualization(thoughtGraph);
|
|
232
|
+
break;
|
|
233
|
+
case 'thematic':
|
|
234
|
+
response.visualization = visualizer.generateThematicVisualization(thoughtGraph);
|
|
235
|
+
break;
|
|
236
|
+
case 'graph':
|
|
237
|
+
default:
|
|
238
|
+
response.visualization = visualizer.generateVisualization(thoughtGraph, thoughtId);
|
|
239
|
+
break;
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
// Récupérer les mémoires pertinentes
|
|
243
|
+
response.relevantMemories = memoryManager.getRelevantMemories(params.thought);
|
|
244
|
+
// Suggérer les prochaines étapes
|
|
245
|
+
response.suggestedNextSteps = thoughtGraph.suggestNextSteps();
|
|
246
|
+
// Stocker la pensée actuelle dans la mémoire pour les sessions futures
|
|
247
|
+
if (response.qualityMetrics.quality > 0.7) {
|
|
248
|
+
// Ne stocker que les pensées de haute qualité
|
|
249
|
+
const tags = params.thought
|
|
250
|
+
.toLowerCase()
|
|
251
|
+
.split(/\W+/)
|
|
252
|
+
.filter((word) => word.length > 4)
|
|
253
|
+
.slice(0, 5);
|
|
254
|
+
memoryManager.addMemory(params.thought, tags);
|
|
255
|
+
}
|
|
256
|
+
console.error('Smart-Thinking: pensée traitée avec succès, id:', thoughtId);
|
|
257
|
+
// Formater la réponse pour MCP (doit inclure le champ content obligatoire)
|
|
258
|
+
return {
|
|
259
|
+
content: [
|
|
260
|
+
{
|
|
261
|
+
type: 'text',
|
|
262
|
+
text: JSON.stringify(response, null, 2)
|
|
263
|
+
}
|
|
264
|
+
]
|
|
265
|
+
};
|
|
266
|
+
});
|
|
267
|
+
// Créer et connecter le transport
|
|
268
|
+
const transport = new stdio_js_1.StdioServerTransport();
|
|
269
|
+
// Démarrer le serveur
|
|
270
|
+
async function start() {
|
|
271
|
+
try {
|
|
272
|
+
await server.connect(transport);
|
|
273
|
+
// Utiliser console.error pour éviter que ces messages soient interprétés comme du JSON
|
|
274
|
+
console.error('Smart-Thinking MCP Server démarré avec succès.');
|
|
275
|
+
console.error('L\'outil "smartthinking" est maintenant disponible pour Claude.');
|
|
276
|
+
console.error('La documentation est automatiquement fournie à Claude lors de la première utilisation.');
|
|
277
|
+
// Afficher un exemple d'utilisation pour aider les utilisateurs
|
|
278
|
+
console.error('\n-------------------- EXEMPLE D\'UTILISATION --------------------');
|
|
279
|
+
console.error('Pour utiliser l\'outil correctement, demandez à Claude:');
|
|
280
|
+
console.error('"Utilise l\'outil smartthinking avec la pensée suivante: Voici ma pensée à analyser"');
|
|
281
|
+
console.error('ou');
|
|
282
|
+
console.error('"Utilise l\'outil smartthinking avec les paramètres suivants:\n');
|
|
283
|
+
console.error('thought: Voici ma pensée à analyser\n');
|
|
284
|
+
console.error('thoughtType: regular\n');
|
|
285
|
+
console.error('generateVisualization: true"');
|
|
286
|
+
console.error('\nPar défaut, l\'outil fournit sa documentation à Claude. Si vous voulez désactiver cela:');
|
|
287
|
+
console.error('"Utilise l\'outil smartthinking avec help=false et thought=..."');
|
|
288
|
+
console.error('----------------------------------------------------------------\n');
|
|
289
|
+
}
|
|
290
|
+
catch (error) {
|
|
291
|
+
console.error('Erreur lors du démarrage du serveur:', error);
|
|
292
|
+
process.exit(1);
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
start();
|
|
296
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { MemoryItem } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Classe qui gère la mémoire persistante des sessions précédentes
|
|
4
|
+
*/
|
|
5
|
+
export declare class MemoryManager {
|
|
6
|
+
private memories;
|
|
7
|
+
private knowledgeBase;
|
|
8
|
+
constructor();
|
|
9
|
+
/**
|
|
10
|
+
* Génère un identifiant unique
|
|
11
|
+
*/
|
|
12
|
+
private generateUniqueId;
|
|
13
|
+
/**
|
|
14
|
+
* Charge les mémoires et la base de connaissances depuis le stockage persistant
|
|
15
|
+
* Dans une implémentation réelle, cela pourrait être un fichier, une base de données, etc.
|
|
16
|
+
*/
|
|
17
|
+
private loadFromStorage;
|
|
18
|
+
/**
|
|
19
|
+
* Simule la récupération de mémoires sauvegardées
|
|
20
|
+
* Dans une implémentation réelle, remplacer par une lecture de fichier/DB
|
|
21
|
+
*/
|
|
22
|
+
private getSavedMemories;
|
|
23
|
+
/**
|
|
24
|
+
* Simule la récupération de connaissances sauvegardées
|
|
25
|
+
* Dans une implémentation réelle, remplacer par une lecture de fichier/DB
|
|
26
|
+
*/
|
|
27
|
+
private getSavedKnowledge;
|
|
28
|
+
/**
|
|
29
|
+
* Sauvegarde l'état actuel dans le stockage persistant
|
|
30
|
+
* Dans une implémentation réelle, cela pourrait être un fichier, une base de données, etc.
|
|
31
|
+
*/
|
|
32
|
+
private saveToStorage;
|
|
33
|
+
/**
|
|
34
|
+
* Ajoute un élément à la mémoire
|
|
35
|
+
*
|
|
36
|
+
* @param content Le contenu de l'élément de mémoire
|
|
37
|
+
* @param tags Les tags associés
|
|
38
|
+
* @returns L'identifiant de l'élément ajouté
|
|
39
|
+
*/
|
|
40
|
+
addMemory(content: string, tags?: string[]): string;
|
|
41
|
+
/**
|
|
42
|
+
* Récupère un élément de mémoire par son identifiant
|
|
43
|
+
*
|
|
44
|
+
* @param id L'identifiant de l'élément
|
|
45
|
+
* @returns L'élément de mémoire ou undefined si non trouvé
|
|
46
|
+
*/
|
|
47
|
+
getMemory(id: string): MemoryItem | undefined;
|
|
48
|
+
/**
|
|
49
|
+
* Récupère les éléments de mémoire les plus récents
|
|
50
|
+
*
|
|
51
|
+
* @param limit Le nombre maximum d'éléments à récupérer
|
|
52
|
+
* @returns Un tableau des éléments les plus récents
|
|
53
|
+
*/
|
|
54
|
+
getRecentMemories(limit?: number): MemoryItem[];
|
|
55
|
+
/**
|
|
56
|
+
* Récupère les éléments de mémoire les plus pertinents pour un contexte donné
|
|
57
|
+
*
|
|
58
|
+
* @param context Le contexte pour lequel chercher des éléments pertinents
|
|
59
|
+
* @param limit Le nombre maximum d'éléments à récupérer
|
|
60
|
+
* @returns Un tableau des éléments les plus pertinents
|
|
61
|
+
*/
|
|
62
|
+
getRelevantMemories(context: string, limit?: number): MemoryItem[];
|
|
63
|
+
/**
|
|
64
|
+
* Récupère les éléments de mémoire par tag
|
|
65
|
+
*
|
|
66
|
+
* @param tag Le tag à rechercher
|
|
67
|
+
* @param limit Le nombre maximum d'éléments à récupérer
|
|
68
|
+
* @returns Un tableau des éléments correspondant au tag
|
|
69
|
+
*/
|
|
70
|
+
getMemoriesByTag(tag: string, limit?: number): MemoryItem[];
|
|
71
|
+
/**
|
|
72
|
+
* Ajoute ou met à jour un élément dans la base de connaissances
|
|
73
|
+
*
|
|
74
|
+
* @param key La clé de l'élément
|
|
75
|
+
* @param value La valeur de l'élément
|
|
76
|
+
*/
|
|
77
|
+
setKnowledge(key: string, value: any): void;
|
|
78
|
+
/**
|
|
79
|
+
* Récupère un élément de la base de connaissances
|
|
80
|
+
*
|
|
81
|
+
* @param key La clé de l'élément
|
|
82
|
+
* @returns La valeur de l'élément ou undefined si non trouvé
|
|
83
|
+
*/
|
|
84
|
+
getKnowledge(key: string): any;
|
|
85
|
+
/**
|
|
86
|
+
* Efface toutes les mémoires et connaissances
|
|
87
|
+
*/
|
|
88
|
+
clear(): void;
|
|
89
|
+
}
|