This MCP server generates highly customizable QR codes from text or URLs in multiple formats with batch processing capabilities.
• Generate QR codes as Data URLs: Create base64-encoded images in PNG, JPEG, or WebP formats • Generate QR codes as SVG: Produce scalable vector graphics for crisp display at any size • Generate QR codes for terminal display: Create QR codes optimized for terminal output with compact format option • Batch processing: Generate up to 10 QR codes simultaneously in a single operation • Advanced customization: Control error correction levels (L, M, Q, H), dimensions (50-2000px), margins (0-10 modules), and custom color schemes with hexadecimal codes • Standardized MCP interface: Compatible with all MCP clients including Claude Desktop and GitHub Copilot • Multiple deployment options: Available via Docker, Podman, or local Node.js installation
QR Code MCP Server
Un serveur MCP (Model Context Protocol) pour générer des QR codes à partir de texte ou d'URLs en utilisant Node.js et TypeScript.
🚀 Fonctionnalités
Génération de QR codes en multiple formats : DataURL (base64), SVG, et affichage terminal
Options de personnalisation avancées : Niveau de correction d'erreur, taille, marge, couleurs
Génération en lot : Traiter plusieurs textes/URLs en une seule commande
Interface MCP standardisée : Compatible avec tous les clients MCP
Support TypeScript complet : Types sûrs et auto-complétion
📦 Installation
Option 1: Docker/Podman (Recommandé) 🐳
Prérequis: Docker ou Podman installé sur votre système
Option 2: Installation locale
Prérequis:
Node.js 18.0.0 ou supérieur
npm ou yarn
🛠️ Utilisation
Avec Docker/Podman (Recommandé)
Développement local
🔧 Outils MCP disponibles
1. generate-qrcode-dataurl
Génère un QR code et le retourne sous forme de Data URL (base64).
Paramètres :
text(string, requis) : Le texte ou URL à encoderoptions(object, optionnel) : Options de générationerrorCorrectionLevel: 'L', 'M', 'Q', ou 'H' (défaut: 'M')width: Largeur en pixels (50-2000)margin: Marge en modules (0-10, défaut: 4)color.dark: Couleur des modules sombres (défaut: '#000000')color.light: Couleur de l'arrière-plan (défaut: '#FFFFFF')type: Type MIME ('image/png', 'image/jpeg', 'image/webp')
Exemple d'utilisation :
2. generate-qrcode-svg
Génère un QR code au format SVG.
Paramètres :
text(string, requis) : Le texte ou URL à encoderoptions(object, optionnel) : Options de génération (similaires à dataurl)
Exemple d'utilisation :
3. generate-qrcode-terminal
Génère un QR code pour affichage dans le terminal.
Paramètres :
text(string, requis) : Le texte ou URL à encoderoptions(object, optionnel) :small(boolean) : Utiliser le format compact (défaut: false)
Exemple d'utilisation :
4. generate-qrcode-batch
Génère plusieurs QR codes en une seule opération (maximum 10).
Paramètres :
texts(array[string], requis) : Tableau de textes/URLs à encoder (max 10)format(string, optionnel) : Format de sortie ('dataurl', 'svg', 'terminal', défaut: 'dataurl')options(object, optionnel) : Options de génération
Exemple d'utilisation :
🎯 Utilisation avec des clients MCP
Claude Desktop (ou Github Copilot)
ℹ️ Astuce GitHub Copilot :
Pour GitHub Copilot, la clémcpServersdans la configuration devient simplementservers.
Option 1: Avec Docker/Podman (Recommandé)
Ajoutez cette configuration à votre claude_desktop_config.json :
Ou avec Podman (plus sécurisé, rootless) :
Option 2: Installation locale
Autres clients MCP
Le serveur utilise le transport stdio standard et peut être utilisé avec n'importe quel client MCP compatible.
📋 Exemples d'utilisation
Générer un QR code simple
QR code personnalisé
QR codes en lot
QR code pour terminal
🔒 Sécurité
Mesures de sécurité implémentées
Container sécurisé : Utilisation d'un utilisateur non-root (UID 1001)
Image Alpine : Image de base minimale pour réduire la surface d'attaque
Capabilities limitées : Suppression de toutes les capabilities Linux non nécessaires
Read-only filesystem : Container en lecture seule pour prévenir les modifications
Resource limits : Limites CPU et mémoire pour éviter les attaques DoS
Security scanning : Scan automatique des vulnérabilités avec Trivy
Dependency audit : Vérification automatique des dépendances npm
Multi-stage build : Build optimisé sans outils de développement en production
Bonnes pratiques
Utilisez toujours la dernière version taguée
Vérifiez régulièrement les mises à jour de sécurité
Surveillez les alertes GitHub Security
Utilisez des secrets GitHub pour les tokens DockerHub
🔄 CI/CD
Processus automatisé
Tests automatiques : TypeScript, build et audits de sécurité
Build multi-architecture : Support AMD64 et ARM64
Push automatique : DockerHub avec tags appropriés
Scan de sécurité : Trivy pour détecter les vulnérabilités
Release automatique : GitHub Releases avec notes générées
Variables d'environnement à configurer
🏗️ Architecture
🔧 Technologies utilisées
Node.js : Runtime JavaScript
TypeScript : Typage statique
@modelcontextprotocol/sdk : SDK MCP officiel
qrcode : Bibliothèque de génération de QR codes
zod : Validation de schémas
📝 Niveaux de correction d'erreur
L (Low) : ~7% de récupération d'erreur
M (Medium) : ~15% de récupération d'erreur (recommandé)
Q (Quartile) : ~25% de récupération d'erreur
H (High) : ~30% de récupération d'erreur
🐛 Dépannage
Erreur "Module not found"
Assurez-vous d'avoir installé les dépendances :
Erreur de compilation TypeScript
Vérifiez la configuration dans tsconfig.json et rebuilder :
Le serveur ne démarre pas
Vérifiez que Node.js 18+ est installé :
🚀 Release et Déploiement
Créer une nouvelle release
Processus de release automatique
Validation : Tests, build et vérifications
Versioning : Mise à jour package.json et création du tag
Docker Build : Build et push multi-architecture
Security Scan : Analyse de sécurité avec Trivy
GitHub Release : Création avec notes automatiques
Notification : Confirmation du succès
Images Docker disponibles
🤝 Contribution
Les contributions sont les bienvenues ! N'hésitez pas à ouvrir une issue ou soumettre une pull request.
Processus de contribution
Fork le projet
Créer une branche feature (
git checkout -b feature/amazing-feature)Commiter vos changements (
git commit -m 'Add amazing feature')Pousser vers la branche (
git push origin feature/amazing-feature)Ouvrir une Pull Request
Standards de code
Utilisez TypeScript avec strict mode
Suivez les conventions ESLint/Prettier
Ajoutez des tests pour les nouvelles fonctionnalités
Mettez à jour la documentation si nécessaire
📄 Licence
MIT License - voir le fichier LICENSE pour plus de détails.