
Gameye
io.github.Gameye由 GitHub 账号 Gameye 发布v0.5.1更新于 Nov 7, 2026
Launch, inspect and stop multiplayer game server sessions on Gameye from any MCP client.
概览
让助手在 Gameye 上启动、查看和停止容器化的多人游戏服务器会话,并查询区域、镜像标签、日志和产物。
- 可以做什么
- 启动、列出、查看详情和停止游戏服务器会话,支持 dry-run 预览
- 为会话登记或移除玩家
- 列出可用位置、区域、应用和仓库标签,并启用镜像标签
- 获取会话日志,并把会话容器中的文件或目录下载为 tar 包
- 创建和编辑应用,并生成写入文件的 API 令牌
- 读取内置的 Gameye 技能、获取 Dockerfile 或关服钩子模板,并离线检查 Dockerfile 文本
- 适用场景
- 适合在 Gameye 上托管多人游戏服务器、希望让助手在编辑器内启动对局服务器、查看端口与玩家、拉取日志或搭建部署的场景。没有账号时也可用于阅读内置技能和检查 Dockerfile。
- 运行要求
- npm 包需要 Node.js 22 或更高版本,或使用已发布的容器镜像(Docker);以 stdio 在本地运行。GAMEYE_API_TOKEN 中的 Gameye API 令牌可选,但账号类工具需要它。GAMEYE_ENV 选择 sandbox(默认)或 production。需要访问 Gameye API 的网络;调用 gameye_update_skills 时会访问 GitHub。
安装
在 SourceWeft 中
- 打开 控制台中的 Gameye,将其添加到工作区。
- 为需要使用其工具的对话启用该服务。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
其他 MCP 客户端
参照 仓库 中的启动说明。
README
Gameye MCP Server
A Model Context Protocol server for the Gameye game server orchestration API. It lets an AI agent (Claude Code, Claude Desktop, Cursor, or any MCP client) launch and inspect game server sessions, check image tags and regions, and fetch logs and artifacts. You talk to it in plain language, and you don't have to leave your editor.
Status: beta (
0.x). Tools, inputs and outputs may change between releases, and there may be bugs. The server says so to every client that connects, on startup, and ingameye_context. It is published on npm asgameye-mcp, as a container image atghcr.io/gameye/gameye-mcp, and in the MCP Registry asio.github.Gameye/gameye-mcp; see the changelog for what changed in each release.
Quick start
No Gameye account yet? Start it without a token, npx -y gameye-mcp, and your agent can still read the bundled Gameye skills and check a Dockerfile. See Without a token.
It needs Node.js 22 or newer. The server speaks MCP over stdio. Normally your MCP client starts it for you (see Install), so you rarely need to run it by hand.
Without a token
You can connect the server before you have a Gameye account. Leave GAMEYE_API_TOKEN out of any install below, and the server starts in no-token mode and prints one line on stderr saying so.
- These tools work, and send nothing to the Gameye API:
gameye_context,gameye_list_skillsandgameye_get_skill(the Gameye skills bundled with the server),gameye_get_template, andgameye_check_dockerfile.gameye_update_skillsworks too, and reaches GitHub only when called. - Every other tool is an account tool. Without a token it sends nothing and returns an error that starts with
Token required:, then gives the setup steps and the narrowest token scopes for that tool. AdryRuncall is refused the same way. - Every tool result shows
· no tokenafter the host, for example[sandbox · api.sandbox-gameye.gameye.net · no token], andgameye_contextreportsToken: not configured. - The instructions the server sends to a connecting agent name the tools that work and tell it to read the
gameyeskill first, then the skill for the game's engine.
To get a token, sign up at trial.gameye.com, then in the Gameye Admin Panel open Users → API tokens and create one. Self-serve accounts use the sandbox host, which is the server's default.
Set the token where the server is configured: the env block of your MCP client's server entry, or --env when you add it with claude mcp add. The server reads GAMEYE_API_TOKEN once when it starts, so restart or reconnect it after you set or change the token. Never paste the token into the chat with your agent.
Environments
Gameye has two public API hosts. The server targets sandbox by default.
The environment is a property of the server process. No tool takes an environment argument, so an agent can't switch to production partway through a conversation. If you need both, configure two named server entries (for example gameye-sandbox and gameye-production), each with its own token.
Environment variables
Install
Claude Code
For production, add --env GAMEYE_ENV=production and use a production token.
Other MCP clients
Most clients (Claude Desktop, Cursor, Windsurf and others) accept an mcpServers block:
Restart the client after you change its configuration.
npx -y gameye-mcp runs the latest release. To stay on one version, name it: npx -y [email protected] (or "args": ["-y", "[email protected]"]).
Windows
The server runs on Windows with Node.js 22 or newer. We've tested it on Windows 11, through Claude Code and over plain stdio. If something breaks on Windows, please open an issue.
-
Many Windows MCP clients can't start
npxdirectly, because it's a.cmdscript. Start it throughcmd /cinstead:With Claude Code:
claude mcp add gameye --env GAMEYE_API_TOKEN=<your-token> -- cmd /c npx -y gameye-mcp. Claude Code 2.1.296 and later also start plainnpx. -
In PowerShell, type
npx.cmdinstead ofnpxwhen you run the server by hand. A new Windows install blocks thenpxPowerShell script with "running scripts is disabled on this system". -
The first start downloads the package and can take 10 to 40 seconds. Later starts take about a second.
-
gameye_update_skillsreports outdated skills on Windows but doesn't run the update. It prints the commands for you to run. -
gameye_create_tokenwrites the token file with owner-only permissions on macOS and Linux. On Windows those permissions don't apply, and the file gets the access rules of its folder. Write it inside your user profile.
Docker
No Node.js on the machine? Run the published image instead. It works on amd64 and arm64:
With Claude Code: claude mcp add gameye --env GAMEYE_API_TOKEN=<your-token> -- docker run -i --rm -e GAMEYE_API_TOKEN ghcr.io/gameye/gameye-mcp.
- Pass each variable with
-e NAME(no value), so Docker copies it from the client's environment and the token never appears in the command line. - Keep
-iand never add-t: a terminal mangles the JSON-RPC messages on stdout. - To stay on one version, use a version tag such as
ghcr.io/gameye/gameye-mcp:0.4.0. - Files the server writes stay inside the container, and
--rmdeletes them:gameye_get_artifactssaves its download under the temp directory. To keep it, mount a directory and point the temp directory at it:-v /absolute/dir:/out -e TMPDIR=/out. The path the tool reports is the container path; the file is in/absolute/diron the host.gameye_create_tokenwrites to theoutputPathyou give it. Mount a directory the same way and pass anoutputPathunder/out.- The server runs as uid 1000, so on Linux the mounted directory must be writable by that user.
Token scopes
Give the server a token with only the scopes it needs.
Never pass your Gameye API token into a game server's environment. A game server doesn't need it, and anything inside the container can read it.
Available tools
Every tool result starts with the environment and host it used, for example [sandbox · api.sandbox-gameye.gameye.net]. With no token configured it ends with · no token: [sandbox · api.sandbox-gameye.gameye.net · no token].
The Token column names the narrowest token scope recipe each tool needs. Tools marked none work without a token.
Every tool carries MCP annotations: read tools set readOnlyHint, gameye_stop_session and gameye_edit_application set destructiveHint, and every tool that calls the Gameye API sets openWorldHint.
The tool set covers every operation in the Gameye client API. tests/parity.test.ts checks this against the vendored spec in spec/.
Guardrails
These behave the same on sandbox and production, because sandbox runs live matches for self-serve customers.
- Dry run.
gameye_launch_session,gameye_stop_session,gameye_enable_tagand the application and token tools acceptdryRun: true. The tool returns the exact request (method, host, path and body) with the API token masked, and sends nothing. - Bounded sessions. A launch without
ttlgets a30mTTL, and the result says the default was applied. Every launch sends the labellaunched-by: gameye-mcp, replacing anylaunched-byvalue the caller passes, so agent-launched sessions can be found withgameye_list_sessionsandfilter: { "launched-by": "gameye-mcp" }. When a warm pool serves the image and region, the Gameye API ignores request labels (and env and args), so warm-pool sessions do not carry this label. - No token in game servers. A launch is refused, with nothing sent, if any env value or name, arg, or label key or value contains this server's Gameye API token. Env values are never shown in results.
- No token in results. Every tool result, including errors, has this server's API token replaced with
***, in case log output, labels or an error message echo it. - Explicit stops.
gameye_stop_sessionstops exactly one session by its exact ID. There is no bulk stop, and empty, wildcard or list IDs are refused. WithGAMEYE_STOP_OWN_ONLY=1it also refuses any session this server did not launch. - Session limits. The Gameye API has no per-token budget, so the server enforces one before it sends a launch. By default an agent can have at most 5 sessions it launched running at once (
GAMEYE_MAX_SESSIONS), each with a TTL of at most4h(GAMEYE_MAX_TTL), and at most 20 launches per server run (GAMEYE_MAX_LAUNCHES). That caps one run at 20 sessions of 4 hours, 80 session-hours, and 5 at a time. Before each launch the server lists thelaunched-by: gameye-mcpsessions to see which of its own have ended; if that list fails, the launch is refused. Warm-pool sessions carry no label, so they count until their TTL ends. A launch that timed out or got a 5xx may have started, so it counts too. The limits apply to one server process: sessions launched by other agents or tools in your organization don't count, and a restart starts from zero, so set an organization quota in Gameye as well.gameye_contextshows the limits in force.
Keeping the skills current
The Gameye skills change as the Gameye API does. gameye_update_skills reads the latest pack version from the gameye skill on GitHub (Pack version: in skills/gameye/SKILL.md on main) and compares it with what is installed:
- skills CLI, user-wide: skills recorded in
~/.agents/.skill-lock.jsonwith sourcegameye/gameye-skills. - skills CLI, this project: the same, in
skills-lock.jsonin the server's working directory. - Claude Code plugin:
gameye@gameyein~/.claude/plugins/installed_plugins.json.
Without apply it only reports. With apply: true, and only when the server was started with GAMEYE_ENABLE_SKILLS_UPDATE=1, it runs each outdated install's own updater: npx -y [email protected] update <the Gameye skills> -g -y (or -p -y), or claude plugin marketplace update gameye then claude plugin update gameye@gameye. Otherwise it lists those commands for you to run. The updaters get a minimal environment: paths, home, temp, locale, proxy and CA settings and npm and Claude config, never GAMEYE_* variables or anything named like a token, secret, password or key. It only updates skills whose lock-file source is gameye/gameye-skills, and it ships a pinned copy of the skills reviewed at build time: the skill and template tools never fetch skill text at runtime, and only gameye_update_skills reaches GitHub, when called. Each command runs with stdin closed and a 90-second limit. On Windows it prints the commands instead of running them. The running agent session keeps the skills it loaded; the next session uses the update. The gameye skill tells agents to run the check once per conversation and ask before applying.
Telemetry/attribution
Every request to the Gameye API sends User-Agent: gameye-mcp/<version>, plus the MCP client's name once it has connected, e.g. gameye-mcp/0.1.0 (claude-code), so Gameye can count MCP usage. Only this server's version and the client name are sent, nothing else: no token, env values, paths or other data. There is no other telemetry.
Application and token tools
gameye_create_application, gameye_edit_application and gameye_create_token are always registered. What the agent can actually do is set by the token's scopes: they need application:write or token:write, and a token without them gets a 403 naming the missing scope. To keep an agent from changing applications or minting tokens, give it a token without those scopes.
gameye_create_token never returns the new token. It writes the token to the file you name in outputPath and returns only the path, the scopes and the expiry:
outputPathmust be an absolute path outside any git working tree, so the token can't be committed by accident.- An existing file is refused unless you pass
overwrite: true. A symlink is always refused. - The file is created exclusively with
0600permissions and without following symlinks. The file is reserved before the token is minted, so a bad path never creates a token. expires_afterdefaults to24h. Requested scopes must be a subset of the server token's own scopes.- If the file can't be written after the token was minted (for example, the disk is full), no partial file is left behind and the tool returns an error naming the token, saying it was created but the secret is lost, so you can revoke it.
gameye_edit_application sends only the fields you give. regions and ports, when given, replace the whole list.
TLS ports
A port with tls: true has TLS terminated by Gameye on the host. Set it with gameye_create_application: gameye_edit_application doesn't apply tls, and any ports sent through edit are stored with tls=false, so omit ports when editing an application that uses TLS.
Agent skills
To teach your agent how to integrate Gameye (session lifecycle, matchmaking, webhooks and more), install the sister project gameye-skills. The skills use these MCP tools when they are available, and fall back to plain HTTP when they aren't.
The server also bundles a pinned copy of the skills, which an agent reads with gameye_list_skills and gameye_get_skill, with or without a token. If an installed copy is newer, it wins.
Development
See CONTRIBUTING.md.
spec/client.yaml is a snapshot of the public sandbox /openapi.yaml, and spec/overrides.yaml holds the MCP tool name for each operation: the tools: map from gameye-skills' spec/overrides.yaml, reduced by scripts/reduce-overrides.mjs (gameye-skills keeps the full file, which records where the server differs from the spec). Refresh both with npm run sync-spec [path-or-url-to-overrides.yaml]. npm run check-spec exits 1 when either snapshot has drifted.
About Gameye
Gameye is a managed hosting platform for multiplayer game servers. You bring a container image, and Gameye starts a dedicated server for each match through one API.
- Session API docs: gameye.com/docs/api-v2
- Gameye docs: gameye.com/docs
- Try it free: trial.gameye.com
Security
Please report vulnerabilities privately. See SECURITY.md.
License
MIT © Gameye B.V.
来源:README.md,提交 e7f3cbd
工具
0版本历史
6- v0.5.1最新Nov 7, 2026
- v0.4.0Oct 25, 2026
- v0.3.2Oct 23, 2026
- v0.3.1Oct 14, 2026
- v0.3.0Oct 13, 2026
- v0.1.3Oct 11, 2026
评分
已满足适用检查项的 50%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
- 近 30 天内可连通25 分
请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。
- 已声明认证方式10 分
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
- 已列出工具15 分
请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。
- 描述必需15 分
- 图标10 分
- 文档15 分
- 许可证10 分