pysteam-client
Modern Python client for the Steam network — CM protocol, PICS, CDN, WebAuth, Web API, Steam Guard, SteamIDs — plus a fully-async facade for FastAPI / TaskIQ and an MCP tool set for LLM agents.
Maintained fork of ValvePython/steam for Python 3.13+ and current Steam wire protocols. Full docs in the Wiki.
Install
pip install pysteam-client[client]
[client] pulls in the gevent-based SteamClient (login, PICS, CDN). Without it the requests-only subset (WebAPI / WebAuth / SteamID / master-server query) still works.
Quick start
Sync (script, CLI, batch jobs):
from steam.client import SteamClient
client = SteamClient()
client.anonymous_login()
info = client.get_product_info(apps=[440], timeout=15)
print(info["apps"][440]["common"]["name"])
client.logout()
Async (FastAPI, TaskIQ, any asyncio app):
from steam.aio import AsyncSteamClient
async with AsyncSteamClient() as client:
await client.anonymous_login()
info = await client.get_product_info(apps=[440])
MCP (expose to an LLM agent):
from mcp.server.fastmcp import FastMCP
from steam.aio import AsyncSteamClient
from steam.mcp import register_steam_tools
server = FastMCP("Steam")
client = AsyncSteamClient()
await client.start()
await client.anonymous_login()
register_steam_tools(server, client) # steam.status, steam.get_product_info, steam.send_um
Documentation
Full documentation lives in the Wiki. Highlights:
Getting started
Client APIs
SteamClient — sync gevent client (the original)
PICS — app / package metadata
CDNClient — depot downloads
WebAuth — authenticated session
WebAPI — api.steampowered.com wrapper
SteamAuthenticator — 2FA
SteamID — parse / convert Steam IDs
Async / FastAPI / MCP (new in 1.6)
AsyncSteamClient — asyncio facade
Pool — multi-account
MCP — Model Context Protocol tools + FastMCP adapter
Advanced
Security
Every push, PR, and release runs the following gates before any wheel ships to PyPI: ruff + black (style), mypy --strict (types), pytest (unit + integration), deptry (deps hygiene), bandit (Python SAST), pip-audit (CVEs), CodeQL (cross-file SAST), OpenSSF Scorecard (repo posture). A failing gate blocks the publish step.
Report a vulnerability: use GitHub Security Advisories (private, coordinated disclosure). Full policy in SECURITY.md. Do NOT open a public GitHub issue for security reports.
License
MIT — see LICENSE. Unchanged from upstream.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pysteam_client-1.8.2.tar.gz.
File metadata
- Download URL: pysteam_client-1.8.2.tar.gz
- Upload date:
- Size: 948.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
580f8db4e174169265eb29e2fe49ee56a1a37c87eb0110285c3ec74e4d15c3a5
|
|
| MD5 |
1a52db76855207f7477675726e0c8eaa
|
|
| BLAKE2b-256 |
5071414af4da026764f9e19743b7ff5a6be1ef6dbd84555a5d0f64b7b1dc7fa7
|
Provenance
The following attestation bundles were made for pysteam_client-1.8.2.tar.gz:
Publisher:
publish.yml on H47R15/steam
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pysteam_client-1.8.2.tar.gz -
Subject digest:
580f8db4e174169265eb29e2fe49ee56a1a37c87eb0110285c3ec74e4d15c3a5 - Sigstore transparency entry: 2232163000
- Sigstore integration time:
-
Permalink:
H47R15/steam@ae782b5dcb9e78b7833586c0ec0bea9025d4d08f -
Branch / Tag:
refs/tags/v1.8.2 - Owner: https://github.com/H47R15
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@ae782b5dcb9e78b7833586c0ec0bea9025d4d08f -
Trigger Event:
release
-
Statement type:
File details
Details for the file pysteam_client-1.8.2-py3-none-any.whl.
File metadata
- Download URL: pysteam_client-1.8.2-py3-none-any.whl
- Upload date:
- Size: 1.1 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
035d0f3e2bf4b34fa78931c378edcca861aeefe348ab5e51551be4949eeb6f42
|
|
| MD5 |
6e2710dc1ff99822358f8b0f63dd35eb
|
|
| BLAKE2b-256 |
4d5605f3576e7125d4a9c0187ce30ef5b7bd309a2028b1b5e79433f75fa8e597
|
Provenance
The following attestation bundles were made for pysteam_client-1.8.2-py3-none-any.whl:
Publisher:
publish.yml on H47R15/steam
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pysteam_client-1.8.2-py3-none-any.whl -
Subject digest:
035d0f3e2bf4b34fa78931c378edcca861aeefe348ab5e51551be4949eeb6f42 - Sigstore transparency entry: 2232163562
- Sigstore integration time:
-
Permalink:
H47R15/steam@ae782b5dcb9e78b7833586c0ec0bea9025d4d08f -
Branch / Tag:
refs/tags/v1.8.2 - Owner: https://github.com/H47R15
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@ae782b5dcb9e78b7833586c0ec0bea9025d4d08f -
Trigger Event:
release
-
Statement type: