API RESTful pour MathsIA, un système de mémocartes pour l'apprentissage des mathématiques.
MathsIA API est une application FastAPI qui permet la gestion d'un système de mémocartes pour l'apprentissage des mathématiques. Elle propose des fonctionnalités pour les étudiants et les administrateurs, avec une gestion complète des utilisateurs, des mémocartes et du suivi des progrès.
- 🔐 Authentification complète avec JWT
- 👨🎓 Gestion des profils étudiants
- 🧠 Système de mémocartes pour l'apprentissage
- 📊 Suivi des progrès des étudiants
- 🛠️ Interface d'administration
- 📝 Documentation API interactive
- FastAPI - Framework API moderne et rapide
- MongoDB - Base de données NoSQL
- Motor - Driver MongoDB asynchrone
- Pydantic - Validation de données
- Python-Jose - Gestion des JWT
- Uvicorn - Serveur ASGI
- FastAPI-MCP - Intégration Model Control Protocol pour l'IA
- Python 3.8+
- MongoDB
- Cloner le dépôt
git clone https://github.com/nicolassaint/mathsIA_api.git
cd mathsIA_api- Installer les dépendances
pip install -r requirements.txt- Configurer les variables d'environnement
cp .env.example .env
# Modifier les valeurs dans .env selon votre environnement- Lancer l'application
python main.pyL'API sera disponible à l'adresse: http://localhost:8000
La documentation interactive de l'API est disponible aux URLs suivantes:
- Swagger UI: http://localhost:8000/docs
- ReDoc: http://localhost:8000/redoc
- Serveur MCP: http://localhost:8000/mcp
MathsIA API intègre FastAPI-MCP, permettant aux modèles d'IA comme Claude, GPT, et autres de contrôler l'API directement.
- Lancez l'application
- Dans Cursor, allez dans Settings -> MCP
- Utilisez l'URL
http://localhost:8000/mcpcomme source SSE - Cursor découvrira automatiquement toutes les commandes disponibles
- Lancez l'application
- Installez mcp-proxy:
uv tool install mcp-proxy - Ajoutez dans le fichier de configuration de Claude Desktop:
{
"mcpServers": {
"mathsia-api-mcp-proxy": {
"command": "mcp-proxy",
"args": ["http://127.0.0.1:8000/mcp"]
}
}
}POST /api/login- Authentification et obtention du token JWTPOST /api/refresh- Rafraîchissement du token JWT
GET /api/admin/students- Liste des étudiantsPOST /api/admin/students- Création d'un étudiantGET /api/admin/students/{id}- Détails d'un étudiantPUT /api/admin/students/{id}- Mise à jour d'un étudiantDELETE /api/admin/students/{id}- Suppression d'un étudiant
GET /api/admin/memocards- Liste des mémocartesPOST /api/admin/memocards- Création d'une mémocarteGET /api/admin/memocards/{id}- Détails d'une mémocartePUT /api/admin/memocards/{id}- Mise à jour d'une mémocarteDELETE /api/admin/memocards/{id}- Suppression d'une mémocarte
GET /api/student/profile- Obtenir le profilPUT /api/student/profile- Mettre à jour le profil
GET /api/student/memocards- Liste des mémocartes accessiblesGET /api/student/memocards/{id}- Détails d'une mémocartePOST /api/student/memocards/{id}/review- Soumettre une révision
GET /api/student/progress- Statistiques globales de progressionGET /api/student/progress/memocards- Progression par mémocarte
curl -X 'POST' \
'http://localhost:8000/api/login' \
-H 'Content-Type: application/json' \
-d '{
"email": "student@example.com",
"password": "password123"
}'Réponse:
{
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"token_type": "bearer"
}curl -X 'GET' \
'http://localhost:8000/api/student/memocards' \
-H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...'Réponse:
{
"items": [
{
"id": "60d21b4667d0d8992e610c85",
"title": "Dérivée d'une fonction",
"content": "La dérivée de f(x) = x² est f'(x) = 2x",
"category": "Calcul différentiel",
"difficulty": 2
},
{
"id": "60d21b4667d0d8992e610c86",
"title": "Théorème de Pythagore",
"content": "Dans un triangle rectangle, le carré de l'hypoténuse est égal à la somme des carrés des deux autres côtés",
"category": "Géométrie",
"difficulty": 1
}
],
"total": 2,
"page": 1,
"size": 10
}mathsIA_api/
├── app/
│ ├── api/
│ │ └── routes/ # Endpoints de l'API
│ ├── core/ # Configuration, sécurité
│ ├── db/ # Configuration et connexion MongoDB
│ ├── middleware/ # Middlewares personnalisés
│ ├── models/ # Modèles de données pour MongoDB
│ ├── repositories/ # Couche d'accès aux données
│ ├── schemas/ # Schémas Pydantic
│ └── services/ # Logique métier
├── .env # Variables d'environnement (à ne pas committer)
├── .env.example # Exemple de variables d'environnement
├── .gitignore # Fichiers à ignorer par Git
├── main.py # Point d'entrée de l'application
├── README.md # Documentation
└── requirements.txt # Dépendances Python