Files
unraid-mcp/MARKETPLACE.md
Jacob Magar 184b8aca1c fix: address 18 CRITICAL+HIGH PR review comments
**Critical Fixes (7 issues):**
- Fix GraphQL schema field names in users tool (role→roles, remove email)
- Fix GraphQL mutation signatures (addUserInput, deleteUser input)
- Fix dict(None) TypeError guards in users tool (use `or {}` pattern)
- Fix FastAPI version constraint (0.116.1→0.115.0)
- Fix WebSocket SSL context handling (support CA bundles, bool, and None)
- Fix critical disk threshold treated as warning (split counters)

**High Priority Fixes (11 issues):**
- Fix Docker update/remove action response field mapping
- Fix path traversal vulnerability in log validation (normalize paths)
- Fix deleteApiKeys validation (check response before success)
- Fix rclone create_remote validation (check response)
- Fix keys input_data type annotation (dict[str, Any])
- Fix VM domain/domains fallback restoration

**Changes by file:**
- unraid_mcp/tools/docker.py: Response field mapping
- unraid_mcp/tools/info.py: Split critical/warning counters
- unraid_mcp/tools/storage.py: Path normalization for traversal protection
- unraid_mcp/tools/users.py: GraphQL schema + null handling
- unraid_mcp/tools/keys.py: Validation + type annotations
- unraid_mcp/tools/rclone.py: Response validation
- unraid_mcp/tools/virtualization.py: Domain fallback
- unraid_mcp/subscriptions/manager.py: SSL context creation
- pyproject.toml: FastAPI version fix
- tests/*: New tests for all fixes

**Review threads resolved:**
PRRT_kwDOO6Hdxs5uu70L, PRRT_kwDOO6Hdxs5uu70O, PRRT_kwDOO6Hdxs5uu70V,
PRRT_kwDOO6Hdxs5uu70e, PRRT_kwDOO6Hdxs5uu70i, PRRT_kwDOO6Hdxs5uu7zn,
PRRT_kwDOO6Hdxs5uu7z_, PRRT_kwDOO6Hdxs5uu7sI, PRRT_kwDOO6Hdxs5uu7sJ,
PRRT_kwDOO6Hdxs5uu7sK, PRRT_kwDOO6Hdxs5uu7Tk, PRRT_kwDOO6Hdxs5uu7Tn,
PRRT_kwDOO6Hdxs5uu7Tr, PRRT_kwDOO6Hdxs5uu7Ts, PRRT_kwDOO6Hdxs5uu7Tu,
PRRT_kwDOO6Hdxs5uu7Tv, PRRT_kwDOO6Hdxs5uu7Tw, PRRT_kwDOO6Hdxs5uu7Tx

All tests passing.

Co-authored-by: docker-fixer <agent@pr-fixes>
Co-authored-by: info-fixer <agent@pr-fixes>
Co-authored-by: storage-fixer <agent@pr-fixes>
Co-authored-by: users-fixer <agent@pr-fixes>
Co-authored-by: config-fixer <agent@pr-fixes>
Co-authored-by: websocket-fixer <agent@pr-fixes>
Co-authored-by: keys-rclone-fixer <agent@pr-fixes>
Co-authored-by: vm-fixer <agent@pr-fixes>
2026-02-15 16:42:58 -05:00

5.2 KiB

Claude Code Marketplace Setup

This document explains the Claude Code marketplace and plugin structure for the Unraid MCP project.

What Was Created

1. Marketplace Manifest (.claude-plugin/marketplace.json)

The marketplace catalog that lists all available plugins in this repository.

Location: .claude-plugin/marketplace.json

Contents:

  • Marketplace metadata (name, version, owner, repository)
  • Plugin catalog with the "unraid" skill
  • Categories and tags for discoverability

2. Plugin Manifest (skills/unraid/.claude-plugin/plugin.json)

The individual plugin configuration for the Unraid skill.

Location: skills/unraid/.claude-plugin/plugin.json

Contents:

  • Plugin name, version, author
  • Repository and homepage links
  • Plugin-specific metadata

3. Documentation

  • .claude-plugin/README.md - Marketplace installation guide
  • Updated root README.md with plugin installation section

4. Validation Script

  • scripts/validate-marketplace.sh - Automated validation of marketplace structure

Installation Methods

Once you push this to GitHub, users can install via:

# Add your marketplace
/plugin marketplace add jmagar/unraid-mcp

# Install the Unraid skill
/plugin install unraid @unraid-mcp

Method 2: Local Installation (Development)

For testing locally before publishing:

# Add local marketplace
/plugin marketplace add /home/jmagar/workspace/unraid-mcp

# Install the plugin
/plugin install unraid @unraid-mcp

Method 3: Direct URL

Users can also install from a specific commit or branch:

# From specific branch
/plugin marketplace add jmagar/unraid-mcp#main

# From specific commit
/plugin marketplace add jmagar/unraid-mcp#abc123

Plugin Structure

unraid-mcp/
├── .claude-plugin/          # Marketplace manifest
│   ├── marketplace.json
│   └── README.md
├── skills/unraid/           # Plugin directory
│   ├── .claude-plugin/      # Plugin manifest
│   │   └── plugin.json
│   ├── SKILL.md             # Skill documentation
│   ├── README.md            # Plugin documentation
│   ├── examples/            # Example scripts
│   ├── scripts/             # Helper scripts
│   └── references/          # API reference docs
└── scripts/
    └── validate-marketplace.sh  # Validation tool

Marketplace Metadata

Categories

  • infrastructure - Server management and monitoring tools

Tags

  • unraid - Unraid-specific functionality
  • monitoring - System monitoring capabilities
  • homelab - Homelab automation
  • graphql - GraphQL API integration
  • docker - Docker container management
  • virtualization - VM management

Publishing Checklist

Before publishing to GitHub:

  1. Validate Structure

    ./scripts/validate-marketplace.sh
    
  2. Update Version Numbers

    • Bump version in .claude-plugin/marketplace.json
    • Bump version in skills/unraid/.claude-plugin/plugin.json
    • Update version in README.md if needed
  3. Test Locally

    /plugin marketplace add .
    /plugin install unraid @unraid-mcp
    
  4. Commit and Push

    git add .claude-plugin/ skills/unraid/.claude-plugin/
    git commit -m "feat: add Claude Code marketplace configuration"
    git push origin main
    
  5. Create Release Tag (Optional)

    git tag -a v1.0.0 -m "Release v1.0.0"
    git push origin v1.0.0
    

User Experience

After installation, users will:

  1. See the skill in their skill list

    /skill list
    
  2. Access Unraid functionality directly

    • Claude Code will automatically detect when to invoke the skill
    • Users can explicitly invoke with /unraid
  3. Have access to all helper scripts

    • Example scripts in examples/
    • Utility scripts in scripts/
    • API reference in references/

Maintenance

Updating the Plugin

To release a new version:

  1. Make changes to the plugin
  2. Update version in skills/unraid/.claude-plugin/plugin.json
  3. Update marketplace catalog in .claude-plugin/marketplace.json
  4. Run validation: ./scripts/validate-marketplace.sh
  5. Commit and push

Users with the plugin installed will see the update available and can upgrade with:

/plugin update unraid

Adding More Plugins

To add additional plugins to this marketplace:

  1. Create new plugin directory: skills/new-plugin/
  2. Add plugin manifest: skills/new-plugin/.claude-plugin/plugin.json
  3. Update marketplace catalog: add entry to .plugins[] array in .claude-plugin/marketplace.json
  4. Validate: ./scripts/validate-marketplace.sh

Support

Validation

Run the validation script anytime to ensure marketplace integrity:

./scripts/validate-marketplace.sh

This checks:

  • Manifest file existence and validity
  • JSON syntax
  • Required fields
  • Plugin structure
  • Source path accuracy
  • Documentation completeness

All 17 checks must pass before publishing.