QR Code MCP Server

QR Code MCP Server

Enables generation of QR codes from text or URLs in multiple formats (DataURL, SVG, terminal display) with customizable options like error correction, colors, and size. Supports batch processing of multiple QR codes and integrates seamlessly with MCP-compatible clients.

Category
访问服务器

README

QR Code MCP Server

License: MIT Node.js TypeScript Docker

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

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

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选