SteamStats MCP服务器
警告
当前实施无法运行!
概述
该项目使用Python和FastAPI实现了SteamStats MCP(模型上下文协议)服务器。服务器充当MCP客户端(如Roo)和Steam Web API之间的中介,提供对各种Steam游戏统计数据和用户信息的结构化访问。
它暴露了一个 /message 接受JSON-RPC样式的端点 tools/call 请求,验证它们,与Steam Web API交互,并返回格式化的结果或适当的错误消息。
技术栈
- 语言: Python 3.11+
- 框架: 快速 API
- 数据验证: 派丹蒂克
- Web服务器: 乌维科恩
- HTTP客户端: 请求:
- 包管理: 紫外线的
请求流
下图说明了典型的请求流:
sequenceDiagram
participant Client as MCP Client
participant Server as SteamStats MCP Server
participant SteamAPI as Steam Web API
Client->>Server: POST /message (tools/call, command, args)
Server->>Server: Validate MCP message format
alt Invalid Format
Server-->>Client: Error Response (e.g., Invalid Request)
else Valid Format
Server->>Server: Parse command & arguments
Server->>Server: Validate arguments using Pydantic
alt Invalid Arguments
Server-->>Client: Error Response (Validation Error)
else Valid Arguments
Server->>SteamAPI: Make API Request(s) (e.g., GET /ISteamUserStats/...)
SteamAPI-->>Server: API Response (JSON data or error)
alt Steam API Error
Server->>Server: Log API Error
Server-->>Client: Error Response (API Error)
else Successful API Response
Server->>Server: Process API data
Server-->>Client: Success Response (result data)
end
end
end设置和安装
- 先决条件:
- Python 3.11或更高版本。 - 紫外线的 已安装包管理器(pip install uv).
- 克隆存储库(如果您还没有):
git clone
cd steamstats_mcp- 创建虚拟环境(推荐):
# Using uv
uv venv
source .venv/bin/activate # On Linux/macOS
# .venv\Scripts\activate # On Windows
# Or using standard venv
# python -m venv .venv
# source .venv/bin/activate # On Linux/macOS
# .venv\Scripts\activate # On Windows- 安装依赖项:
uv pip install -r requirements.txt # Assuming a requirements.txt exists or will be generated from pyproject.toml
# Or directly from pyproject.toml if using uv for management
# uv sync*(注意:您可能需要生成 requirements.txt 从 pyproject.toml 使用 uv pip freeze > requirements.txt 如果直接 uv sync 未使用)*
- 配置环境变量: 请参阅以下部分。
配置(环境变量)
服务器要求设置以下环境变量:
STEAM_API_KEY(必填): 您的Steam Web API密钥。从以下位置获取一个 Steam开发者网站。没有此密钥,服务器将无法运行。LOG_LEVEL(可选): 设置日志记录级别。选项包括DEBUG,INFO,WARNING,ERROR,CRITICAL.默认为INFO.HOST(可选): 服务器要绑定到的主机地址。默认为0.0.0.0(监听所有可用的网络接口)。PORT(可选): 服务器监听的端口。默认为8000.
您可以在shell环境中使用 .env 文件(需要 python-dotenv 包和代码修改以加载它),或通过部署系统的配置。
示例(Linux/macOS):
export STEAM_API_KEY="YOUR_API_KEY_HERE"
export LOG_LEVEL="DEBUG"
export PORT="8080"示例(Windows CMD):
set STEAM_API_KEY=YOUR_API_KEY_HERE
set LOG_LEVEL=DEBUG
set PORT=8080示例(Windows PowerShell):
$env:STEAM_API_KEY = "YOUR_API_KEY_HERE"
$env:LOG_LEVEL = "DEBUG"
$env:PORT = "8080"运行服务器
安装依赖项并配置环境变量后,使用Uvicorn运行服务器:
uvicorn main:app --host $HOST --port $PORT --reload- 替换
main:app如果您的FastAPI应用程序实例的名称不同或位于不同的文件中。 - 这
--reload标志允许在开发过程中自动重新加载(删除以用于生产)。 - Uvicorn将使用
HOST和PORT环境变量(如果已设置)或其默认值(0.0.0.0和8000).
服务器现在应该正在运行并监听MCP请求 http://: /message.
可用的MCP命令
参见 STEAMSTATS_MCP_SPECIFICATION.md 有关可用命令、其参数和预期结果的详细信息。目前实施的命令包括:
getCurrentPlayersgetAppDetailsgetGameSchemagetGameNewsgetPlayerAchievementsgetUserStatsForGamegetGlobalStatsForGamegetSupportedApiListgetAppListgetGlobalAchievementPercentages
连接本地MCP客户端(例如Roo)
要将本地MCP客户端(如Roo VS Code扩展)连接到此正在运行的服务器,您需要配置客户端的 mcp.json 文件。此文件通常位于 .roo 项目或用户设置中的目录。
配置告诉客户端如何与服务器通信。由于这是一个基于HTTP的服务器(FastAPI/Uvicorn),您将使用 sse (服务器发送事件)类型。
- 确保SteamStats MCP服务器正在运行: 按照上面的“运行服务器”说明进行操作。默认情况下,它运行在
http://localhost:8000. - 查找或创建您的
mcp.json文件: 这可能是在.roo/mcp.json在您的工作区或全局配置位置。 - 添加服务器配置: 向添加条目
servers数组inmcp.json.
示例 mcp.json 条目:
{
"servers": [
// ... other server configurations ...
{
"name": "steamstats-local", // Choose a descriptive name
"type": "sse",
"enabled": true,
"url": "http://localhost:8000/message", // Adjust host/port if you changed defaults
"readTimeoutSeconds": 60,
"writeTimeoutSeconds": 60
}
]
}name:此服务器连接的唯一标识符。type:必须是sse对于基于HTTP的服务器。enabled:设置为true以激活连接。url:指向的完整URL/message正在运行的服务器的端点。确保主机和端口与您运行服务器的方式相匹配(例如,如果您使用export PORT=8081,相应地更改URL)。readTimeoutSeconds/writeTimeoutSeconds:可选超时。
一旦配置好并且服务器正在运行,您的MCP客户端应该能够连接并使用此SteamStats服务器提供的工具。

