{"id":49418321,"url":"https://github.com/groupthink-dev/steam-blade-mcp","last_synced_at":"2026-04-29T04:12:14.989Z","repository":{"id":350778271,"uuid":"1203402269","full_name":"Groupthink-dev/steam-blade-mcp","owner":"Groupthink-dev","description":null,"archived":false,"fork":false,"pushed_at":"2026-04-24T02:11:18.000Z","size":86,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-24T04:17:09.087Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Groupthink-dev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-07T02:26:43.000Z","updated_at":"2026-04-24T02:11:22.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/Groupthink-dev/steam-blade-mcp","commit_stats":null,"previous_names":["groupthink-dev/steam-blade-mcp"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Groupthink-dev/steam-blade-mcp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Groupthink-dev%2Fsteam-blade-mcp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Groupthink-dev%2Fsteam-blade-mcp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Groupthink-dev%2Fsteam-blade-mcp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Groupthink-dev%2Fsteam-blade-mcp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Groupthink-dev","download_url":"https://codeload.github.com/Groupthink-dev/steam-blade-mcp/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Groupthink-dev%2Fsteam-blade-mcp/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32410077,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-29T03:46:11.172Z","status":"ssl_error","status_checked_at":"2026-04-29T03:37:55.317Z","response_time":110,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-04-29T04:12:13.878Z","updated_at":"2026-04-29T04:12:14.981Z","avatar_url":"https://github.com/Groupthink-dev.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Steam Blade MCP\n\nA security-first, token-efficient MCP server for the Steam gaming platform. Built for the [Sidereal](https://sidereal.cc) plugin marketplace.\n\n## Why Another Steam MCP?\n\nThere are 9+ Steam MCP servers on GitHub. None of them are suitable for production use in a plugin marketplace:\n\n| Problem | Existing MCPs | Steam Blade |\n|---------|--------------|-------------|\n| **Security** | Mixed — most lack input validation, none block SSRF, some use undocumented APIs that risk account bans | Official APIs only. Steam ID regex, SSRF protection, rate limiting, credential scrubbing |\n| **Token cost** | Raw JSON dumps — a library call can return 200KB+ of unfiltered data | Compact pipe-delimited output. `detail` parameter. Pagination. 5-50x fewer tokens |\n| **Marketplace ready** | None have manifests, contracts, setup metadata, or conformance declarations | Full `sidereal-plugin.yaml` with `gaming-v1` contract, setup wizard metadata, credential config |\n| **Caching** | 1 of 9 implements proper caching | TTL cache with async stampede prevention on every endpoint |\n| **Rate limiting** | 1 of 9 implements per-host rate limiting | Per-host async limiters: Web API 1/s, Store API 0.67/s, Community 0.33/s |\n\n### Competitive Landscape\n\n| Server | Tools | Security | Tokens | Maintained |\n|--------|-------|----------|--------|------------|\n| sharkusmanch/steam-mcp-server | 30 | Good (SSRF) | Poor (raw JSON) | Active |\n| XiaWan-Play/steam-tools-mcp | 25 | Good | Good (aggregated) | Active |\n| shiyuki/steam-mcp-server | 4 | Good (rate limit) | Excellent | Active (narrow) |\n| **steam-blade-mcp** | **12** | **Best** | **Best** | **Active** |\n\nSteam Blade has fewer raw tools than sharkusmanch's 30, but each tool is aggregated and token-optimised. `steam_profile` alone replaces 3 separate tools by combining profile + level + bans into a single call with compact output.\n\n## Security Posture\n\n**API surface — official only:**\n- Steam Web API (`api.steampowered.com`) — API key, read-only, stable\n- Steam Store API (`store.steampowered.com`) — no auth, read-only, stable\n- Steam Community (`steamcommunity.com`) — inventory and market reads only\n\n**Explicitly excluded:**\n- Revadike/InternalSteamWebAPI undocumented endpoints (ToS violation risk, credential escalation)\n- Steam CM protocol (full credential exposure)\n- Any write operations (no purchasing, trading, or messaging)\n- Session cookie authentication (no browser session handling)\n\n**Controls:**\n- Steam ID validation: `^[0-9]{17}$` regex on all inputs\n- SSRF protection: blocks RFC 1918, loopback, link-local, multicast, documentation ranges\n- API key scrubbing: keys never appear in tool output or error messages\n- Per-host rate limiting: async limiters prevent Steam API throttling\n- Input validation: Pydantic models with constrained types on all parameters\n\n## Installation\n\n### Sidereal Marketplace\n\n```\nsidereal plugin add Groupthink-dev/steam-blade-mcp\n```\n\nThe install wizard will prompt for your Steam API key and Steam ID.\n\n### Manual (uv)\n\n```bash\n# Install\nuv pip install steam-blade-mcp\n\n# Configure\nexport STEAM_API_KEY=\"your-key-from-steamcommunity.com/dev/apikey\"\nexport STEAM_ID=\"76561198012345678\"\n\n# Run\nsteam-blade-mcp\n```\n\n### Claude Desktop\n\nAdd to `claude_desktop_config.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"steam\": {\n      \"command\": \"uvx\",\n      \"args\": [\"steam-blade-mcp\"],\n      \"env\": {\n        \"STEAM_API_KEY\": \"your-api-key\",\n        \"STEAM_ID\": \"your-steam-id\"\n      }\n    }\n  }\n}\n```\n\n### Claude Code\n\nAdd to `~/.claude.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"steam\": {\n      \"command\": \"uvx\",\n      \"args\": [\"steam-blade-mcp\"],\n      \"env\": {\n        \"STEAM_API_KEY\": \"your-api-key\",\n        \"STEAM_ID\": \"your-steam-id\"\n      }\n    }\n  }\n}\n```\n\n## Getting Credentials\n\n1. **Steam API Key** — Register at [steamcommunity.com/dev/apikey](https://steamcommunity.com/dev/apikey). Requires a Steam account with at least one purchase.\n\n2. **Steam ID** — Your 17-digit SteamID64. Find it at [steamid.io](https://steamid.io) or from your Steam profile URL.\n\n## Tools\n\n| Tool | Description | Default Output |\n|------|-------------|---------------|\n| `steam_profile` | Player overview (name, status, level, bans) | One-line summary |\n| `steam_library` | Owned games with playtime (paginated, sortable) | Name + hours, top 25 |\n| `steam_recent` | Recently played (last 2 weeks) | Name + 2wk hours |\n| `steam_search` | Fuzzy game search by name | Name + app ID |\n| `steam_game` | Store details (price, rating, platforms) | One-line with price |\n| `steam_achievements` | Per-game achievement progress | Count + percentage |\n| `steam_friends` | Friends list (optional enrichment) | Steam IDs + since date |\n| `steam_news` | Game news feed (truncated) | Date + title |\n| `steam_stats` | Global achievement unlock rates | Top/bottom 5 |\n| `steam_inventory` | Game item inventory | Count + sample |\n| `steam_price` | Community Market item price | Price + volume |\n| `steam_players` | Current concurrent player count | Single number |\n\nEvery tool supports `detail=\"summary\"` (default, compact) and `detail=\"full\"` (all fields).\n\n## Token Efficiency\n\nSummary mode output examples:\n\n```\nPlayerName | Online | Playing CS2 | Level 42 | AU\nGames 1-25 of 347\nCounter-Strike 2 | 1,234.5h\nElden Ring | 892.3h\nAchievements: 47/50 (94%)\nCurrent players: 1,234,567\n```\n\nFull mode adds structured multi-line output with all available fields when you need the detail.\n\nSee [SKILL.md](SKILL.md) for the complete token efficiency guide and workflow examples.\n\n## Environment Variables\n\n| Variable | Required | Description |\n|----------|----------|-------------|\n| `STEAM_API_KEY` | Yes | Steam Web API key |\n| `STEAM_ID` | Yes | Default 17-digit Steam ID |\n| `STEAM_MCP_TRANSPORT` | No | `stdio` (default) or `http` |\n| `STEAM_MCP_HOST` | No | HTTP host (default `127.0.0.1`) |\n| `STEAM_MCP_PORT` | No | HTTP port (default `8780`) |\n\n## Development\n\n```bash\n# Setup\nmake install-dev\n\n# Run locally\nmake dev\n\n# Test\nmake test\n\n# Lint\nmake lint\n```\n\n## Sidereal Contract: `gaming-v1`\n\nThis MCP implements the `gaming-v1` domain contract:\n\n- **Required** (4/4): `player_summary`, `library`, `game_details`, `search_games`\n- **Recommended** (4/4): `recent_games`, `achievements`, `friends`, `game_news`\n- **Optional** (4/5): `global_stats`, `inventory`, `market_price`, `player_count`\n- **Gated**: none (entire contract is read-only)\n\nNo gated (write) operations — Steam's API does not support safe write operations without credential escalation.\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgroupthink-dev%2Fsteam-blade-mcp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgroupthink-dev%2Fsteam-blade-mcp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgroupthink-dev%2Fsteam-blade-mcp/lists"}