qrcode-mcp

antoBrugnot/qrcode-mcp

3.3

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.

Tools
4
Resources
0
Prompts
0

QR Code MCP Server

License: MIT Node.js TypeScript Docker Podman Build and Release

MCP Badge

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 Ă  encoder
  • options (object, optionnel) : Options de gĂ©nĂ©ration
    • errorCorrectionLevel : '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 Ă  encoder
  • options (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 Ă  encoder
  • options (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 simplement servers.

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

  1. Validation : Tests, build et vérifications
  2. Versioning : Mise à jour package.json et création du tag
  3. Docker Build : Build et push multi-architecture
  4. Security Scan : Analyse de sécurité avec Trivy
  5. GitHub Release : Création avec notes automatiques
  6. 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

  1. Fork le projet
  2. Créer une branche feature (git checkout -b feature/amazing-feature)
  3. Commiter vos changements (git commit -m 'Add amazing feature')
  4. Pousser vers la branche (git push origin feature/amazing-feature)
  5. 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.

🔗 Liens utiles