内容
# mcp-steam
用于Steam的MCP服务器,专注于游戏库管理、成就、统计数据和商店发现。设计了20种工具,与Claude和其他LLM代理一起使用。
## 前置条件
- Python 3.14+
- [uv](https://docs.astral.sh/uv/)
- Steam Web API 密钥
- 您的Steam ID(数字,最高17位)
## 安装配置
### 1. 获取Steam API密钥
1. 前往 [Steam Web API 密钥页面](https://steamcommunity.com/dev/apikey)
2. 使用您的Steam账户登录
3. 注册一个域名(任何名称都适用于个人使用)
4. 记录您的API密钥
### 2. 查找您的Steam ID
您的Steam ID是您个人资料URL中的数字标识符。如果您的个人资料URL为 `https://steamcommunity.com/profiles/1111111111111111`,则您的Steam ID为 `1111111111111111`。
如果您使用自定义URL(例如 `/id/username`),请使用 [Steam ID查找器](https://www.steamidfinder.com/) 来查找数字ID。
### 3. 安装
```bash
cd mcp-steam
uv sync
```
### 4. 配置环境变量
在运行服务器之前设置以下变量:
```bash
export STEAM_API_KEY="您的API密钥"
export STEAM_ID="您的Steam ID"
```
### 5. 测试连接
```bash
uv run mcp-steam
```
服务器通过获取您的玩家摘要信息来验证您的API密钥和Steam ID。
## Claude Desktop / Claude 代码配置
添加到您的MCP服务器配置中。如果从PyPI安装:
```json
{
"mcpServers": {
"steam": {
"command": "uvx",
"args": ["mcp-steam"],
"env": {
"STEAM_API_KEY": "您的API密钥",
"STEAM_ID": "您的Steam ID"
}
}
}
}
```
或从本地克隆运行:
```json
{
"mcpServers": {
"steam": {
"command": "uv",
"args": ["--directory", "/path/to/mcp-steam", "run", "mcp-steam"],
"env": {
"STEAM_API_KEY": "您的API密钥",
"STEAM_ID": "您的Steam ID"
}
}
}
}
```
## 工具
### 用户解析
| 工具 | 参数 | 描述 |
|------|-----------|-------------|
| `resolve_vanity_url` | `vanity_name` | 将自定义个人资料URL名称转换为64位Steam ID。 |
### 库
| 工具 | 参数 | 描述 |
|------|-----------|-------------|
| `get_owned_games` | `sort_by="playtime"`,`limit=50` | 您的游戏库,包含游戏时间。可按游戏时间、最近或名称排序。 |
| `get_recently_played` | `limit=10` | 最近2周内玩过的游戏。 |
### 游戏信息
| 工具 | 参数 | 描述 |
|------|-----------|-------------|
| `get_game_details` | `app_id` | 商店页面信息:描述、价格、类型、Metacritic评分、平台。 |
| `search_games` | `query`,`limit=10` | 搜索Steam商店。 |
| `get_current_players` | `app_id` | 游戏的实时在线玩家数量。 |
| `get_game_schema` | `app_id` | 游戏的成就和统计数据定义。 |
| `get_app_reviews` | `app_id`,`review_type="all"`,`limit=10` | 用户评论,包含推荐、游戏时间和有用度。 |
| `get_package_details` | `package_id` | 捆绑包/套餐定价、包含的应用和平台。 |
### 成就和统计数据
| 工具 | 参数 | 描述 |
|------|-----------|-------------|
| `get_achievements` | `app_id` | 您的成就进度,包含全球稀有度百分比。 |
| `get_player_stats` | `app_id` | 游戏特定统计数据(杀死、死亡等)。 |
| `get_global_achievement_stats` | `app_id` | 所有成就的全球解锁百分比。 |
### 心愿单
| 工具 | 参数 | 描述 |
|------|-----------|-------------|
| `get_wishlist` | `limit=50` | 按优先级排序的心愿单,包含价格和折扣。 |
### 新闻
| 工具 | 参数 | 描述 |
|------|-----------|-------------|
| `get_game_news` | `app_id`,`count=5` | 游戏的最新新闻和更新。 |
### 个人资料
| 工具 | 参数 | 描述 |
|------|-----------|-------------|
| `get_player_summary` | `steam_id=""` | 个人资料摘要。接受Steam ID或自定义名称;默认为您。 |
| `get_friend_list` | `steam_id=""` | 朋友列表。接受Steam ID或自定义名称;默认为您。 |
| `get_player_bans` | `steam_id=""` | VAC、社区、游戏和交易封禁状态。默认为您。 |
| `get_steam_level` | `steam_id=""` | 玩家的Steam等级。默认为您。 |
### 商店发现
| 工具 | 参数 | 描述 |
|------|-----------|-------------|
| `get_featured_games` | (无) | 当前特惠和促销游戏。 |
| `get_featured_categories` | (无) | 热销、新品、特惠、即将推出等。 |
## Steam Web API 说明
- **API密钥安全:** 您的配置文件包含Steam API密钥。永远不要将其提交到版本控制或公开分享。
- **速率限制:** Steam Web API有未公开的速率限制。如果您达到限制,服务器将返回速率限制错误。
- **个人资料可见性:** 一些工具要求您的Steam个人资料是公开的(成就、游戏统计数据)。库数据无论如何都有效。
- **游戏统计数据可用性:** 并非所有游戏都通过API公开统计数据。对于不支持的游戏,`get_player_stats` 将返回错误。
- **心愿单访问:** 心愿单数据要求您的个人资料的心愿单是公开的。
## 开发
```bash
uv run mcp-steam # 运行服务器
uv run ruff check src/ # 检查代码
uv run ruff format src/ # 格式化代码
uv run pyright src/ # 类型检查
```
### 预提交钩子
该项目使用 [lefthook](https://github.com/evilmartians/lefthook) 进行预提交检查。使用 `brew install lefthook`(或其他安装方法)安装,然后:
```bash
lefthook install
```