Ali Hmaou commited on
Commit
b33c1fc
·
1 Parent(s): 17d1159

Version 1.93RC

Browse files
Files changed (2) hide show
  1. README.md +97 -48
  2. src/mcp_server/server.py +62 -22
README.md CHANGED
@@ -1,86 +1,135 @@
1
  ---
2
- title: META MCP
3
- emoji: 🦀
4
  colorFrom: purple
5
  colorTo: pink
6
  sdk: gradio
7
- sdk_version: 6.0.0
8
- app_file: app.py
9
  pinned: false
 
 
10
  ---
11
 
12
- # 🏭 Méta-MCP Fractal Factory
13
 
14
- Le Méta-MCP est une usine logicielle permettant de créer, coder et déployer d'autres serveurs MCP (Model Context Protocol) directement depuis une interface conversationnelle ou via une API.
15
 
16
- ## 🌟 Concept
17
 
18
- Méta-MCP est un "Serveur MCP créateur de Serveurs MCP". Il permet à des agents IA (comme Claude ou ChatGPT) ou à des utilisateurs humains de créer de nouveaux outils et de les déployer instantanément, étendant ainsi les capacités de l'agent de manière récursive.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
19
 
20
- ```mermaid
21
- graph TD
22
- User[Utilisateur / Agent] -->|1. Décrit l'outil| Meta[🏭 Méta-MCP Server]
23
- Meta -->|2. Génère le code| LLM[LLM (Qwen/Kimi)]
24
- Meta -->|3. Valide le code| Logic[Validateur Logique]
25
- Meta -->|4. Déploie| HF[🤗 Hugging Face Space]
26
- HF -->|5. Expose| NewMCP[Nouveau Serveur MCP]
27
- NewMCP -->|6. Utilise| User
28
- ```
29
 
30
  ## 🚀 Fonctionnalités Clés
31
 
32
- 1. **Initialisation Rapide** : Créez un projet en une phrase ("Je veux un outil pour avoir la météo de ma ville") ou via une spec OpenAPI complète.
33
- 2. **Génération de Code par IA** : Utilise des modèles performants (Qwen 2.5 Coder, etc.) pour produire du code Python prêt à l'emploi.
34
- 3. **Sandbox & Validation** : Permet de vérifier, éditer et valider le code avant déploiement.
35
- 4. **Déploiement Automatisé** : Déploie en quelques secondes sur Hugging Face Spaces (soit un nouveau Space dédié, soit en ajoutant l'outil à une "Toolbox" existante).
36
- 5. **Compatibilité MCP Native** : Les outils générés sont immédiatement utilisables via le protocole MCP (SSE).
37
 
38
- ## 🛠️ Installation & Utilisation
39
 
40
- ### 1. Installation Locale
41
 
42
- ```bash
43
- git clone https://github.com/votre-user/metamcp_proto.git
44
- cd metamcp_proto
45
- pip install -r requirements.txt
46
- export HF_TOKEN=hf_... # Votre token Hugging Face Write
47
- python src/mcp_server/server.py
48
- ```
 
 
 
 
 
 
 
 
 
 
 
 
49
 
50
  ### 2. Utilisation avec Claude Desktop
51
 
52
- Pour permettre à Claude de créer ses propres outils via Méta-MCP, ajoutez la configuration suivante à votre fichier `claude_desktop_config.json` :
53
 
54
  ```json
55
  {
56
  "mcpServers": {
57
- "metamcp": {
58
  "command": "npx",
59
  "args": [
60
  "-y",
61
- "@modelcontextprotocol/server-sse-client",
62
- "--url",
63
- "http://localhost:7860/gradio_api/mcp/?tools=step_2_logic_definition,step_1_initialisation_and_proposal,step_3_deployment,step_0_configuration,expert_step1_propose_implementation,expert_step2_define_logic"
64
  ]
65
  }
66
  }
67
  }
68
  ```
69
 
70
- > **Note** : L'URL ci-dessus filtre spécifiquement les outils d'administration du Méta-MCP pour éviter de polluer le contexte avec les outils internes de Gradio.
 
 
71
 
72
- ## 📚 Guide Rapide
73
 
74
- 1. **Onglet Initialisation** : Entrez le nom (ex: `currency-converter`) et la description. Cliquez sur "Initialiser".
75
- 2. **Onglet Logique** : L'IA propose une implémentation. Vérifiez les `requirements` (ex: `requests`) et le code. Cliquez sur "Valider".
76
- 3. **Onglet Déploiement** : Cliquez sur "Déployer". Récupérez l'URL de votre nouveau serveur MCP.
77
- 4. **Profit** : Ajoutez ce nouveau serveur à Claude et profitez de votre nouvel outil !
78
 
79
- ## 🤖 API pour Agents
 
 
 
 
80
 
81
- Ce serveur expose ses fonctionnalités via MCP. Un agent peut donc effectuer toutes ces actions de manière autonome :
82
 
83
- * `step_1_initialisation_and_proposal` : Pour commencer un projet.
84
- * `step_2_logic_definition` : Pour sauvegarder le code.
85
- * `step_3_deployment` : Pour mettre en production.
86
- * `expert_...` : Outils avancés pour les agents experts qui veulent bypasser certaines étapes UI.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  ---
2
+ title: MCEPTION - Meta MCP Factory
3
+ emoji: 🏭
4
  colorFrom: purple
5
  colorTo: pink
6
  sdk: gradio
7
+ sdk_version: 5.9.1
8
+ app_file: src/mcp_server/server.py
9
  pinned: false
10
+ license: mit
11
+ short_description: Create and deploy MCP servers using natural language.
12
  ---
13
 
14
+ # 🏭 MCEPTION : La Méta-Factory de Serveurs MCP
15
 
16
+ **MCEPTION** est un serveur MCP (Model Context Protocol) propulsé par **Gradio** qui permet de générer, tester et déployer d'autres serveurs MCP à la volée.
17
 
18
+ C'est un "Serveur MCP créateur de Serveurs MCP". Il permet à des agents IA (comme Claude, ChatGPT ou des agents autonomes `smolagents`) ou à des utilisateurs humains de créer de nouveaux serveurs MCP et outils ("Tools") associés personnalisés et de les déployer instantanément sur Hugging Face Spaces, étendant ainsi les capacités de leurs agents de manière récursive.
19
 
20
+ ## 🌟 Pourquoi MCEPTION ?
21
+
22
+ Avec la généralisation des outils conversationnels et l'avènement annoncé de l'internet génératif, il devient essentiel pour les entreprises et les administrations de maîtriser les informations communiquées au public au travers de ces IA.
23
+
24
+ Le protocole MCP combiné aux capacités de raisonnement des agents LLM offre aussi des possibilités quelques fois très difficiles à imaginer sans les implémenter et les tester. Il peut aussi parfois être décevant et nécessiter de nombreux réglages et ajustements. Si le protocole MCP est simple dans sa conception, il nécessite beaucoup de précaution pour qu'il fonctionne réellement bien.
25
+
26
+ MCEPTION répond à un besoin actuel, celui de fournir aux entreprises et aux administrations des outils, leur permettant de tester l'impact du protocole MCP pour leur activité.
27
+
28
+ Cet outil a ainsi été pensé de manière à profiter de la puissance de la structure agentique qui appelle le MCP (en général au travers de modèles top-tier), combiné aux LLM spécifiques tels que GPT OSS ou Kimi K2 thinking pour un codage réactif en phase de conception des outils.
29
+
30
+ Avec MCEPTION, les organisations peuvent directement essayer le MCP en essayant, par exemple, d'encapsuler des API existantes ou de créer des serveurs autour de fichiers de données, voir d'exposer des règles de gestion directement codées et permettant aux agents de répondre de façon déterministe et maîtrisée sur les sujets qui les concernent.
31
+
32
+ ## Un workflow intuitif pour les humains et pour les IA
33
+
34
+ L'outil a été conçu de manière à offrir un workflow de création intuitif que ce soit pour les humains ou pour les agents d'intelligence artificielle. Il permet notamment de tester directement au travers d'une instance smolagents le fonctionnement du serveur généré, de voir les outils s'afficher et de les essayer.
35
+
36
+ L'environnement idéal pour tester les serveurs MCP générés restent [Hugging Chat](https://huggingface.co/chat/) pour les modèles Open source grâce au reload à chaud des serveurs MCP et de leurs outils.
37
+
38
+ Côté outils propriétaires, le client local Claude fonctionne très bien et pour intégrer les les outils d'Claude sont fournis par l'application.
39
+
40
+ ## Merci Gradio
41
+
42
+ Ce projet illustre les capacités impressionnantes de Gradio à exposer des services MCP, il s'articule parfaitement avec l'infrastructure Spaces de Hugging Face, qui est très bien complété aujourd'hui par les services d'inférence, au travers de l'API d'inférence et de Hugging Chat.
43
 
 
 
 
 
 
 
 
 
 
44
 
45
  ## 🚀 Fonctionnalités Clés
46
 
47
+ * **Initialisation en Langage Naturel** : Décrivez simplement l'outil : *"Je veux un outil qui me donne la météo de Paris"* ou *"Crée un convertisseur de devises"*.
48
+ * **Génération de Code Intelligente** : Utilise des LLMs performants (GPT OSS, Kimi K2 Thinking) via les providers d'inférence routés par HuggingFace (Together AI, Hyperbolic) pour écrire le code Python.
49
+ * **Sandbox & Validation** : Vérifiez et modifiez le code proposé avant le déploiement.
50
+ * **Déploiement Automatisé sur HF Spaces** : En un clic (ou un appel d'outil), votre serveur MCP est en ligne, hébergé gratuitement sur Hugging Face Spaces.
51
+ * **Compatible MCP Natif** : Les outils générés sont immédiatement utilisables via le protocole MCP exposé nativement par Gradio 6.
52
 
53
+ ## 🛠️ Architecture
54
 
 
55
 
56
+
57
+ ## 📚 Installation & Démarrage
58
+
59
+ ### 1. Déploiement Rapide sur Hugging Face Spaces
60
+
61
+ C'est la méthode recommandée pour utiliser MCEPTION sans installation locale.
62
+
63
+ 1. **Dupliquer le Space** :
64
+ * Cliquez sur le menu (trois points) en haut à droite de cette page, puis sur **"Duplicate this Space"**.
65
+ * Choisissez un nom pour votre Space et validez.
66
+
67
+ 2. **Configuration du Token (Indispensable)** :
68
+ * Une fois le Space dupliqué, allez dans l'onglet **Settings** de votre nouveau Space.
69
+ * Descendez à la section **Variables and secrets**.
70
+ * Cliquez sur **New secret**.
71
+ * **Name** : `HF_TOKEN`
72
+ * **Value** : Votre token Hugging Face (assurez-vous qu'il a les permissions **WRITE**). Vous pouvez en créer un ici : [https://huggingface.co/settings/tokens](https://huggingface.co/settings/tokens).
73
+
74
+ *Le Space redémarrera automatiquement avec vos droits, prêt à créer de nouveaux Spaces pour vous !*
75
 
76
  ### 2. Utilisation avec Claude Desktop
77
 
78
+ Pour transformer votre Claude Desktop en "usine à outils", ajoutez la configuration suivante à votre fichier `claude_desktop_config.json` :
79
 
80
  ```json
81
  {
82
  "mcpServers": {
83
+ "mception": {
84
  "command": "npx",
85
  "args": [
86
  "-y",
87
+ "@modelcontextprotocol/server-sse",
88
+ "http://127.0.0.1:7860/gradio_api/mcp/sse"
 
89
  ]
90
  }
91
  }
92
  }
93
  ```
94
 
95
+ > **Note** : Si vous utilisez MCEPTION depuis un Space Hugging Face public, remplacez l'URL locale par l'URL de votre Space (ex: `https://alihmaou-metamcp-proto.hf.space/gradio_api/mcp/sse`).
96
+
97
+ ## 🤖 Guide pour les Agents (API)
98
 
99
+ MCEPTION expose une suite d'outils MCP permettant à un agent autonome de gérer tout le cycle de vie de création d'outil.
100
 
101
+ ### Workflow Typique
 
 
 
102
 
103
+ 1. **Configuration** (Optionnel) : `step_0_configuration` pour définir le user HF ou le token si non présent dans l'environnement.
104
+ 2. **Conception** : `expert_step1_propose_implementation` ou `step_1_initialisation_and_proposal`. L'agent soumet une description, le serveur renvoie un `draft_id` et une proposition de code.
105
+ 3. **Validation** : `expert_step2_define_logic`. L'agent confirme le code et les dépendances.
106
+ 4. **Déploiement** : `step_3_deployment`. Le serveur crée le Space Hugging Face.
107
+ 5. **Utilisation** : L'agent reçoit la config pour se connecter à ce nouveau serveur.
108
 
109
+ ### Liste des Outils Exposés
110
 
111
+ | Outil | Description |
112
+ | :--- | :--- |
113
+ | `step_0_configuration` | Configure l'environnement (User HF, Token, Default Space). |
114
+ | `step_1_initialisation_and_proposal` | (UI+API) Initialise un projet et propose une implémentation via LLM. |
115
+ | `step_2_logic_definition` | (UI+API) Valide et enregistre le code Python de l'outil. |
116
+ | `step_3_deployment` | (UI+API) Déploie l'outil sur un Space Hugging Face. |
117
+ | `expert_step1_propose_implementation` | (API Expert) Génère juste le code sans état UI (utile pour itérer). |
118
+ | `expert_step2_define_logic` | (API Expert) Définit la logique avec des entrées JSON complexes. |
119
+ | `util_delete_tool` | Supprime un outil d'un Space existant. |
120
+ | `util_get_tool_code` | Récupère le code source d'un outil existant pour inspection. |
121
+
122
+ ## 💡 Exemple de Prompt pour Claude
123
+
124
+ Une fois MCEPTION connecté à Claude, vous pouvez lui dire :
125
+
126
+ > "Crée-moi un outil qui permet de récupérer le prix actuel du Bitcoin en utilisant l'API CoinGecko, et déploie-le sur mon espace Hugging Face."
127
+
128
+ Claude va alors :
129
+ 1. Appeler `step_1` pour générer le code Python (`requests.get(...)`).
130
+ 2. Vous demander confirmation ou appeler `step_2` pour valider.
131
+ 3. Appeler `step_3` pour déployer.
132
+ 4. Vous donner la config pour utiliser ce nouvel outil "Bitcoin Price" immédiatement !
133
+
134
+ ---
135
+ *Fait avec ❤️, Python, Gradio et beaucoup d'Agents.*
src/mcp_server/server.py CHANGED
@@ -275,8 +275,8 @@ def util_get_tool_code(space_name: str, tool_name: str):
275
 
276
  # --- Construction de l'interface ---
277
 
278
- with gr.Blocks(title="MCEPTION") as demo:
279
- gr.Markdown("# 🏭 MCEPTION is the MCP of your MCPs")
280
  gr.Markdown("Ce serveur permet de créer et déployer d'autres serveurs MCP sur Hugging Face Spaces.")
281
 
282
  with gr.Tab("0. Setup & How-to"):
@@ -316,27 +316,66 @@ with gr.Blocks(title="MCEPTION") as demo:
316
  config_status = gr.Markdown("")
317
  btn_save_config.click(save_config_ui, inputs=[hf_user_profile, default_mcp_space_name, hf_token_input], outputs=config_status)
318
 
319
- gr.Markdown("## Comment utiliser le Méta-MCP")
320
- with gr.Accordion("Guide Utilisateur", open=True):
321
- gr.Markdown("""
322
- ### 1. Création d'un Outil
323
- * Allez dans l'onglet **1. Initialisation**.
324
- * Donnez un nom et décrivez ce que vous voulez (ou collez un Swagger).
325
- * Cliquez sur "Initialiser & Générer".
326
-
327
- ### 2. Validation du Code
328
- * Allez dans l'onglet **2. Précision de la logique**.
329
- * Vérifiez le code Python généré et les dépendances.
330
- * Cliquez sur "Générer le code" pour valider.
 
 
 
 
 
 
 
 
 
 
 
 
 
331
 
332
- ### 3. Déploiement
333
- * Allez dans l'onglet **3. Déploiement**.
334
- * Choisissez "New" pour créer un nouveau Space ou "Existing" pour ajouter à une Toolbox.
335
- * Cliquez sur "Déployer".
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
336
 
337
- ### 4. Test
338
- * Utilisez l'onglet **4. Playground** pour tester votre nouvel outil après son initialisation (environ 1 minute).
339
- """)
340
 
341
  with gr.Tab("1. Initialisation"):
342
  gr.Markdown("Commencez par initialiser un nouveau projet.")
@@ -530,7 +569,8 @@ with gr.Blocks(title="MCEPTION") as demo:
530
  except Exception as e:
531
  readme_content = f"Impossible de charger le README.md : {str(e)}"
532
 
533
- gr.Markdown(readme_content)
 
534
 
535
  # Câblage différé du déploiement (pour avoir accès à mcp_url_input défini dans le Tab 4)
536
  btn_deploy.click(
 
275
 
276
  # --- Construction de l'interface ---
277
 
278
+ with gr.Blocks(title="MCePtion") as demo:
279
+ gr.Markdown("# 🏭 MCePtion is the MCP of your MCPs")
280
  gr.Markdown("Ce serveur permet de créer et déployer d'autres serveurs MCP sur Hugging Face Spaces.")
281
 
282
  with gr.Tab("0. Setup & How-to"):
 
316
  config_status = gr.Markdown("")
317
  btn_save_config.click(save_config_ui, inputs=[hf_user_profile, default_mcp_space_name, hf_token_input], outputs=config_status)
318
 
319
+ gr.Markdown("## Comment utiliser ce serveur MCePtion ?")
320
+
321
+ with gr.Row():
322
+ with gr.Column("Guide Utilisateur"):
323
+ gr.Markdown("""
324
+ ## Guide d'utilisation de l'interface humaine
325
+
326
+ ### 1. Création d'un Outil
327
+ * Allez dans l'onglet **1. Initialisation**.
328
+ * Donnez un nom et décrivez ce que vous voulez (ou collez un Swagger).
329
+ * Cliquez sur "Initialiser & Générer".
330
+
331
+ ### 2. Validation du Code
332
+ * Allez dans l'onglet **2. Précision de la logique**.
333
+ * Vérifiez le code Python généré et les dépendances.
334
+ * Cliquez sur "Générer le code" pour valider.
335
+
336
+ ### 3. Déploiement
337
+ * Allez dans l'onglet **3. Déploiement**.
338
+ * Choisissez "New" pour créer un nouveau Space ou "Existing" pour ajouter à une Toolbox.
339
+ * Cliquez sur "Déployer".
340
+
341
+ ### 4. Test
342
+ * Utilisez l'onglet **4. Playground** pour tester votre nouvel outil après son initialisation (environ 1 minute).
343
+ """)
344
 
345
+ with gr.Column():
346
+ # Calcul dynamique des URLs pour affichage
347
+ _c_space_id = os.environ.get("SPACE_ID", None)
348
+ _c_space_host = os.environ.get("SPACE_HOST", "localhost:7860")
349
+
350
+ if _c_space_id:
351
+ _c_space_url = f"https://huggingface.co/spaces/{_c_space_id}"
352
+ _c_mcp_url = f"https://{_c_space_host}/gradio_api/mcp/"
353
+ _c_server_name = _c_space_id.split("/")[-1] if "/" in _c_space_id else _c_space_id
354
+ else:
355
+ _c_space_url = "http://localhost:7860"
356
+ _c_mcp_url = "http://localhost:7860/gradio_api/mcp/"
357
+ _c_server_name = "metamcp-local"
358
+
359
+ _c_claude_config = {
360
+ "mcpServers": {
361
+ _c_server_name: {
362
+ "command": "npx",
363
+ "args": [
364
+ "mcp-remote",
365
+ _c_mcp_url,
366
+ "--transport",
367
+ "streamable-http"
368
+ ]
369
+ }
370
+ }
371
+ }
372
+ _c_claude_config_str = json.dumps(_c_claude_config, indent=2)
373
+ gr.Markdown("""## Paramètres d'intégration MCP""")
374
+ gr.Code(label="URL of this space :", value=_c_space_url, language=None, interactive=False, lines=1)
375
+ gr.Code(label="URL of MCP endpoint :", value=_c_mcp_url, language=None, interactive=False, lines=1)
376
+ gr.Code(label="Claude Desktop Configuration", value=_c_claude_config_str, language="json", interactive=False)
377
+
378
 
 
 
 
379
 
380
  with gr.Tab("1. Initialisation"):
381
  gr.Markdown("Commencez par initialiser un nouveau projet.")
 
569
  except Exception as e:
570
  readme_content = f"Impossible de charger le README.md : {str(e)}"
571
 
572
+ with gr.Column():
573
+ gr.Markdown(readme_content)
574
 
575
  # Câblage différé du déploiement (pour avoir accès à mcp_url_input défini dans le Tab 4)
576
  btn_deploy.click(