{"_id":"@abiswas97/steam-mcp","_rev":"2-f59c0eec3cbf20be52eefc7b94db731e","name":"@abiswas97/steam-mcp","dist-tags":{"latest":"0.1.2"},"versions":{"0.1.0":{"name":"@abiswas97/steam-mcp","version":"0.1.0","keywords":["mcp","model-context-protocol","steam"],"license":"MIT","_id":"@abiswas97/steam-mcp@0.1.0","maintainers":[{"name":"abiswas97","email":"avishek.biswas.1997@gmail.com"}],"homepage":"https://github.com/abiswas97/steam-mcp#readme","bugs":{"url":"https://github.com/abiswas97/steam-mcp/issues"},"bin":{"steam-mcp":"dist/bin/steam-mcp.js"},"dist":{"shasum":"473799e5b7573272f5e53427d12888a53cdf9729","tarball":"https://registry.npmjs.org/@abiswas97/steam-mcp/-/steam-mcp-0.1.0.tgz","fileCount":141,"integrity":"sha512-9vmMcnzodctwmiGdWsqGCaK7JzMYCmUsKia0mYudp4NLagm8WG5zWz4V22MtDCkeV4C+HhTPFDIIc2tkSGi+eg==","signatures":[{"sig":"MEUCIQCZ8XLthkGa/oyAuvNQcYVsNKnM1ZYHEnHaxHG1f5ObAwIgPXqYLTOI0OTT5wF30hE2rpe1XuRocbvek6FsLcwn1tA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":353007},"type":"module","_from":"file:artifacts/abiswas97-steam-mcp-0.1.0.tgz","engines":{"node":">=22.22.0 <23 || >=24.0.0"},"scripts":{"lint":"eslint . --max-warnings 0","test":"vitest run","build":"node scripts/clean-dist.mjs && tsc -p tsconfig.build.json","check":"pnpm format:check && pnpm lint && pnpm typecheck && pnpm test:coverage","format":"prettier --write .","mutation":"stryker run","test:live":"vitest run --config vitest.live.config.ts","test:unit":"vitest run test/unit","typecheck":"tsc -p tsconfig.json --noEmit","format:check":"prettier --check .","test:contract":"vitest run test/contract","test:coverage":"vitest run --coverage","package:verify":"node scripts/verify-package.mjs","test:high-risk":"vitest run --config vitest.high-risk.config.ts --coverage","test:inspector":"pnpm build && vitest run --config vitest.conformance.config.ts","package:release":"node scripts/package-release.mjs","test:integration":"vitest run test/integration"},"_npmUser":{"name":"abiswas97","email":"avishek.biswas.1997@gmail.com"},"_resolved":"/Users/abiswas/code/personal/steam-mcp/main/artifacts/abiswas97-steam-mcp-0.1.0.tgz","_integrity":"sha512-9vmMcnzodctwmiGdWsqGCaK7JzMYCmUsKia0mYudp4NLagm8WG5zWz4V22MtDCkeV4C+HhTPFDIIc2tkSGi+eg==","repository":{"url":"git+https://github.com/abiswas97/steam-mcp.git","type":"git"},"_npmVersion":"10.9.7","description":"A remote-first, read-only Steam MCP server with local stdio support.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"4.4.3","@modelcontextprotocol/sdk":"1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"10.7.0","vitest":"4.1.10","prettier":"3.9.5","@eslint/js":"10.0.1","typescript":"6.0.3","@types/node":"22.20.1","typescript-eslint":"8.64.0","@vitest/coverage-v8":"4.1.10","@stryker-mutator/core":"9.6.1","@stryker-mutator/vitest-runner":"9.6.1","@modelcontextprotocol/inspector-cli":"1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/steam-mcp_0.1.0_1784988535466_0.9512384555626829","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@abiswas97/steam-mcp","version":"0.1.2","description":"A remote-first, read-only Steam MCP server with local stdio support.","type":"module","license":"MIT","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/abiswas97/steam-mcp.git"},"bugs":{"url":"https://github.com/abiswas97/steam-mcp/issues"},"homepage":"https://github.com/abiswas97/steam-mcp#readme","keywords":["mcp","model-context-protocol","steam"],"engines":{"node":">=22.22.0 <23 || >=24.0.0"},"bin":{"steam-mcp":"dist/bin/steam-mcp.js"},"dependencies":{"@modelcontextprotocol/sdk":"1.29.0","zod":"4.4.3"},"devDependencies":{"@eslint/js":"10.0.1","@modelcontextprotocol/inspector-cli":"1.0.0","@stryker-mutator/core":"9.6.1","@stryker-mutator/vitest-runner":"9.6.1","@types/node":"22.20.1","@vitest/coverage-v8":"4.1.10","eslint":"10.7.0","prettier":"3.9.5","typescript":"6.0.3","typescript-eslint":"8.64.0","vitest":"4.1.10"},"scripts":{"build":"node scripts/clean-dist.mjs && tsc -p tsconfig.build.json","check":"pnpm format:check && pnpm lint && pnpm typecheck && pnpm test:coverage","format":"prettier --write .","format:check":"prettier --check .","lint":"eslint . --max-warnings 0","mutation":"stryker run","package:release":"node scripts/package-release.mjs","package:verify":"node scripts/verify-package.mjs","test":"vitest run","test:contract":"vitest run test/contract","test:coverage":"vitest run --coverage","test:inspector":"pnpm build && vitest run --config vitest.conformance.config.ts","test:integration":"vitest run test/integration","test:high-risk":"vitest run --config vitest.high-risk.config.ts --coverage","test:live":"vitest run --config vitest.live.config.ts","test:unit":"vitest run test/unit","typecheck":"tsc -p tsconfig.json --noEmit"},"_id":"@abiswas97/steam-mcp@0.1.2","_integrity":"sha512-wZtkA/rI8DvBAvJkq0/z6LgE8p+ymBJqtv9PLeKztkwYx/8NE/pY8IezF3B0Bn4ErW+JI5OFWG82CLFvvmjgFw==","_resolved":"/home/runner/work/steam-mcp/steam-mcp/artifacts/abiswas97-steam-mcp-0.1.2.tgz","_from":"file:/home/runner/work/steam-mcp/steam-mcp/artifacts/abiswas97-steam-mcp-0.1.2.tgz","_nodeVersion":"24.18.0","_npmVersion":"11.16.0","dist":{"integrity":"sha512-wZtkA/rI8DvBAvJkq0/z6LgE8p+ymBJqtv9PLeKztkwYx/8NE/pY8IezF3B0Bn4ErW+JI5OFWG82CLFvvmjgFw==","shasum":"2e864df9a050299080aeb1c607fa486931021d8e","tarball":"https://registry.npmjs.org/@abiswas97/steam-mcp/-/steam-mcp-0.1.2.tgz","fileCount":141,"unpackedSize":351697,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@abiswas97%2fsteam-mcp@0.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCYUTjgxVwtquRX6IEiSkxsrzt4tgOLC8LnZLVSRGlf2gIhAN5kUwZE36UEMu5FvK7GG/cJqj6XgiUjXIzSv7WZ4O2k"}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89b4b414-2c1d-49e8-972c-77afd33ebbd0"}},"directories":{},"maintainers":[{"name":"abiswas97","email":"avishek.biswas.1997@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/steam-mcp_0.1.2_1785004945028_0.36214178387288176"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-25T14:08:55.317Z","modified":"2026-07-25T18:42:25.469Z","0.1.0":"2026-07-25T14:08:55.612Z","0.1.2":"2026-07-25T18:42:25.182Z"},"bugs":{"url":"https://github.com/abiswas97/steam-mcp/issues"},"license":"MIT","homepage":"https://github.com/abiswas97/steam-mcp#readme","keywords":["mcp","model-context-protocol","steam"],"repository":{"type":"git","url":"git+https://github.com/abiswas97/steam-mcp.git"},"description":"A remote-first, read-only Steam MCP server with local stdio support.","maintainers":[{"name":"abiswas97","email":"avishek.biswas.1997@gmail.com"}],"readme":"# Steam MCP Server\n\nA self-hostable, read-only\n[Model Context Protocol](https://modelcontextprotocol.io/) server for clean\naccess to public Steam data. It exposes eight focused tools and supports both\nself-hosted Streamable HTTP and local stdio clients.\n\nThe server does not modify Steam accounts, manage account settings, delete\naccounts, or provide recommendation and player-analysis tools.\n\n## Tools\n\n| Tool                        | Public Steam data returned                                             |\n| --------------------------- | ---------------------------------------------------------------------- |\n| `steam_get_player`          | Profile, visibility, presence, current game, and ban-summary facts     |\n| `steam_get_library`         | Filtered, sorted, cursor-paginated game library and recorded playtime  |\n| `steam_get_recent_activity` | Most recently launched games and available current activity            |\n| `steam_get_achievements`    | Cursor-paginated achievement progress for one player and app           |\n| `steam_get_friends`         | Cursor-paginated friends with optional bounded profile enrichment      |\n| `steam_get_wishlist`        | Cursor-paginated wishlist with availability, price, and discount facts |\n| `steam_search_games`        | Bounded Steam game candidates with stable app IDs                      |\n| `steam_get_game`            | Store details and explicitly requested optional game facets            |\n\nSteam privacy settings still apply. Private or unavailable data is reported as\nunavailable rather than bypassed.\n\n## Local quick start\n\nRequirements:\n\n- Node.js 22.22 or a current Node.js 24 release\n- [pnpm](https://pnpm.io/installation)\n- A [Steam Web API key](https://steamcommunity.com/dev/apikey) for the full tool\n  set\n\nExport your credential in the environment, then start the package executable:\n\n```sh\nexport STEAM_API_KEY=\"<your Steam Web API key>\"\nexport STEAM_USER=\"<optional SteamID64, vanity name, or profile URL>\"\npnpm dlx @abiswas97/steam-mcp\n```\n\n`STEAM_USER` is optional. It supplies a local default for the six\nplayer-oriented tools; an explicit `user` tool argument always takes precedence.\nGame search and exact game lookup do not require a user.\n\nFor Codex, Claude Desktop, generic stdio clients, MCP Inspector, and\ndevelopment-from-source instructions, see [Local setup](docs/local-setup.md).\n\n## Self-hosted HTTP quick start\n\nThe same `steam-mcp` executable starts a Streamable HTTP server when invoked\nwith `serve`. The server is protected by one operator-configured bearer token.\nVersioned releases also publish a container at `ghcr.io/abiswas97/steam-mcp`.\nThis repository does not operate a hosted provider, user-account system, or\npublic shared service.\n\nGenerate a high-entropy token, configure the required Steam, token, resource,\nand Host environment variables, then run the packaged executable:\n\n```sh\nexport STEAM_API_KEY=\"<deployment Steam Web API key>\"\nexport STEAM_USER=\"<optional shared default Steam user>\"\nexport MCP_ACCESS_TOKEN=\"<random secret of at least 32 characters>\"\nexport MCP_RESOURCE_URI=\"https://mcp.example.com/mcp\"\nexport ALLOWED_HOSTS=\"mcp.example.com\"\npnpm dlx @abiswas97/steam-mcp serve\n```\n\nThe executable listens on plain HTTP (`127.0.0.1:3000` by default). Production\ndeployments must explicitly configure the listener address, terminate TLS at a\ntrusted reverse proxy, and expose the exact HTTPS `MCP_RESOURCE_URI`. The\ninitial quota and concurrency implementations are process-local, so run exactly\none instance until a distributed atomic quota adapter exists.\n\nRemote clients must support configuring a fixed `Authorization: Bearer <token>`\nheader. OAuth discovery and interactive login are not part of v1. See\n[Hosted setup](docs/hosted-setup.md) for every environment variable and\n[Operations](docs/operations.md) for TLS, health, draining, and rollout gates.\n\n## Development\n\nThis repository uses pnpm exclusively:\n\n```sh\npnpm install --frozen-lockfile\npnpm check\npnpm build\npnpm test:inspector\n```\n\nAdditional test commands are documented in [Testing](docs/testing.md).\n\n## Security and data boundaries\n\n- All eight tools are read-only.\n- Local credentials are read from process environment or the MCP client's local\n  configuration.\n- The server never logs the Steam API key.\n- Local mode does not require remote authorization, account linking, or\n  persistent storage.\n- Self-hosted HTTP mode compares each bearer credential with one\n  operator-configured secret. It has no users, accounts, OAuth flow, or\n  token-to-Steam identity mapping.\n- Either mode may use one operator-configured `STEAM_USER` default. In hosted\n  mode it is shared by every authorized client and is not caller identity.\n- Remote quota and concurrency limits apply to the whole running instance, not\n  to individual clients.\n- Local process state is discarded when the server exits.\n\n## License\n\n[MIT](LICENSE)\n","readmeFilename":"README.md"}