Amélioration instructions config MCP et prompts
This commit is contained in:
+55
-20
@@ -16,7 +16,7 @@ register_page(
|
|||||||
description="Connectez votre agent IA aux données colibre via le protocole MCP.",
|
description="Connectez votre agent IA aux données colibre via le protocole MCP.",
|
||||||
)
|
)
|
||||||
|
|
||||||
MCP_ENABLED = os.getenv("DASH_MCP_ENABLED") == "true"
|
MCP_ENABLED = os.getenv("DASH_MCP_ENABLED", "").lower() == "true"
|
||||||
_TOKEN_PLACEHOLDER = "<VOTRE_JETON>"
|
_TOKEN_PLACEHOLDER = "<VOTRE_JETON>"
|
||||||
|
|
||||||
|
|
||||||
@@ -36,7 +36,7 @@ def _csrf(index: str):
|
|||||||
def client_instructions(url: str, token: str):
|
def client_instructions(url: str, token: str):
|
||||||
"""Construit les blocs d'instructions par client (fonction pure, testable)."""
|
"""Construit les blocs d'instructions par client (fonction pure, testable)."""
|
||||||
claude = f'claude mcp add colibre --scope user --transport http {url} --header "Authorization: Bearer {token}"'
|
claude = f'claude mcp add colibre --scope user --transport http {url} --header "Authorization: Bearer {token}"'
|
||||||
gemini = f'gemini mcp add --transport http --header "Authorization: Bearer {token}" colibre {url}'
|
gemini = f'gemini mcp add --scope user --transport http --header "Authorization: Bearer {token}" colibre {url}'
|
||||||
return dbc.Accordion(
|
return dbc.Accordion(
|
||||||
start_collapsed=True,
|
start_collapsed=True,
|
||||||
always_open=False,
|
always_open=False,
|
||||||
@@ -70,20 +70,20 @@ def client_instructions(url: str, token: str):
|
|||||||
title="Gemini CLI",
|
title="Gemini CLI",
|
||||||
children=[
|
children=[
|
||||||
html.Pre(html.Code(gemini)),
|
html.Pre(html.Code(gemini)),
|
||||||
html.P(
|
|
||||||
"Ou dans ~/.gemini/settings.json : un serveur mcpServers.colibre "
|
|
||||||
f'avec "httpUrl": "{url}" et "headers": '
|
|
||||||
f'{{"Authorization": "Bearer {token}"}}.'
|
|
||||||
),
|
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
dbc.AccordionItem(
|
dbc.AccordionItem(
|
||||||
title="Mistral Le Chat",
|
title="Mistral Vibe",
|
||||||
children=html.P(
|
children=dcc.Markdown(f"""
|
||||||
"Dans les connecteurs MCP, ajoutez un serveur HTTP d'URL "
|
1. Sur l'[interface Work](https://chat.mistral.ai/work), cliquez sur **Connectez vos applications...**
|
||||||
f"{url}, authentification « API Token », en-tête "
|
2. Cliquez sur **+ Ajouter un connecteur**
|
||||||
f"« Authorization » = « Bearer {token} »."
|
3. Cliquez sur **Connecteur personnalisé**
|
||||||
),
|
4. Titre : colibre, Description : Base de données ouverte des marchés publics français (par exemple)
|
||||||
|
5. Serveur : `{url}`
|
||||||
|
6. Méthode d'authentification : Authentification par token API
|
||||||
|
7. Valeur du header : Bearer <VOTRE_JETON>
|
||||||
|
8. Cliquez sur **Créer**
|
||||||
|
"""),
|
||||||
),
|
),
|
||||||
dbc.AccordionItem(
|
dbc.AccordionItem(
|
||||||
title="ChatGPT",
|
title="ChatGPT",
|
||||||
@@ -110,6 +110,36 @@ def client_instructions(url: str, token: str):
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def prompt_tips():
|
||||||
|
"""Exemples de prompts pour guider l'utilisateur (fonction pure, testable)."""
|
||||||
|
exemples = [
|
||||||
|
"Depuis colibre, trouve le dernier marché public attribué par le "
|
||||||
|
"département du Morbihan.",
|
||||||
|
"Donne-moi les statistiques de l'acheteur Rennes Métropole : nombre de "
|
||||||
|
"marchés, montant total et principaux titulaires.",
|
||||||
|
"Quelles entreprises ont remporté le plus de marchés d'informatique "
|
||||||
|
"(CPV 72) en Ille-et-Vilaine depuis 2023 ?",
|
||||||
|
"Reprends ces marchés en n'affichant que l'objet, le montant et la date "
|
||||||
|
"de notification, avec le lien vers chaque fiche.",
|
||||||
|
]
|
||||||
|
return html.Div(
|
||||||
|
[
|
||||||
|
html.P(
|
||||||
|
"L'assistant découvre seul les outils disponibles : décrivez "
|
||||||
|
"votre besoin en langage naturel. Quelques exemples :"
|
||||||
|
),
|
||||||
|
html.Ul([html.Li(html.Em(f"« {p} »")) for p in exemples]),
|
||||||
|
html.P(
|
||||||
|
"Astuce colonnes : demandez à l'assistant de vous proposer les "
|
||||||
|
"colonnes disponibles pour choisir précisément ce qui s'affiche sous la forme, si possible d'une liste de cases à cocher "
|
||||||
|
"(les colonnes par défaut restent pré-sélectionnées). Chaque "
|
||||||
|
"marché renvoyé inclut un lien direct vers sa fiche sur colibre.",
|
||||||
|
className="text-muted",
|
||||||
|
),
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def _token_row(row: dict):
|
def _token_row(row: dict):
|
||||||
statut = "Révoqué" if row["revoked_at"] else "Actif"
|
statut = "Révoqué" if row["revoked_at"] else "Actif"
|
||||||
actions = []
|
actions = []
|
||||||
@@ -218,19 +248,24 @@ def layout(**_):
|
|||||||
[
|
[
|
||||||
html.H2("Connecteur MCP"),
|
html.H2("Connecteur MCP"),
|
||||||
html.P(
|
html.P(
|
||||||
"Les clients en ligne de commande (Claude Code, Gemini, Mistral) se "
|
"Un connecteur MCP est une interface proposée par un outil (ici colibre) pour faciliter "
|
||||||
"connectent avec un jeton généré ci-dessous. Les applications grand "
|
"son interrogation par un agent IA tel que Mistral, Claude ou ChatGPT. "
|
||||||
"public (Claude.ai, ChatGPT) se connectent par OAuth, sans jeton à "
|
"Dans le cas de colibre, cela vous permet de poser des questions très précises aux données, "
|
||||||
"copier. Dans tous les cas, un abonnement actif est requis."
|
"et d'obtenir une réponse rapide, précise et peu couteuse."
|
||||||
),
|
),
|
||||||
|
html.P(
|
||||||
|
"L'utilisation de cette fonctionnalité étant liée à un abonnement, vous devez d'abord vous authentifiez auprès "
|
||||||
|
"dans les options de votre agent IA. La méthode varie selon les outils."
|
||||||
|
),
|
||||||
|
html.H4("Connecter un client", className="mt-4"),
|
||||||
|
client_instructions(url, snippet_token),
|
||||||
*alerts,
|
*alerts,
|
||||||
html.H4("Générer un jeton", className="mt-3"),
|
html.H4("Générer un jeton", className="mt-3"),
|
||||||
create_form,
|
create_form,
|
||||||
html.H4("Mes jetons", className="mt-4"),
|
html.H4("Mes jetons", className="mt-4"),
|
||||||
table,
|
table,
|
||||||
html.H4("Connecter un client", className="mt-4"),
|
html.H4("Conseils de prompts", className="mt-4"),
|
||||||
html.P(f"URL du serveur MCP : {url}"),
|
prompt_tips(),
|
||||||
client_instructions(url, snippet_token),
|
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
return account_shell("mcp", contenu)
|
return account_shell("mcp", contenu)
|
||||||
|
|||||||
Reference in New Issue
Block a user