游戏发现管理服务

一款用于发现和管理Windows PC上安装的游戏的多平台服务,支持Steam、Epic Games、GOG等平台。

  • by moonolgerd
  • C#
  • 本地部署
  • 更新于
在 GitHub 查看 moonolgerd/game-mcp

使用说明

游戏发现MCP服务器

一种模型上下文协议(MCP)服务器,用于发现和管理Windows PC上来自各种平台的已安装游戏,包括Steam、Epic games、GOG、Windows Store/Xbox和其他已安装程序。

特性

  • 多平台游戏发现:自动扫描来自以下来源的游戏:

    • Steam(包括自定义库位置)
    • Epic游戏商店
    • GOG(老游戏)
    • Xbox/Windows应用商店游戏
    • EA游戏
    • Ubisoft Connect游戏
    • Rockstar游戏
    • 战斗。网络游戏
    • 其他已安装程序(通过Windows注册表)
  • 全面的游戏信息:提供详细信息,包括:

    • 游戏名称和平台
    • 安装路径和可执行文件位置
    • 安装日期和尺寸
    • 平台特定元数据
  • MCP工具可用:

    • discover_games:查找所有平台上安装的所有游戏
    • get_game_info:获取特定游戏的详细信息
    • launch_game:按名称启动游戏(如果找到可执行文件)

先决条件

  • .NET 10.0或更高版本
  • Windows操作系统

使用VS代码

{
  "servers": {
    "GameMcpServer": {
      "type": "stdio",
      "command": "dnx",
      "args": [
        "GameMcpServer@1.0.8",
        "--yes"
      ]
    }
  }
}

可用工具

discover_games

从所有支持的平台上发现所有已安装的游戏。

Claude中的示例用法: “你能发现我在电脑上安装的所有游戏吗?”

退货: JSON对象:

  • 游戏总数
  • 按平台分组的游戏
  • 包含元数据的所有游戏的详细列表

get_game_info

按名称获取特定游戏的详细信息。

参数:

  • gameName:要搜索的游戏名称

示例用法: “获取有关赛博朋克2077的信息”

launch_game

如果游戏具有有效的可执行路径,则按名称启动游戏。

参数:

  • gameName:要发布的游戏的确切名称

示例用法: 《Steam的半条命2》

运作原理

服务器使用多种发现方法:

  1. Steam游戏:

    • 从注册表读取Steam安装路径
    • 作语法分析 libraryfolders.vdf 用于自定义库位置
    • 扫描 steamapps/common 游戏文件夹目录
  2. 史诗游戏:

    • 从以下位置读取游戏清单 %ProgramData%/Epic/EpicGamesLauncher/Data/Manifests
    • 解析JSON清单文件以获取游戏信息
  3. GOG游戏:

    • 查询Windows注册表 SOFTWARE\GOG.com\Games
    • 提取游戏路径和可执行信息
  4. Xbox/Windows应用商店:

    • 扫描 %ProgramFiles%/WindowsApps 目录
    • 解析AppxManifest.xml文件以获取应用程序信息
    • 游戏应用程序过滤器
  5. 注册表程序:

    • 扫描Windows卸载注册表项
    • 使用启发式方法识别类似游戏的应用程序
    • 过滤掉系统实用程序和非游戏软件

错误处理

该服务器设计坚固,即使在以下情况下也能继续运行:

  • 某些平台尚未安装
  • 注册表项不可访问
  • 目录有权限限制
  • 单个游戏的元数据已损坏

错误会记录到stderr中,不会中断其他平台的发现过程。

安全注意事项

  • 服务器只读取系统信息,不修改任何内容
  • 游戏启动需要通过MCP客户端进行明确的用户确认
  • 除启动可执行文件外,所有文件系统访问都是只读的
  • 注册表访问是只读的

发展

本项目使用:

  • .NET 10.0
  • 的模型上下文协议SDK。网
  • 微软。扩展。应用程序生命周期托管