Skip to main content
Glama
myownipgit

Enhanced QR Code MCP Server

by myownipgit
README.md
# Enhanced QR Code MCP Server

[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![Python 3.8+](https://img.shields.io/badge/python-3.8+-blue.svg)](https://www.python.org/downloads/)
[![MCP Compatible](https://img.shields.io/badge/MCP-Compatible-green.svg)](https://github.com/modelcontextprotocol)

An advanced **Model Context Protocol (MCP) server** that generates QR codes and **automatically saves them as PNG files** with comprehensive metadata, batch processing capabilities, and file management tools.

> **๐Ÿ”— Dual Implementation Strategy**  
> This **Python implementation** focuses on **reliable file generation and batch processing**.  
> For **advanced styling, analysis, and templates**, see our **[TypeScript implementation](https://github.com/myownipgit/mcp-server-qrcode-enhanced)**.

> **Built upon and enhanced from**: [@jwalsh/mcp-server-qrcode](https://github.com/jwalsh/mcp-server-qrcode)
> 
> This enhanced version adds automatic file generation, metadata tracking, batch processing, and production-ready features while maintaining full compatibility with the MCP protocol.

## ๐Ÿš€ Key Enhancements Over Original

| Feature | Original MCP | Enhanced Python MCP | Enhanced TypeScript MCP |
|---------|--------------|---------------------|-------------------------|
| **PNG File Output** | โŒ Chat display only | โœ… **Automatic PNG file saving** | โœ… Multiple formats (PNG, SVG, PDF) |
| **Directory Management** | โŒ None | โœ… **Custom output directories** | โœ… Configurable paths |
| **Metadata Tracking** | โŒ None | โœ… **JSON metadata files** | โœ… Comprehensive metadata |
| **Batch Processing** | โŒ One at a time | โœ… **Multiple QR codes per call** | โœ… Advanced batch features |
| **File Organization** | โŒ None | โœ… **Structured file management** | โœ… Template-based organization |
| **Custom Filenames** | โŒ None | โœ… **User-defined naming** | โœ… Smart naming patterns |
| **Production Ready** | โŒ Basic | โœ… **Complete test suite & docs** | โœ… Enterprise features |
| **Advanced Styling** | โŒ None | ๐Ÿ”„ **Planned (see [ROADMAP](ROADMAP.md))** | โœ… **Full styling engine** |
| **QR Analysis** | โŒ None | ๐Ÿ”„ **Planned (see [ROADMAP](ROADMAP.md))** | โœ… **Decode & quality analysis** |
| **Templates** | โŒ None | ๐Ÿ”„ **Planned (see [ROADMAP](ROADMAP.md))** | โœ… **Pre-defined templates** |

## ๐Ÿ› ๏ธ Installation

### Prerequisites
- Python 3.8+
- MCP client (Claude Desktop, VS Code extension, etc.)

### Quick Setup
```bash
git clone https://github.com/myownipgit/enhanced-qrcode-mcp.git
cd enhanced-qrcode-mcp
chmod +x setup.sh
./setup.sh
```

### Manual Setup
```bash
# Create virtual environment
python3 -m venv venv
source venv/bin/activate

# Install dependencies
pip install -r requirements.txt

# Make server executable
chmod +x src/enhanced_qrcode_server.py
```

## ๐Ÿ”ง MCP Client Configuration

Add to your MCP client configuration:

```json
{
  "mcpServers": {
    "enhanced-qrcode": {
      "command": "python3",
      "args": ["/path/to/enhanced-qrcode-mcp/src/enhanced_qrcode_server.py"],
      "env": {},
      "description": "Enhanced QR code generator with automatic PNG file saving"
    }
  }
}
```

## ๐Ÿ“š Available Tools

### 1. `generate_and_save_qrcode`
Generate a single QR code and automatically save as PNG file.

**Parameters:**
- `content` (required): Text content to encode
- `output_directory`: Target directory (default: `./qr_output/`)
- `filename`: Custom filename (auto-generated if empty)
- `errorCorrectionLevel`: L, M, Q, or H (default: M)
- `size`: Size multiplier 1-20 (default: 5)
- `border`: Border size 1-20 (default: 4)
- `include_metadata`: Generate JSON metadata (default: true)
- `display_in_chat`: Show in chat interface (default: true)

**Example:**
```json
{
  "content": "https://github.com/myownipgit/enhanced-qrcode-mcp",
  "output_directory": "./qr_codes/",
  "filename": "github_repo",
  "errorCorrectionLevel": "H",
  "size": 6
}
```

**Output:**
- PNG file: `github_repo.png`
- Metadata: `github_repo_metadata.json`
- Chat display (optional)

### 2. `batch_generate_qrcodes`
Generate multiple QR codes from array input.

**Example:**
```json
{
  "qr_codes": [
    {
      "id": "contact",
      "content": "BEGIN:VCARD\nVERSION:3.0\nFN:John Doe\nORG:Acme Corp\nTEL:555-0123\nEMAIL:john@acme.com\nEND:VCARD",
      "type": "vcard"
    },
    {
      "id": "website", 
      "content": "https://example.com",
      "type": "url"
    }
  ],
  "output_directory": "./batch_output/",
  "size": 5
}
```

**Output:**
- PNG files: `qr_contact.png`, `qr_website.png`
- Individual metadata files
- Batch manifest: `batch_manifest_YYYYMMDD_HHMMSS.json`

### 3. `list_generated_qrcodes`
List all QR code files in a directory with metadata.

```json
{
  "directory": "./qr_output/"
}
```

## ๐Ÿ“ File Structure

### Generated Files
```
output_directory/
โ”œโ”€โ”€ qr_20250616_143022_hello_world.png
โ”œโ”€โ”€ qr_20250616_143022_hello_world_metadata.json
โ”œโ”€โ”€ github_repo.png
โ”œโ”€โ”€ github_repo_metadata.json
โ””โ”€โ”€ batch_manifest_20250616_143500.json
```

### Metadata Format
```json
{
  "generated_date": "2025-06-16T14:30:22.123456",
  "content": "Hello World!",
  "parameters": {
    "error_correction": "M",
    "size": 5,
    "border": 4,
    "box_size": 10
  },
  "png_file": "/path/to/qr_file.png",
  "file_size_bytes": 1117
}
```

## ๐ŸŽฏ Use Cases

### Business Applications
- **Event Management**: Generate ticket QR codes as ready-to-print PNG files
- **Marketing**: Create campaign QR codes with tracking metadata
- **Inventory**: Generate asset labels with automatic file organization
- **Contact Sharing**: Batch create vCard QR codes for business cards

### Technical Integration
- **Print Production**: Direct PNG output for design workflows
- **API Workflows**: Batch generate QR codes from database records
- **Asset Management**: Organized file structure with metadata
- **Quality Control**: Error correction levels for different environments

## ๐Ÿงช Testing

Run the comprehensive test suite:

```bash
# Activate virtual environment
source venv/bin/activate

# Run tests
python3 tests/test_server.py
```

**Expected Output:**
```
๐Ÿš€ Running Enhanced QR Code MCP Server Tests
โœ… QR code generation successful
โœ… Filename generation tests passed  
โœ… File operations tests passed
โœ… Integration test passed - 3 files generated
๐Ÿ“Š Test Results: 4/4 passed
๐ŸŽ‰ All tests passed! Enhanced MCP server is ready to use.
```

## ๐Ÿ“ˆ Performance

- **Single QR code**: ~50ms generation + file save
- **Batch processing**: ~100ms per code + manifest
- **Metadata generation**: ~5ms per file
- **File listing**: ~10ms per 100 files

## ๐Ÿ” Error Correction Levels

- **L (Low)**: ~7% damage recovery - basic indoor use
- **M (Medium)**: ~15% damage recovery - standard use (default)
- **Q (Quartile)**: ~25% damage recovery - industrial environments  
- **H (High)**: ~30% damage recovery - outdoor/damaged surfaces

## ๐Ÿš€ Future Enhancements

See our comprehensive **[ROADMAP.md](ROADMAP.md)** for detailed development plans including:

### ๐Ÿ”„ Coming Soon (v2.1.0)
- **Structured content builders** for vCard, WiFi, and events
- **SVG and PDF output formats**
- **Enhanced validation** and content optimization

### ๐ŸŽจ Advanced Features (Available in TypeScript Version)
Our **[TypeScript implementation](https://github.com/myownipgit/mcp-server-qrcode-enhanced)** already includes:
- **Custom styling** with colors, logos, and gradients
- **QR code analysis** and decoding capabilities
- **Template system** with pre-defined styles
- **Quality assessment** tools with recommendations

### ๐Ÿ”— Choosing the Right Implementation

| Use Case | Recommended Version |
|----------|-------------------|
| **File generation & batch processing** | ๐Ÿ **Python version** (this repo) |
| **Advanced styling & customization** | ๐ŸŸจ **TypeScript version** |
| **QR code analysis & decoding** | ๐ŸŸจ **TypeScript version** |
| **Production file workflows** | ๐Ÿ **Python version** (this repo) |
| **Template-based generation** | ๐ŸŸจ **TypeScript version** |
| **Metadata tracking & organization** | ๐Ÿ **Python version** (this repo) |

## ๐Ÿ› Troubleshooting

### Common Issues

**ModuleNotFoundError: No module named 'mcp'**
```bash
pip install mcp
```

**Permission denied on setup.sh**
```bash
chmod +x setup.sh
```

**QR code not saving**
- Check directory permissions
- Verify output path exists
- Check disk space

### Testing the Server
```bash
# Test dependencies
python3 -c "import qrcode, mcp; print('โœ… Dependencies OK')"

# Test server startup
python3 src/enhanced_qrcode_server.py
```

## ๐Ÿค Contributing

Contributions are welcome! Please see [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.

### Development Setup
```bash
git clone https://github.com/myownipgit/enhanced-qrcode-mcp.git
cd enhanced-qrcode-mcp
./setup.sh
source venv/bin/activate
python3 tests/test_server.py
```

## ๐Ÿ“„ License

MIT License - see [LICENSE](LICENSE) file for details.

## ๐Ÿ™ Acknowledgments

- **Original Work**: [@jwalsh/mcp-server-qrcode](https://github.com/jwalsh/mcp-server-qrcode) - Foundation QR code MCP server
- **MCP Protocol**: [Model Context Protocol](https://github.com/modelcontextprotocol) - Enabling AI-tool integration
- **QR Code Library**: [qrcode](https://github.com/lincolnloop/python-qrcode) - Core QR code generation
- **Pillow**: [PIL/Pillow](https://github.com/python-pillow/Pillow) - Image processing capabilities

## ๐Ÿ”— Related Projects

- **[Enhanced TypeScript Version](https://github.com/myownipgit/mcp-server-qrcode-enhanced)** - Advanced styling and analysis features
- **[Original MCP QR Code Server](https://github.com/jwalsh/mcp-server-qrcode)** - The foundation this builds upon
- **[Model Context Protocol](https://github.com/modelcontextprotocol)** - MCP specification and tools
- **[Claude Desktop](https://claude.ai)** - AI assistant with MCP support

## ๐Ÿ“Š Repository Stats

- **Language**: Python 3.8+
- **Dependencies**: MCP, qrcode, Pillow
- **Test Coverage**: 100% (4/4 tests passing)
- **Documentation**: Complete with examples
- **License**: MIT

---

**Enhanced QR Code MCP Server v2.0.0**  
*Production-ready QR code generation with automatic PNG file output and comprehensive metadata*

Built with โค๏ธ upon the excellent foundation of [@jwalsh/mcp-server-qrcode](https://github.com/jwalsh/mcp-server-qrcode)