Skip to main content
Glama
Onitsag

velora-mcp-copilote

by Onitsag

Velora : Copilote Conseiller (POC MCP)

POC du Learning Lab M2DFS sur le Model Context Protocol (MCP).

Il comprend :

  • un serveur MCP (TypeScript) qui expose le catalogue, le stock, les commandes et les politiques de l'e-commerce fictif Velora ;

  • un agent IA compatible OpenAI qui s'en sert pour assister les conseillers, utilisable avec OpenAI, un modĂšle local (Ollama / LM Studio) ou tout fournisseur compatible, configurable uniquement via .env.

📄 Rapport complet : docs/rapport/ (5 blocs). Version assemblĂ©e : docs/rapport/RAPPORT.md. 🎓 Atelier + kata : docs/atelier/. đŸ§Ș Preuves d'exĂ©cution : docs/demo/.


⭐ Note importante : tester SANS clé payante

L'agent utilise l'API compatible OpenAI. Vous pouvez donc le faire tourner :

  • avec un modĂšle local GRATUIT (Ollama ou LM Studio) → aucune clĂ© ;

  • avec OpenAI (clĂ© payante) ;

  • avec tout autre fournisseur compatible (Groq, Together, OpenRouter
).

Il suffit de modifier les variables LLM_* dans .env.

De plus, le serveur MCP ne dĂ©pend d'aucun LLM : il se teste seul, sans aucune clĂ©, via npm test ou le MCP Inspector. Cette mĂȘme indĂ©pendance permet aussi de le brancher sur Claude Desktop (cf. claude_desktop_config.example.json).


Prérequis

  • Node.js 20+ et npm.

  • (Optionnel, pour la dĂ©mo agent gratuite) Ollama.

Installation (sans friction)

git clone https://github.com/Onitsag/velora-mcp-copilote.git
cd velora-mcp-copilote
npm install
cp .env.example .env        # profil "Ollama local" actif par défaut
npm run db:setup            # crée la base SQLite + données fictives Velora
npm run build               # compile le serveur (dist/)

Vérifier que tout marche (sans aucune clé)

npm test                    # 12 tests (outils MCP + boucle agent simulée)
npm run showcase            # appels réels des outils -> docs/demo/outils-demo.md
npm run inspect             # MCP Inspector sur http://localhost:6274

Lancer l'agent (copilote)

Option A : modÚle local gratuit (recommandé pour tester)

# 1) installer Ollama puis récupérer un modÚle qui gÚre le tool-calling :
ollama pull llama3.1
# (ollama tourne en service ; sinon `ollama serve`)

# 2) .env est déjà réglé sur le profil Ollama. Lancer :
npm run agent -- "OĂč en est la commande VEL-1003 ?"
npm run demo                # rejoue plusieurs questions -> docs/demo/transcripts/

Option B : OpenAI (clé payante)

Dans .env, commentez le profil Ollama et décommentez le profil OpenAI (LLM_MODEL=gpt-4o-mini recommandé), renseignez LLM_API_KEY, puis :

npm run agent -- "Avez-vous la robe Lila en taille S ?"

⚠ Le modĂšle choisi doit supporter le function/tool calling. Reco locale fiable : llama3.1 (8B) ; alternatives : qwen2.5, mistral.

Configuration .env

Variable

RĂŽle

DATABASE_URL

Base SQLite (laisser file:./dev.db)

LLM_BASE_URL

Endpoint compatible OpenAI (Ollama/OpenAI/LM Studio
)

LLM_API_KEY

Clé API (valeur factice acceptée par Ollama)

LLM_MODEL

Nom du modĂšle

LLM_TEMPERATURE

Température (défaut 0.2)

AGENT_MAX_STEPS

Nb max d'allers-retours tool-use (défaut 6)

Outils & ressources exposés

Outils : search_products, get_product, check_stock, get_order_status, get_return_policy, create_return_request. Ressources : policy://returns, policy://shipping. Prompt : conseiller_reply.

Structure du projet

src/
  server.ts            # serveur MCP (stdio)
  db.ts                # client Prisma (adapter SQLite)
  tools/               # 1 fichier par outil (Zod + handler)
  resources/           # ressources + politiques (.md)
  prompts/             # prompt conseiller
  agent/               # config, mcpClient, bridge (MCP↔OpenAI), agent, cli
prisma/                # schema + migrations + seed
tests/                 # vitest (outils, bridge, boucle agent)
scripts/               # showcase, demo, smoke, build du rapport
docs/                  # rapport, atelier (kata), preuves, diagrammes

Scripts npm

Script

Effet

npm run db:setup

génÚre le client + migre + seed

npm run build

compile TypeScript → dist/

npm test

tests (sans clé)

npm run showcase

appels rĂ©els des outils → docs/demo/outils-demo.md

npm run inspect

MCP Inspector

npm run agent -- "
"

pose une question au copilote (LLM requis)

npm run demo

transcripts multi-questions (LLM requis)

npm run report:html

assemble le rapport → docs/rapport/RAPPORT.html

npm run pdf

gĂ©nĂšre le rendu PDF unique → rendus/

Rendu PDF (livrable unique)

Le rendu est un seul PDF (couverture avec lien du dépÎt, sommaire, les 5 sections, puis annexes : guide d'installation, preuves d'exécution, ressources) :

npm run pdf

Il est écrit dans rendus/learning_lab_GASTINEAU_Timeo_mcp.pdf. (Le Markdown des docs/rapport/*.md se lit aussi directement sur GitHub ; npm run report:html en produit une version HTML imprimable.)

Sécurité (POC)

Outils en lecture seule par défaut ; seule écriture create_return_request restreinte aux commandes livrées (mention human-in-the-loop) ; system prompt anti-invention ; schémas d'entrée validés (Zod) ; logs serveur sur stderr.

Stack

TypeScript · @modelcontextprotocol/sdk · Prisma 7 + SQLite · SDK openai · Zod · Vitest.

Licence

MIT.