该项目使用Node.js、TypeScript以及@modelcontextprotocol/sdk实现了一个Steam MCP(模型上下文协议)服务器。该服务器作为MCP客户端(如Roo)与Steam Web API之间的中介,提供对各种Steam游戏统计数据和用户信息的结构化访问。
它通过标准输入输出(stdio)与MCP客户端通信,使用@modelcontextprotocol/sdk中的StdioServerTransport。它监听tools/call请求,验证这些请求,使用Axios与Steam Web API交互,并返回格式化的结果或适当的错误消息。
@modelcontextprotocol/sdk前提条件:
克隆仓库(如果尚未完成):
git clone <repository-url> # 替换为你的仓库URL
cd steam-mcp
安装依赖项:
npm install
配置环境变量: 请参阅以下部分。
构建项目:
npm run build
这会将TypeScript代码编译到build目录中。
服务器需要设置以下环境变量:
STEAM_API_KEY(必需): 你的Steam Web API密钥。从Steam开发者网站获取一个。没有此密钥,服务器无法运行。该项目在项目根目录下使用.env文件加载API密钥。在steam-mcp目录下创建一个名为.env的文件,并添加以下行:
STEAM_API_KEY=YOUR_API_KEY_HERE
将YOUR_API_KEY_HERE替换为你实际的Steam Web API密钥。
在构建项目(npm run build)并配置.env文件后,你可以直接使用Node运行服务器:
node build/index.js
服务器将启动并监听标准输入输出上的MCP消息。
基于Steam Web API,此服务器提供了以下工具:
getCurrentPlayers:检索给定AppID的当前玩家数量。getAppList:检索Steam上所有公开应用的完整列表。getGameSchema:检索给定AppID的游戏架构(统计信息、成就)。getAppDetails:检索一个或多个AppID的商店页面详情。getGameNews:检索给定AppID的最新新闻条目。getPlayerAchievements:检索特定游戏中玩家的成就状态。getUserStatsForGame:检索特定游戏中用户的详细统计信息。getGlobalStatsForGame:检索特定游戏的聚合全球统计信息。getSupportedApiList:检索支持的Steam Web API接口和方法列表。getGlobalAchievementPercentages:检索游戏的全局成就完成百分比。要连接本地MCP客户端,如Roo VS Code扩展,你需要配置客户端的mcp.json文件。此文件通常位于项目或用户设置中的.roo目录内。
配置告诉客户端如何使用标准输入输出启动并与服务器通信。
npm run build。mcp.json文件: 这可能位于工作区的.roo/mcp.json或全局配置位置。mcp.json的servers数组中添加一个条目。示例mcp.json条目:
{
"servers": [
// ... 其他服务器配置 ...
{
"name": "steam-local-stdio", // 选择一个描述性名称
"type": "stdio",
"enabled": true,
"command": "node", // 要执行的命令
"args": [
// 编译索引.js文件的绝对路径
"C:\\Users\\<username>\\AppData\\Roaming\\Roo-Code\\MCP\\steam-mcp\\build\\index.js"
// 如果你的项目位置不同,请调整路径
],
"cwd": "C:\\Users\\<username>\\AppData\\Roaming\\Roo-Code\\MCP\\steam-mcp" // 工作目录(项目根目录)
}
]
}
name:此服务器连接的唯一标识符(例如steam)。type:必须是stdio。enabled:设置为true以激活连接。command:运行Node.js运行时的命令(node)。args:包含编译服务器脚本(build/index.js)绝对路径的数组。重要:确保此路径对你系统正确。在Windows的JSON字符串中使用双反斜杠(\\)。cwd:服务器应从中运行的项目的根目录的绝对路径。重要:确保此路径对你系统正确。一旦配置并启用,你的MCP客户端应该能够通过stdio启动并与此服务器通信。