npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@witchpot/steamboard-mcp

v0.3.2

Published

MCP Server for Steam game market research and analytics with browser-based OAuth authentication. Search games, analyze tag combinations, and control Steamboard canvas.

Readme

@witchpot/steamboard-mcp

npm version

A Model Context Protocol (MCP) server for Steam game market research and analytics. This server provides AI assistants with tools to search Steam games, analyze tag combinations, find similar games, discover related tags, and control the Steamboard canvas.

Features

Steam Data Tools (5)

  • search_games - Search Steam games with advanced filters (tags, price, reviews, ratings, release date)
  • count_games - Fast count-only endpoint for "how many games...?" questions
  • get_game_stats - Aggregate statistics (averages, distributions) for games matching filters
  • analyze_tag_combinations - Discover successful niche markets and identify oversaturated/undersaturated genre combinations
  • analyze_related_tags - Discover which tags work well together and their impact on success rates

Board Management Tools (4)

  • list_boards - List all accessible boards
  • set_active_board - Set the target board for canvas operations
  • get_active_board - Check which board is currently active
  • clear_active_board - Clear the active board setting

Canvas Tools (5)

  • canvas_create_game_cards - Create game card visualizations on the Steamboard canvas
  • canvas_apply_layout - Apply layout algorithms (scatter, grid, timeline, etc.) to shapes
  • canvas_get_context - Get current board state (visible shapes, selection, viewport)
  • canvas_select_shapes - Select shapes on the canvas
  • canvas_delete_shapes - Remove shapes from the canvas

Design Philosophy

This MCP exposes absolute value parameters (reviewsMin, priceMax, etc.) rather than predefined buckets. This allows AI agents to define their own criteria based on context, user preferences, and domain knowledge.

Requirements

  • Node.js >= 18.0.0
  • Steamboard account (https://steamboard.witchpot.com)

Installation

Using npx (Recommended)

npx @witchpot/steamboard-mcp

Global Installation

npm install -g @witchpot/steamboard-mcp

Local Installation

npm install @witchpot/steamboard-mcp

Authentication

SteamboardMCP uses unified authentication via MCP tokens. There are two ways to authenticate:

Option 1: MCP Token (Recommended)

  1. Visit Steamboard and sign in
  2. Navigate to Settings > Connected Apps
  3. Create a new MCP token
  4. Set the MCP_TOKEN environment variable

Option 2: Browser Authentication

If no token is configured, SteamboardMCP will automatically open a browser window for authentication when first started. The token is stored locally for future use.

Configuration

| Variable | Required | Default | Description | |----------|----------|---------|-------------| | MCP_TOKEN | No* | - | MCP token for authentication | | STEAMBOARD_API_URL | No | https://steamboard.witchpot.com | Steamboard API base URL | | MCP_AUTH_PORT | No | 9876 | Port for OAuth callback during browser auth | | STEAMBOARD_DEFAULT_BOARD_ID | No | - | Default board ID for canvas operations |

*Required if browser authentication is not available

Usage with Claude Desktop

Add the following to your Claude Desktop configuration file:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "steamboard": {
      "command": "npx",
      "args": ["-y", "@witchpot/steamboard-mcp"],
      "env": {
        "MCP_TOKEN": "your-mcp-token"
      }
    }
  }
}

With Default Board

To set a default board for canvas operations:

{
  "mcpServers": {
    "steamboard": {
      "command": "npx",
      "args": ["-y", "@witchpot/steamboard-mcp"],
      "env": {
        "MCP_TOKEN": "your-mcp-token",
        "STEAMBOARD_DEFAULT_BOARD_ID": "your-board-id"
      }
    }
  }
}

Usage with Claude Code

Add to your project's .mcp.json:

{
  "mcpServers": {
    "steamboard": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@witchpot/steamboard-mcp"],
      "env": {
        "MCP_TOKEN": "your-mcp-token"
      }
    }
  }
}

Available Tools

search_games

Search Steam games with advanced filters including tags, price ranges, review counts, ratings, and scale buckets.

Parameters: | Parameter | Type | Description | |-----------|------|-------------| | tags | string[] | Filter by Steam tags (e.g., ["roguelike", "action"]) | | tagMode | "and" | "or" | Tag matching mode (default: "or") | | reviewsMin / reviewsMax | number | Review count range | | ratingMin | number | Rating percentage range (0-100) | | priceMin / priceMax | number | Price range in cents | | releaseFrom / releaseTo | string | Release date range (YYYY-MM-DD) | | sort | string | Sort order (reviews_desc, rating_desc, price_asc, etc.) | | limit | number | Max results (default: 50, max: 100) |


analyze_tag_combinations

Analyze tag combinations to discover successful niche markets and identify oversaturated/undersaturated genre combinations.

Parameters: | Parameter | Type | Description | |-----------|------|-------------| | groupBy | string | Required. Grouping: "single_tag" or "tag_combination" | | tags | string[] | Filter to combinations containing these tags | | tagMode | "and" | "or" | Tag matching mode | | successReviewsMin | number | Reviews threshold for "success" | | successRatingMin | number | Rating threshold for "success" | | limit | number | Max results (default: 50, max: 100) |


analyze_related_tags

Analyze tag co-occurrence to find tags that work well with a given tag set.

Parameters: | Parameter | Type | Description | |-----------|------|-------------| | baseTags | string[] | Required. Base tags to analyze | | baseTagMode | "and" | "or" | Tag matching mode for base tags (default: "and") | | excludeGeneric | boolean | Exclude generic tags from results (default: true) | | minCoOccurrence | number | Minimum games with the related tag (default: 5) | | limit | number | Max results (default: 30, max: 100) |


Board Management

# List available boards
list_boards

# Set active board (required before canvas operations if no default)
set_active_board { boardId: "abc123" }

# Check current board
get_active_board

# Clear active board
clear_active_board

Canvas Tools

All canvas tools use the active board or STEAMBOARD_DEFAULT_BOARD_ID if no boardId is specified.

canvas_create_game_cards

Create game card shapes on the Steamboard canvas.

Parameters: | Parameter | Type | Description | |-----------|------|-------------| | boardId | string | Target board ID (optional if active board is set) | | cards | array | Required. Array of game cards to create | | cards[].appid | number | Required. Steam App ID | | layoutType | "none" | "grid" | "scatter" | Layout for positioning (default: "grid") |

canvas_apply_layout

Apply a layout algorithm to arrange shapes on the canvas.

Parameters: | Parameter | Type | Description | |-----------|------|-------------| | boardId | string | Target board ID (optional if active board is set) | | layoutType | string | Required. Layout type: scatter, grid, quadrant, timeline, ranked_list, category | | shapeIds | string[] | Required. Shape IDs to arrange. Use ["selected"] for current selection |

canvas_get_context

Get the current board state including visible shapes, selection, and viewport.

Parameters: | Parameter | Type | Description | |-----------|------|-------------| | boardId | string | Target board ID (optional if active board is set) |


Recommended Thresholds

Since this MCP uses absolute values, here are recommended thresholds that agents can use as guidelines:

Popularity (by review count)

| Category | Review Count | Description | |----------|-------------|-------------| | Niche/New | 0-100 | Recently released or very niche | | Small | 100-1,000 | Small but established audience | | Medium | 1,000-10,000 | Growing audience | | Popular | 10,000-100,000 | Well-known games | | Massive | 100,000+ | Mainstream hits |

Success Criteria

| Level | Reviews | Rating | Description | |-------|---------|--------|-------------| | Minimum Viable | 500+ | 70%+ | Has some traction | | Successful | 1,000+ | 80%+ | Clearly successful | | Hit | 10,000+ | 85%+ | Major success |

Use Cases

For Game Developers

  • Market Research: Identify underserved niches with high success rates
  • Competitive Analysis: Find similar games to understand your competition
  • Tag Optimization: Discover which tag combinations lead to better visibility and success
  • Trend Analysis: Explore popular and emerging genre combinations

For Market Analysts

  • Genre Mapping: Understand the Steam game landscape by tag combinations
  • Success Patterns: Identify what makes games successful in specific niches
  • Market Gaps: Find opportunities in undersaturated markets

Architecture

AI Agent (Claude Desktop / Claude Code / other LLMs)
       ↓
   MCP Protocol (stdio)
       ↓
  @witchpot/steamboard-mcp (this package)
       ↓
  Steamboard Unified API (MCP Token)
       ↓
  ┌─────────────────────────────────────────────┐
  │                                             │
  ▼                                             ▼
Steam Data API                          Canvas API
(Game data & analytics)                (Canvas operations)
       ↓                                        ↓
  Supabase (PostgreSQL)                 Supabase Realtime
       │                                        ↓
       │                                  Browser (tldraw)
       └────────────────────────────────────────┘
                        ↓
                 Steamboard Web App

Troubleshooting

"No credentials found. Starting browser authentication..."

This is normal if no MCP_TOKEN is set. A browser window will open for authentication.

"Browser authentication failed"

Ensure you're logged into Steamboard and can access the site in your browser.

"Board ID is required but not configured"

Either:

  1. Use set_active_board to select a board before canvas operations
  2. Set STEAMBOARD_DEFAULT_BOARD_ID environment variable
  3. Provide boardId explicitly in tool calls

Roadmap

  • [ ] Time-series analysis tools (tracking historical data)
  • [ ] VLM integration for visual analysis
  • [ ] Caching layer for expensive queries
  • [ ] Rate limiting and request optimization

License

Copyright (c) 2025 Witchpot Inc. All rights reserved.

Permitted Use:

  • Personal projects
  • Educational purposes
  • Non-commercial research

Commercial Use: Requires a separate commercial license. Contact Witchpot Inc for inquiries.

Restrictions:

  • Redistribution is prohibited
  • Modification and distribution of derivative works is prohibited

See LICENSE for full terms.

Support

For support and inquiries, contact Witchpot Inc.