@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.
Maintainers
Readme
@witchpot/steamboard-mcp
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-mcpGlobal Installation
npm install -g @witchpot/steamboard-mcpLocal Installation
npm install @witchpot/steamboard-mcpAuthentication
SteamboardMCP uses unified authentication via MCP tokens. There are two ways to authenticate:
Option 1: MCP Token (Recommended)
- Visit Steamboard and sign in
- Navigate to Settings > Connected Apps
- Create a new MCP token
- Set the
MCP_TOKENenvironment 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_boardCanvas 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 AppTroubleshooting
"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:
- Use
set_active_boardto select a board before canvas operations - Set
STEAMBOARD_DEFAULT_BOARD_IDenvironment variable - Provide
boardIdexplicitly 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.
