Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
41 changes: 38 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ A [Claude Code plugin marketplace](https://code.claude.com/docs/en/plugin-market

This repository is a Claude Code marketplace (`qrstuff-cc-plugins`) that distributes a single plugin:

| Plugin | Description |
| :----- | :---------- |
| Plugin | Description |
| :------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `qrstuff-mcp-server` | Adds the QRStuff [MCP server](https://mcp.qrstuff.ai/mcp) to Claude Code, giving Claude access to the QRStuff platform for QR code generation and related tools. |

When you install the plugin, Claude Code registers the remote MCP server at `https://mcp.qrstuff.ai/mcp` for you.
Expand Down Expand Up @@ -47,9 +47,44 @@ claude plugin install qrstuff-mcp-server@qrstuff-cc-plugins
> claude plugin marketplace add https://github.com/qrstuff/claude-code-plugins.git
> ```

````

## Claude Desktop Installation

For **Claude Desktop**, you can install the MCP server using either the new one-click Desktop Extension package or manually editing your configuration file.

### Option A: Desktop Extension Bundle (`.mcpb` - Recommended)

1. Package the extension manifest:
```bash
cd plugins/qrstuff-mcp-server/desktop
zip -r qrstuff.mcpb manifest.json
````

2. Open **Claude Desktop**.
3. Go to **Settings > Extensions > Advanced settings > Install Extension...** and select the generated `qrstuff.mcpb` file.

### Option B: Manual Configuration

1. Open your Claude Desktop configuration file:
- **macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`
- **Windows:** `%APPDATA%\Claude\claude_desktop_config.json`
- **Linux:** `~/.config/Claude/claude_desktop_config.json`

2. Add the `qrstuff` server definition to the `mcpServers` block:
```json
{
"mcpServers": {
"qrstuff": {
"url": "https://mcp.qrstuff.ai/mcp"
}
}
}
```

## Usage

Once the plugin is installed, the QRStuff MCP server is available to Claude automatically. Start (or restart) a Claude Code session and the `qrstuff` MCP server will be connected.
Once the plugin or extension is installed, the QRStuff MCP server is available to Claude automatically. Start (or restart) a Claude session and the `qrstuff` MCP server will be connected.

You can then ask Claude to use QRStuff in natural language, for example:

Expand Down
1 change: 1 addition & 0 deletions plugins/qrstuff-mcp-server/.claude-plugin/plugin.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
"name": "qrstuff-mcp-server",
"version": "1.0.0",
"description": "Adds a MCP server for the QRStuff platform",
"skills": "./skills/",
"author": {
"name": "QRStuff Team",
"email": "engineering@qrstuff.com"
Expand Down
12 changes: 12 additions & 0 deletions plugins/qrstuff-mcp-server/desktop/manifest.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{
"manifest_version": "0.4",
"name": "qrstuff-mcp-server",
"version": "1.0.0",
"display_name": "QRStuff MCP Server",
"description": "Adds a MCP server for the QRStuff platform to generate QR codes and view scan analytics",
"author": "QRStuff Team <engineering@qrstuff.com>",
"server": {
"type": "http",
"url": "https://mcp.qrstuff.ai/mcp"
}
}
57 changes: 57 additions & 0 deletions plugins/qrstuff-mcp-server/skills/CLAUDE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
# QRStuff AI Assistant Skills & Instructions

This document teaches Claude how to use the QRStuff MCP server tools and render the responses to the user.

---

## 1. What is QRStuff MCP Server?

The QRStuff MCP server provides tools to interact with the QRStuff platform. You can generate QR codes, manage projects, retrieve scan analytics, restore deleted assets, and perform customer support tasks.

---

## 2. Core Tool Groups

### A. QR Code Management

- `generate_qr_code`: Use this to create a new QR code (e.g. URL, TEXT, SMSTO, EMAIL). Always check if styled is required. For custom logos/backgrounds, use `upload_file` first to get a file ID, then pass it to this tool.
- `get_qr_code_by_id`: Retrieve detail fields for a specific QR code by ID.
- `update_qr_code`: Update content, format, styling, or shapes of an existing QR code. _Note: Retrieve it first using `get_qr_code_by_id`, merge edits, and pass the updated payload._
- `list_qrcodes`: Retrieve a paginated list of QR codes.

### B. Project Management

- `list_projects`: Retrieve all active user projects.
- `list_deleted_projects`: Retrieve deleted projects that can be restored.
- `restore_deleted_project`: Restore a project to active state.

### C. File Uploads

- `upload_file`: Upload a base64 encoded image asset (logo, foreground, or background) for QR code customization. Returns a file ID.

### D. Analytics

- `get_total_scans` & `get_unique_users`: Get total scan events or unique scanning users over a date range.
- `get_top_performing_date` & `get_top_performing_location`: Find the date or country with the highest scan count.
- `get_project_scans` & `get_qrcode_scans`: Retrieve paginated event-level scan logs.

---

## 3. Rendering Prefab UI Components

The QRStuff MCP server returns responses structured using the **`prefab-ui`** layout schema (e.g. `Column`, `Row`, `DataTable`, `BarChart`, `Heading`, `Text`, `Image`, `Button`).

When displaying these responses to the user, **do not print the raw JSON**. Format them into clean, human-friendly markdown interfaces:

- **DataTable:** Render as a standard GitHub Markdown table with clear headers.
- **BarChart:** Represent scan statistics in a clean list or markdown visual structure.
- **Heading:** Use markdown headers (`###` or `####`).
- **Image:** Render inline using standard markdown syntax: `![alt](src)`.
- **Button:** Render as inline links or bullet points showing action options: `[label](url)`.
- **Column & Row:** Lay out the nested elements sequentially, grouping related row elements together.

---

## 4. Troubleshooting & Authentication

If a tool returns an authentication error (e.g., `Authentication required`), explain to the user that the server expects an active OAuth 2.1 authentication flow or a valid `QRSTUFF_ACCESS_TOKEN` set in the environment variables.