antoBrugnot/qrcode-mcp
If you are the rightful owner of qrcode-mcp and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
A Model Context Protocol (MCP) server designed to generate QR codes from text or URLs using Node.js and TypeScript.
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
# Avec Docker
docker pull antobrugnot/qrcode-mcp-server:latest
# Ou avec Podman (plus sécurisé, rootless)
podman pull antobrugnot/qrcode-mcp-server:latest
# Build local avec Docker
docker build -t qrcode-mcp-server .
# Build local avec Podman
podman build -t qrcode-mcp-server .
Option 2: Installation locale
Prérequis:
- Node.js 18.0.0 ou supérieur
- npm ou yarn
# Cloner le projet
git clone <votre-repo>
cd qrcode-mcp
# Installer les dépendances
npm install
# Builder le projet
npm run build
đ ïž Utilisation
Avec Docker/Podman (Recommandé)
# Avec Docker
docker run -i --rm antobrugnot/qrcode-mcp-server:latest
# Avec Podman (plus sécurisé)
podman run -i --rm antobrugnot/qrcode-mcp-server:latest
# Avec Docker Compose
docker-compose up qrcode-mcp-server
# Avec Podman Compose
podman-compose up qrcode-mcp-server
# Mode développement
docker-compose --profile dev up qrcode-mcp-dev
# ou
podman-compose --profile dev up qrcode-mcp-dev
Développement local
# Mode développement avec rechargement automatique
npm run dev
# Ou en mode watch
npm run watch
# Builder pour la production
npm run build
# Lancer la version buildée
npm start
đ§ 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 :
{
"text": "https://github.com",
"options": {
"width": 300,
"errorCorrectionLevel": "H",
"color": {
"dark": "#1f2937",
"light": "#f3f4f6"
}
}
}
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 :
{
"text": "Hello, World!",
"options": {
"width": 200,
"margin": 2
}
}
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 :
{
"text": "Terminal QR Code",
"options": {
"small": true
}
}
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 :
{
"texts": [
"https://github.com",
"https://www.google.com",
"Hello World"
],
"format": "dataurl",
"options": {
"width": 200
}
}
đŻ Utilisation avec des clients MCP
Claude Desktop (ou Github Copilot)
âčïž Astuce GitHub Copilot :
Pour GitHub Copilot, la clémcpServers
dans la configuration devient simplementservers
.
Option 1: Avec Docker/Podman (Recommandé)
Ajoutez cette configuration Ă votre claude_desktop_config.json
:
{
"mcpServers": {
"qrcode-generator": {
"command": "docker",
"args": ["run", "-i", "--rm", "antobrugnot/qrcode-mcp-server:latest"]
}
}
}
Ou avec Podman (plus sécurisé, rootless) :
{
"mcpServers": {
"qrcode-generator": {
"command": "podman",
"args": ["run", "-i", "--rm", "antobrugnot/qrcode-mcp-server:latest"]
}
}
}
Option 2: Installation locale
{
"mcpServers": {
"qrcode-generator": {
"command": "node",
"args": ["/chemin/vers/qrcode-mcp/dist/index.js"]
}
}
}
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
Générez un QR code pour "https://github.com"
QR code personnalisé
Générez un QR code pour "Mon site web" avec une largeur de 400px et des couleurs personnalisées (sombre: #2563eb, clair: #eff6ff)
QR codes en lot
Générez des QR codes pour ces URLs : https://github.com, https://stackoverflow.com, https://nodejs.org
QR code pour terminal
Générez un QR code terminal pour "Test terminal" en format compact
đ 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
# Dans GitHub Secrets
DOCKERHUB_TOKEN=your_dockerhub_token
đïž Architecture
qrcode-mcp/
âââ .github/
â âââ workflows/ # GitHub Actions CI/CD
âââ scripts/
â âââ release.sh # Script de release
âââ src/
â âââ index.ts # Serveur MCP principal
âââ dist/ # Fichiers compilĂ©s
âââ Dockerfile # Configuration Docker
âââ docker-compose.yml # Orchestration Docker
âââ .dockerignore # Exclusions Docker
âââ package.json # DĂ©pendances et scripts
âââ tsconfig.json # Configuration TypeScript
âââ CONFIGURATION.md # Guide de configuration
âââ README.md # Documentation
đ§ 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 :
npm install
Erreur de compilation TypeScript
Vérifiez la configuration dans tsconfig.json
et rebuilder :
npm run build
Le serveur ne démarre pas
Vérifiez que Node.js 18+ est installé :
node --version
đ Release et DĂ©ploiement
Créer une nouvelle release
# Utiliser le script de release
./scripts/release.sh v1.0.0
# Ou déclencher manuellement via GitHub Actions
# GitHub â Actions â Release â Run workflow
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
# DerniĂšre version stable
docker pull antobrugnot/qrcode-mcp-server:latest
# Version spécifique
docker pull antobrugnot/qrcode-mcp-server:v1.0.0
# Version de développement (branch develop)
docker pull antobrugnot/qrcode-mcp-server:develop
đ€ 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.