Skip to content

Commit dfddd30

Browse files
committed
Update to version 0.2.0 of Steam Developer Tools plugin, introducing the steam-api-key-usage rule to guide users towards using MCP tools over raw API calls. Updated all skills to reference the companion Steam MCP server, enhancing documentation in CHANGELOG, README, and various skill files to reflect these changes. Adjusted plugin manifest for versioning consistency.
1 parent 23c6f46 commit dfddd30

20 files changed

Lines changed: 296 additions & 42 deletions

File tree

.cursor-plugin/plugin.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
{
22
"name": "steam-cursor-plugin",
33
"displayName": "Steam Developer Tools",
4-
"version": "0.1.0",
5-
"description": "Integrates Steam and Steamworks APIs for game developers and power users. 14 skills covering store data, multiplayer networking, cloud saves, leaderboards, input, inventory, social features, profile lookups, and game comparisons - plus 3 rules for App ID validation, secrets detection, and Steam Deck compatibility.",
4+
"version": "0.2.0",
5+
"description": "Integrates Steam and Steamworks APIs for game developers and power users. 14 skills covering store data, multiplayer networking, cloud saves, leaderboards, input, inventory, social features, profile lookups, and game comparisons - plus 4 rules for App ID validation, secrets detection, Steam Deck compatibility, and MCP tool preference. Companion Steam MCP server provides 10 live API tools.",
66
"author": {
77
"name": "TMHSDigital",
88
"url": "https://github.com/TMHSDigital"

CHANGELOG.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,21 @@ All notable changes to Steam Developer Tools will be documented in this file.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8+
## [0.2.0] - 2026-03-27
9+
10+
### Added
11+
12+
- **steam-api-key-usage** rule: when the Steam MCP server is available, flags raw `curl`/`fetch` calls to Steam API endpoints and suggests the equivalent MCP tool
13+
- Companion [Steam MCP Server](https://github.com/TMHSDigital/steam-mcp) referenced across all skills (server lives in separate repo)
14+
15+
### Changed
16+
17+
- All 14 skills updated: replaced `## MCP Integration (Future)` placeholder sections with concrete `## MCP Usage` sections referencing the companion Steam MCP server's actual tool signatures
18+
- 6 skills with direct MCP replacements now include "Preferred" callouts in their Workflow sections directing users to MCP tools over `curl` commands: steam-store-lookup, steam-player-stats, steam-profile-lookup, steam-game-comparison, steam-workshop-helper, steam-leaderboards
19+
- **steam-api-reference** skill now includes a full catalog of all 10 available MCP tools with parameter signatures and auth requirements
20+
- Plugin description updated to reflect MCP support and 4 rules
21+
- Version bumped to 0.2.0
22+
823
## [0.1.0] - 2026-03-26
924

1025
### Added
@@ -28,4 +43,5 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
2843
- **steam-deck-compat** rule: flags common Steam Deck compatibility issues (hardcoded resolutions, mouse-only input, anti-cheat, Windows-only paths, missing controller support)
2944
- Plugin manifest, README, CONTRIBUTING guide, and license
3045

46+
[0.2.0]: https://github.com/TMHSDigital/Steam-Cursor-Plugin/releases/tag/v0.2.0
3147
[0.1.0]: https://github.com/TMHSDigital/Steam-Cursor-Plugin/releases/tag/v0.1.0

CLAUDE.md

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
44

55
## Project Overview
66

7-
**Steam Developer Tools** is a Cursor IDE plugin (v0.1.0) that integrates Steam and Steamworks APIs for game developers and power users. It provides AI-assisted workflows for querying Steam store data, managing Steamworks configurations, building multiplayer networking, implementing cloud saves, leaderboards, input, inventory/economy, social features, looking up API docs, fetching player statistics, integrating Workshop UGC, designing achievements, looking up player profiles, and comparing games.
7+
**Steam Developer Tools** is a Cursor IDE plugin (v0.2.0) that integrates Steam and Steamworks APIs for game developers and power users. It provides AI-assisted workflows for querying Steam store data, managing Steamworks configurations, building multiplayer networking, implementing cloud saves, leaderboards, input, inventory/economy, social features, looking up API docs, fetching player statistics, integrating Workshop UGC, designing achievements, looking up player profiles, and comparing games.
88

9-
This is currently a **static, documentation-only plugin** - no build system, no npm, no compiled code. All plugin logic is expressed in Markdown skill files and MDC rule files.
9+
This plugin uses Markdown skill files and MDC rule files for AI guidance, paired with the companion [Steam MCP Server](https://github.com/TMHSDigital/steam-mcp) (separate repo) which provides 10 read-only API tools for live data access. No build system, no npm, no compiled code in this repo.
1010

11-
The project is on a themed release roadmap toward v1.0.0 (see `ROADMAP.md`). The next major milestone (v0.2.0 "Live Data") introduces a Steam MCP server (separate repo: [steam-mcp](https://github.com/TMHSDigital/steam-mcp)) with read-only API tools. Subsequent releases add analytics/market research skills (v0.3.0), CI/CD automation (v0.4.0), community/monetization skills (v0.5.0), QA rules (v0.6.0), MCP write operations (v0.7.0), and polish (v0.8.0). Target at v1.0.0: 30 skills, 9 rules, 20 MCP tools.
11+
The project is on a themed release roadmap toward v1.0.0 (see `ROADMAP.md`). The next major milestone (v0.3.0 "Insights") adds analytics and market research skills. Subsequent releases add CI/CD automation (v0.4.0), community/monetization skills (v0.5.0), QA rules (v0.6.0), MCP write operations (v0.7.0), and polish (v0.8.0). Target at v1.0.0: 30 skills, 9 rules, 20 MCP tools.
1212

1313
## Plugin Architecture
1414

@@ -39,13 +39,31 @@ Each `SKILL.md` uses YAML frontmatter followed by markdown sections: **Trigger**
3939
| `steam-profile-lookup` | Resolve vanity URLs, fetch player summaries, owned games, level/badges |
4040
| `steam-game-comparison` | Side-by-side comparison of price, reviews, player counts, genres |
4141

42-
### Rules (3 total)
42+
### Rules (4 total)
4343

4444
| Rule | Scope | Purpose |
4545
|------|-------|---------|
4646
| `steam-appid-validation.mdc` | `steam_appid.txt`, `*.vdf`, steamcmd configs | Enforces App ID consistency; warns if `480` (SpaceWar test) is used in production |
4747
| `steamworks-secrets.mdc` | Global (all files) | Flags Steam API keys (32-char hex), ssfn files, publisher credentials, DRM keys |
4848
| `steam-deck-compat.mdc` | `*.cpp`, `*.cs`, `*.gd`, `*.vdf`, `*.cfg`, `*.ini`, `*.json` | Flags Steam Deck compat issues: hardcoded resolutions, mouse-only input, anti-cheat, Windows paths |
49+
| `steam-api-key-usage.mdc` | `*.sh`, `*.ps1`, `*.py`, `*.js`, `*.ts`, `*.yml`, `*.yaml` | Flags raw curl/fetch to Steam APIs when MCP tools are available; suggests equivalent MCP tool |
50+
51+
### Companion MCP Server
52+
53+
The [Steam MCP Server](https://github.com/TMHSDigital/steam-mcp) provides 10 read-only tools. Skills reference these tools in their `## MCP Usage` sections. When the MCP server is configured in Cursor, skills prefer MCP tool calls over shell `curl` commands.
54+
55+
| MCP Tool | Auth | Maps to |
56+
|----------|------|---------|
57+
| `steam.getAppDetails({ appid })` | None | Store API `appdetails` |
58+
| `steam.searchApps({ term })` | None | Store API `storesearch` |
59+
| `steam.getPlayerCount({ appid })` | None | `GetNumberOfCurrentPlayers` |
60+
| `steam.getAchievementStats({ appid })` | None | `GetGlobalAchievementPercentagesForApp` |
61+
| `steam.getWorkshopItem({ publishedfileid })` | None | `GetPublishedFileDetails` |
62+
| `steam.getPlayerSummary({ steamid })` | Key | `GetPlayerSummaries` |
63+
| `steam.getOwnedGames({ steamid })` | Key | `GetOwnedGames` |
64+
| `steam.queryWorkshop({ appid })` | Key | `IPublishedFileService/QueryFiles` |
65+
| `steam.getLeaderboardEntries({ appid, leaderboardid })` | Key | `ISteamLeaderboards/GetLeaderboardEntries` |
66+
| `steam.resolveVanityURL({ vanityurl })` | Key | `ResolveVanityURL` |
4967

5068
## Development Workflow
5169

README.md

Lines changed: 39 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
<p align="center">
1212
<a href="LICENSE"><img src="https://img.shields.io/badge/license-CC--BY--NC--ND--4.0-blue.svg" alt="License: CC BY-NC-ND 4.0"></a>
13-
<a href="CHANGELOG.md"><img src="https://img.shields.io/badge/version-0.1.0-green.svg" alt="Version"></a>
13+
<a href="CHANGELOG.md"><img src="https://img.shields.io/badge/version-0.2.0-green.svg" alt="Version"></a>
1414
<a href="https://github.com/TMHSDigital/Steam-Cursor-Plugin/stargazers"><img src="https://img.shields.io/github/stars/TMHSDigital/Steam-Cursor-Plugin?style=flat" alt="GitHub Stars"></a>
1515
<a href="https://github.com/TMHSDigital/Steam-Cursor-Plugin/commits/main"><img src="https://img.shields.io/github/last-commit/TMHSDigital/Steam-Cursor-Plugin" alt="Last Commit"></a>
1616
<a href="https://github.com/TMHSDigital/Steam-Cursor-Plugin"><img src="https://img.shields.io/badge/Cursor-Plugin-8B5CF6.svg" alt="Cursor Plugin"></a>
@@ -20,7 +20,7 @@
2020

2121
---
2222

23-
Query Steam store data, manage Steamworks app configurations, build multiplayer networking, implement cloud saves, design achievements, compare games, and look up player profiles - all from within Cursor's AI chat. 14 skills and 3 rules covering the full Steam &amp; Steamworks ecosystem.
23+
Query Steam store data, manage Steamworks app configurations, build multiplayer networking, implement cloud saves, design achievements, compare games, and look up player profiles - all from within Cursor's AI chat. 14 skills and 4 rules covering the full Steam &amp; Steamworks ecosystem, with 10 live MCP tools via the companion [Steam MCP Server](https://github.com/TMHSDigital/steam-mcp).
2424

2525
> **No API key required** for most features. Store lookups, player counts, global achievement stats, and app searches all work out of the box.
2626
@@ -52,12 +52,46 @@ Query Steam store data, manage Steamworks app configurations, build multiplayer
5252
| **App ID Validation** | Checks that Steam App IDs are consistent across your project (`steam_appid.txt`, VDF files, source code) and warns if `steam_appid.txt` is missing. |
5353
| **Steamworks Secrets** | Prevents committing API keys, partner credentials, and auth tokens. Flags sensitive patterns and suggests secure alternatives. |
5454
| **Steam Deck Compatibility** | Flags common Deck compat issues in game code: hardcoded resolutions, mouse-only input, anti-cheat blockers, Windows-only paths, and missing controller support. |
55+
| **MCP Tool Preference** | When the Steam MCP server is configured, flags raw `curl`/`fetch` calls to Steam APIs and suggests the equivalent MCP tool. |
5556

5657
## Companion: Steam MCP Server
5758

58-
The [Steam MCP Server](https://github.com/TMHSDigital/steam-mcp) is the companion project that provides live, structured API tools for this plugin. It exposes Steam store data, player stats, achievements, workshop items, and more as MCP tools that AI-powered IDEs can call directly.
59-
60-
> **Status:** In development - coming in v0.2.0 of this plugin.
59+
The [Steam MCP Server](https://github.com/TMHSDigital/steam-mcp) is the companion project that provides live, structured API tools for this plugin. It exposes Steam store data, player stats, achievements, workshop items, and more as MCP tools that Cursor can call directly.
60+
61+
### Setup
62+
63+
Add the Steam MCP server to your Cursor MCP configuration (`.cursor/mcp.json`):
64+
65+
```json
66+
{
67+
"mcpServers": {
68+
"steam": {
69+
"command": "npx",
70+
"args": ["-y", "steam-mcp"],
71+
"env": {
72+
"STEAM_API_KEY": "your_key_here"
73+
}
74+
}
75+
}
76+
}
77+
```
78+
79+
The `STEAM_API_KEY` is only required for tools that access user-specific data (player summaries, owned games, workshop queries, leaderboards, vanity URL resolution). Store lookups, player counts, achievement stats, and workshop item details work without a key.
80+
81+
### Available Tools
82+
83+
| Tool | Auth | Description |
84+
|------|------|-------------|
85+
| `steam.getAppDetails` | None | Store data (price, reviews, tags, platforms) |
86+
| `steam.searchApps` | None | Search the Steam store by name |
87+
| `steam.getPlayerCount` | None | Current concurrent players |
88+
| `steam.getAchievementStats` | None | Global achievement unlock percentages |
89+
| `steam.getWorkshopItem` | None | Workshop item details |
90+
| `steam.getPlayerSummary` | Key | Player profile (name, avatar, status) |
91+
| `steam.getOwnedGames` | Key | Game library with playtime |
92+
| `steam.queryWorkshop` | Key | Search/browse Workshop items |
93+
| `steam.getLeaderboardEntries` | Key | Leaderboard scores and rankings |
94+
| `steam.resolveVanityURL` | Key | Convert vanity URL to Steam ID |
6195

6296
## Quick Start
6397

ROADMAP.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ Themed release plan from v0.2.0 through v1.0.0.
88

99
| Version | Theme | New Skills | New Rules | MCP Tools | Total Skills | Total Rules |
1010
|---------|-------|-----------|-----------|-----------|-------------|-------------|
11-
| v0.1.0 (current) | - | - | - | 0 | 14 | 3 |
12-
| v0.2.0 | Live Data | 0 (updates) | 1 | 10 | 14 | 4 |
11+
| v0.1.0 | - | - | - | 0 | 14 | 3 |
12+
| v0.2.0 (current) | Live Data | 0 (updates) | 1 | 10 | 14 | 4 |
1313
| v0.3.0 | Insights | 4 | 0 | 2 | 18 | 4 |
1414
| v0.4.0 | Ship It | 3 | 2 | 0 | 21 | 6 |
1515
| v0.5.0 | Grow | 4 | 0 | 2 | 25 | 6 |
@@ -212,3 +212,5 @@ Update all 14 existing skills to reference MCP tools where applicable. Replace "
212212

213213
- [x] ~~Steam Deck compatibility checker~~ - added in v0.1.0 as a rule
214214
- [x] ~~Steamworks SDK code generation~~ - covered by multiplayer, cloud, leaderboard, input, and inventory skills
215+
- [x] ~~Steam MCP server with 10 read-only tools~~ - companion repo [steam-mcp](https://github.com/TMHSDigital/steam-mcp), skills updated in v0.2.0
216+
- [x] ~~MCP tool preference rule~~ - `steam-api-key-usage.mdc` added in v0.2.0

rules/steam-api-key-usage.mdc

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
---
2+
description: When the Steam MCP server is available, guide users to prefer MCP tool calls over raw curl/fetch commands to Steam APIs. Flag direct HTTP calls to Steam endpoints and suggest the equivalent MCP tool.
3+
alwaysApply: false
4+
globs:
5+
- "**/*.sh"
6+
- "**/*.ps1"
7+
- "**/*.py"
8+
- "**/*.js"
9+
- "**/*.ts"
10+
- "**/*.yml"
11+
- "**/*.yaml"
12+
---
13+
14+
# Prefer Steam MCP Tools Over Raw API Calls
15+
16+
When editing or reviewing files that make HTTP requests to Steam APIs, suggest using the [Steam MCP server](https://github.com/TMHSDigital/steam-mcp) tools instead. MCP tools handle authentication, error handling, rate limiting, and response parsing automatically.
17+
18+
## Patterns to Flag
19+
20+
Flag any `curl`, `fetch`, `requests.get`, `Invoke-WebRequest`, or similar HTTP calls to these Steam API domains:
21+
22+
- `api.steampowered.com`
23+
- `store.steampowered.com/api/`
24+
- `partner.steam-api.com` (note: MCP only covers read-only endpoints, not partner write operations)
25+
26+
## MCP Tool Equivalents
27+
28+
When a flagged call matches one of these endpoints, suggest the MCP tool:
29+
30+
| Endpoint Pattern | MCP Tool |
31+
|-----------------|----------|
32+
| `/api/storesearch/` | `steam.searchApps({ term })` |
33+
| `/api/appdetails` | `steam.getAppDetails({ appid })` |
34+
| `GetNumberOfCurrentPlayers` | `steam.getPlayerCount({ appid })` |
35+
| `GetGlobalAchievementPercentagesForApp` | `steam.getAchievementStats({ appid })` |
36+
| `GetPublishedFileDetails` | `steam.getWorkshopItem({ publishedfileid })` |
37+
| `GetPlayerSummaries` | `steam.getPlayerSummary({ steamid })` |
38+
| `GetOwnedGames` | `steam.getOwnedGames({ steamid })` |
39+
| `QueryFiles` (IPublishedFileService) | `steam.queryWorkshop({ appid })` |
40+
| `GetLeaderboardEntries` | `steam.getLeaderboardEntries({ appid, leaderboardid })` |
41+
| `ResolveVanityURL` | `steam.resolveVanityURL({ vanityurl })` |
42+
43+
## What to Say
44+
45+
When a matching pattern is found:
46+
47+
> "This file makes a direct HTTP call to a Steam API endpoint. If the Steam MCP server is configured, consider using `{mcp_tool}` instead -- it handles authentication, timeouts, and error responses automatically."
48+
49+
## Exceptions
50+
51+
Do not flag these cases:
52+
- Calls to Steam API endpoints that have no MCP tool equivalent (e.g., `GetPlayerAchievements`, `GetUserStatsForGame`, `GetNewsForApp`, `ISteamMicroTxn`)
53+
- Code inside the MCP server itself (the `steam-mcp` project)
54+
- Documentation or comments explaining the raw API
55+
- Test files that intentionally test raw API behavior

skills/steam-achievement-designer/SKILL.md

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,14 @@ Always call `StoreStats()` after setting achievements to persist them to Steam s
152152
4. Provides C++ unlock code snippets for each
153153
5. Notes icon requirements and suggests consistent naming for icon files
154154

155-
## MCP Integration (Future)
155+
## MCP Usage
156156

157-
A Steam MCP server could expose `steam.getAchievementSchema({ appid })` to fetch existing achievement definitions. The design guidance, VDF generation, and code examples remain the same.
157+
When the [Steam MCP server](https://github.com/TMHSDigital/steam-mcp) is configured, you can fetch existing achievement data to inform new designs:
158+
159+
| Step | MCP Tool | Auth | Purpose |
160+
|------|----------|------|---------|
161+
| Get existing achievements | `steam.getAchievementStats({ appid })` | None | Fetch global unlock percentages to see what players actually unlock |
162+
163+
This is useful for reviewing an existing game's achievement distribution before designing new ones, or for auditing unlock rates on your own game.
164+
165+
The design guidance, VDF/JSON generation, naming conventions, icon requirements, and SDK unlock code remain the same regardless of MCP availability.

skills/steam-api-reference/SKILL.md

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,32 @@ Users should store their API key in an environment variable (`STEAM_API_KEY`) an
9797
3. Shows a `curl` example and explains the response structure
9898
4. Notes: "For per-player achievements you need the player's Steam ID and an API key. For global unlock percentages, no key is needed."
9999

100-
## MCP Integration (Future)
100+
## MCP Usage
101101

102-
When a Steam MCP server is available, it should expose tools like `steam.getApiDocs({ interface, method })` to return structured endpoint information. The formatting and example generation logic remains the same.
102+
The [Steam MCP server](https://github.com/TMHSDigital/steam-mcp) provides 10 tools that call Steam APIs directly, eliminating the need for manual `curl` commands for common operations.
103+
104+
### Available MCP Tools
105+
106+
**No API key required:**
107+
108+
| Tool | Description |
109+
|------|-------------|
110+
| `steam.getAppDetails({ appid, cc?, l? })` | Store data: price, reviews, tags, platforms, system requirements |
111+
| `steam.searchApps({ term, cc?, l? })` | Search the Steam store by name |
112+
| `steam.getPlayerCount({ appid })` | Current concurrent player count |
113+
| `steam.getAchievementStats({ appid })` | Global achievement unlock percentages |
114+
| `steam.getWorkshopItem({ publishedfileid })` | Workshop item details (title, tags, subscribers) |
115+
116+
**Requires `STEAM_API_KEY` environment variable:**
117+
118+
| Tool | Description |
119+
|------|-------------|
120+
| `steam.getPlayerSummary({ steamid })` | Player profile: name, avatar, online status |
121+
| `steam.getOwnedGames({ steamid, include_played_free_games?, include_appinfo? })` | Game library with playtime data |
122+
| `steam.queryWorkshop({ appid, search_text?, cursor?, numperpage?, query_type?, requiredtags? })` | Search and browse Workshop items |
123+
| `steam.getLeaderboardEntries({ appid, leaderboardid, rangestart?, rangeend?, datarequest?, steamid? })` | Leaderboard scores and rankings |
124+
| `steam.resolveVanityURL({ vanityurl, url_type? })` | Convert vanity URL to 64-bit Steam ID |
125+
126+
When an MCP tool exists for a given endpoint, prefer it over raw `curl` calls. For endpoints not covered by MCP tools (per-player achievements, user stats, news, microtransactions), continue using the Web API directly.
127+
128+
The Steamworks SDK documentation and example generation logic remain the same regardless of MCP availability.

skills/steam-cloud-saves/SKILL.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,8 @@ When a cloud conflict occurs (local and remote versions differ):
144144
4. Sets quota recommendation (100MB / 100 files is plenty for a roguelike)
145145
5. Notes: "Auto-Cloud works without any code changes. Steam syncs the files before launch and after exit."
146146

147-
## MCP Integration (Future)
147+
## MCP Usage
148148

149-
A Steam MCP server could expose `steam.listCloudFiles({ appid })` and `steam.getCloudQuota({ appid })` via the `ICloudService` Web API. The SDK integration patterns remain documentation-only.
149+
Steam Cloud uses the in-process Steamworks SDK API (`ISteamRemoteStorage`) for reading and writing save files. Auto-Cloud is configured through the Steamworks Partner site or VDF files. Neither has a publicly available Web API equivalent for the core operations.
150+
151+
This skill remains documentation-only regardless of whether the [Steam MCP server](https://github.com/TMHSDigital/steam-mcp) is available.

0 commit comments

Comments
 (0)