QR Code Generator

#+TITLE: MCP QR Code Server
* Overview
Generate QR codes seamlessly using the Model Context Protocol (MCP). This server connects large language models to QR code generation capabilities across multiple client interfaces.

* Features
- Generate QR codes for multiple content types:
  - URLs and website links
  - WiFi network credentials
  - Contact information (vCard)
  - Plain text
  - Calendar events (iCal)
- Multiple output formats:
  - PNG images (base64-encoded)
  - ASCII/text representation
  - Data URL format
- Customization options:
  - Size adjustment (100-1000px)
  - Error correction levels (L, M, Q, H)
  - Format selection (image, text)

* Quick Examples

#+begin_example
Please generate a QR code for https://example.com
#+end_example

#+begin_example
Generate a QR code for the Wi-Fi network "GuestWiFi" with password "Welcome123"
#+end_example

#+begin_example
Create a QR code for my contact information:
Name: John Doe
Email: john@example.com
Phone: 555-123-4567
#+end_example

* Installation

#+begin_src bash
npm install -g @jwalsh/mcp-server-qrcode
#+end_src

* Usage


** Claude Desktop
#+begin_src json
{
  "mcpServers": {
    "qrcode": {
      "command": "npx",
      "args": [
        "-y",
        "@jwalsh/mcp-server-qrcode"
      ]
    }
  }
}
#+end_src

For detailed setup instructions, please refer to:

- [[https://modelcontextprotocol.io/quickstart/user][MCP for Claude Desktop Users]]
- [[https://modelcontextprotocol.io/quickstart/server][Building MCP Servers]]
- [[https://docs.anthropic.com/en/docs/agents-and-tools/mcp][Anthropic MCP Documentation]]

** Claude Desktop

#+begin_src json
{
  "mcpServers": {
    "qrcode": {
      "args": [
        "-y",
        "@jwalsh/mcp-server-qrcode"
      ],
      "command": "npx"
    }
  }
}
#+end_src

** Emacs with mcp.el
#+begin_src elisp :results silent
;; Basic installation with straight.el
(use-package mcp
  :straight (mcp :type git :host github :repo "lizqwerscott/mcp.el"))
#+end_src

#+begin_src elisp :results silent
;; Connect to the QR code server
(mcp-connect-server
 "qrcode" 
 "npx" 
 '("-y" "@jwalsh/mcp-server-qrcode")
 :initial-callback
 (lambda (connection)
   (message "Connected to %s" (jsonrpc-name connection)))
 :tools-callback
 (lambda (connection tools)
   (message "Available tools: %s" tools)))
#+end_src

#+begin_src elisp :results raw :wrap example
;; Generate a QR code
(let ((connection (gethash "qrcode" mcp-server-connections)))
  (mcp-call-tool connection 
                "generate-qrcode" 
                '(:content "https://example.com" 
                  :format "text")))
#+end_src

#+RESULTS:
#+begin_example
(:content [(:type text :text QR Code for "https://example.com":

█████████████████████████████████
█████████████████████████████████
████ ▄▄▄▄▄ █▄▀ █ ▀ █▀█ ▄▄▄▄▄ ████
████ █   █ █▄ ▄█▀ ▀█▄█ █   █ ████
████ █▄▄▄█ █▀ █ ▀█ ███ █▄▄▄█ ████
████▄▄▄▄▄▄▄█▄▀▄█ █ ▀ █▄▄▄▄▄▄▄████
████ ▀▄▀▀▀▄▄▀▀    ▄▀▄▀▀ █▀▄▀ ████
████▄▀█▄▀ ▄▄▀   ▀▀█▄▀▄█▀▄ ▄█▄████
█████▀▀▄ ▄▄▄ ▀ █ ▄█  █  ███▀ ████
████▄▄▄█▄▄▄▀▄▀█▀ ▄ ▄  ▄▀▀ ▄█▄████
████▄▄██▄█▄▄▀▄███  █ ▄▄▄ ██▄▀████
████ ▄▄▄▄▄ █▄█▄▄█▀█▀ █▄█ ██▀ ████
████ █   █ ██ █▄ ▄█▄▄ ▄▄ █▀ ▄████
████ █▄▄▄█ █▄ █▀ ▄    ▀  ▄█▄▄████
████▄▄▄▄▄▄▄█▄▄▄██▄▄█▄█▄██▄██▄████
█████████████████████████████████
█████████████████████████████████
)])
#+end_example

** MCP Inspector

#+begin_src bash
npx -y @modelcontextprotocol/inspector npx -y @jwalsh/mcp-server-qrcode
#+end_src

** NPM Package CLI

#+begin_src bash
# Verify installation
echo '{"method":"tools/list","params":{},"id":1,"jsonrpc":"2.0"}' | mcp-server-qrcode | jq -r '.result.tools[]|.name'
#+end_src

#+RESULTS:
: generate-qrcode

#+begin_src bash :results raw  :results raw 
# Generate QR code via JSON-RPC
echo '{"method":"tools/call","params":{"name":"generate-qrcode","arguments":{"content":"https://example.com","format":"text"}},"id":1,"jsonrpc":"2.0"}' | mcp-server-qrcode |  jq -r '.result.content[0].text'
#+end_src

#+RESULTS:
QR Code for "https://example.com":

█████████████████████████████████
█████████████████████████████████
████ ▄▄▄▄▄ █▄▀ █ ▀ █▀█ ▄▄▄▄▄ ████
████ █   █ █▄ ▄█▀ ▀█▄█ █   █ ████
████ █▄▄▄█ █▀ █ ▀█ ███ █▄▄▄█ ████
████▄▄▄▄▄▄▄█▄▀▄█ █ ▀ █▄▄▄▄▄▄▄████
████ ▀▄▀▀▀▄▄▀▀    ▄▀▄▀▀ █▀▄▀ ████
████▄▀█▄▀ ▄▄▀   ▀▀█▄▀▄█▀▄ ▄█▄████
█████▀▀▄ ▄▄▄ ▀ █ ▄█  █  ███▀ ████
████▄▄▄█▄▄▄▀▄▀█▀ ▄ ▄  ▄▀▀ ▄█▄████
████▄▄██▄█▄▄▀▄███  █ ▄▄▄ ██▄▀████
████ ▄▄▄▄▄ █▄█▄▄█▀█▀ █▄█ ██▀ ████
████ █   █ ██ █▄ ▄█▄▄ ▄▄ █▀ ▄████
████ █▄▄▄█ █▄ █▀ ▄    ▀  ▄█▄▄████
████▄▄▄▄▄▄▄█▄▄▄██▄▄█▄█▄██▄██▄████
█████████████████████████████████
█████████████████████████████████

* Developer Documentation
For detailed setup, installation, contribution guidelines, and additional integration methods, please refer to [[file:DEVELOPERS.org][DEVELOPERS.org]].