You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CLAUDE.md
+12-3Lines changed: 12 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,7 +2,7 @@
2
2
3
3
## What is this?
4
4
5
-
An MCP (Model Context Protocol) server that exposes Steam Web API endpoints as structured tools for AI-powered IDEs. It is the companion server for the [Steam Developer Tools](https://github.com/TMHSDigital/Steam-Cursor-Plugin) Cursor plugin, which provides 14 skills and 3 rules for Steam/Steamworks development.
5
+
An MCP (Model Context Protocol) server that exposes Steam Web API endpoints as structured tools for AI-powered IDEs. It is the companion server for the [Steam Developer Tools](https://github.com/TMHSDigital/Steam-Cursor-Plugin) Cursor plugin, which provides 14 skills and 4 rules for Steam/Steamworks development.
6
6
7
7
The plugin's skills reference these MCP tools to fetch live data from Steam - player stats, store info, workshop items, leaderboards, and more.
8
8
@@ -24,7 +24,7 @@ src/
24
24
**Key patterns:**
25
25
26
26
- Each tool is a self-contained module that exports `register(server: McpServer)`.
27
-
-`steam-api.ts` provides `steamFetch()` which handles timeouts (15s via AbortController), HTTP error detection (429 rate limits, 5xx unavailable), and JSON parsing.
27
+
-`steam-api.ts` provides `steamFetch()` which handles timeouts (15s via AbortController with `TimeoutError`), HTTP error detection (429 rate limits with up to 2 retries and exponential backoff, 5xx unavailable), and JSON parsing.
28
28
-`errorResponse()` formats errors as MCP-compatible `{ isError: true }` responses.
29
29
- Tools that need an API key call `requireApiKey()` which reads `STEAM_API_KEY` from env and throws `MissingApiKeyError` with setup instructions if missing.
30
30
- No-auth tools (getAppDetails, searchApps, getPlayerCount, getAchievementStats, getWorkshopItem) work without any configuration.
@@ -40,7 +40,16 @@ npm run dev # tsx watch for development
40
40
41
41
## How to test
42
42
43
-
Manual testing via MCP inspector or by configuring as an MCP server in Cursor:
43
+
**Automated tests (vitest):**
44
+
45
+
```bash
46
+
npm test# single run
47
+
npm run test:watch # watch mode
48
+
```
49
+
50
+
Tests cover error classes, `steamFetch` behavior (mocked fetch), retry logic, and Zod input validation for all 10 tools.
51
+
52
+
**Manual testing** via MCP inspector or by configuring as an MCP server in Cursor:
MCP (Model Context Protocol) server for Steam and Steamworks APIs. Provides structured tools for querying Steam store data, player statistics, achievements, workshop items, leaderboards, and player profiles from AI-powered IDEs.
4
8
5
9
Built as the companion MCP server for the [Steam Developer Tools](https://github.com/TMHSDigital/Steam-Cursor-Plugin) Cursor plugin.
@@ -143,6 +147,13 @@ These require `STEAM_API_KEY` to be set:
143
147
|`IPublishedFileService/QueryFiles/v1`| API key |
144
148
|`ISteamLeaderboards/GetLeaderboardEntries/v1`| Publisher key + IP allowlist |
0 commit comments