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.

概覽

AI 產生的概覽

讓助理在 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。
安裝前請注意
啟動工作階段會產生費用,且 sandbox 主機執行真實對局而非僅供測試。寫入與破壞性工具可啟動或停止工作階段、修改應用程式並建立權杖,應使用最小權限權杖,並考慮設定 GAMEYE_STOP_OWN_ONLY。切勿把權杖放進遊戲伺服器的環境變數或貼到對話中。此伺服器為 beta 版,工具與輸出可能變動。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Gameye,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

Gameye MCP Server

[Discord]

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 in gameye_context. It is published on npm as gameye-mcp, as a container image at ghcr.io/gameye/gameye-mcp, and in the MCP Registry as io.github.Gameye/gameye-mcp; see the changelog for what changed in each release.

Quick start

bash
GAMEYE_API_TOKEN=<your-token> npx -y gameye-mcp

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_skills and gameye_get_skill (the Gameye skills bundled with the server), gameye_get_template, and gameye_check_dockerfile. gameye_update_skills works 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. A dryRun call is refused the same way.
  • Every tool result shows · no token after the host, for example [sandbox · api.sandbox-gameye.gameye.net · no token], and gameye_context reports Token: not configured.
  • The instructions the server sends to a connecting agent name the tools that work and tell it to read the gameye skill 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.

GAMEYE_ENVHostWho it is for
sandbox (default)https://api.sandbox-gameye.gameye.netSelf-serve customers. This is your permanent home and runs live matches, not just tests.
productionhttps://api.production-gameye.gameye.netEnterprise customers.

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

VariableRequiredDefaultDescription
GAMEYE_API_TOKENNo—Gameye API token. Use the least-privileged scopes you need (see Token scopes). Without it the server starts in no-token mode: see Without a token.
GAMEYE_ENVNosandboxsandbox or production. Selects the API host.
GAMEYE_API_URLNo—Overrides the host, for testing only. Must be https. If it equals one of the two known hosts, it must match GAMEYE_ENV or the server refuses to start. Any other URL is labelled custom in every tool result.
GAMEYE_ENABLE_SKILLS_UPDATENo—Set to 1 to let gameye_update_skills run the skills updaters with apply: true. Without it the tool only checks and lists the commands.
GAMEYE_MAX_SESSIONSNo5Most sessions launched by this server that may run at once. A launch past it is refused.
GAMEYE_MAX_TTLNo4hLongest ttl a launch may ask for, at least 30m. A longer TTL, or 0, is refused.
GAMEYE_MAX_LAUNCHESNo20Launches per server run. Restart the server to reset it.
GAMEYE_STOP_OWN_ONLYNo—Set to 1 so gameye_stop_session only stops sessions this server launched.
GAMEYE_TIMEOUT_MSNo30000Per-request timeout in milliseconds, a positive whole number. Log snapshots get at least 60 s and artifact downloads at least 120 s. A request that runs out of time comes back as a tool error: Request to <host> timed out after <n>s.

Install

Claude Code

bash
claude mcp add gameye --env GAMEYE_API_TOKEN=<your-token> -- npx -y gameye-mcp

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:

json
{  "mcpServers": {    "gameye": {      "command": "npx",      "args": ["-y", "gameye-mcp"],      "env": {        "GAMEYE_API_TOKEN": "<your-token>",        "GAMEYE_ENV": "sandbox"      }    }  }}

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 npx directly, because it's a .cmd script. Start it through cmd /c instead:

    json
    "command": "cmd","args": ["/c", "npx", "-y", "gameye-mcp"]

    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 plain npx.

  • In PowerShell, type npx.cmd instead of npx when you run the server by hand. A new Windows install blocks the npx PowerShell 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_skills reports outdated skills on Windows but doesn't run the update. It prints the commands for you to run.

  • gameye_create_token writes 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:

json
{  "mcpServers": {    "gameye": {      "command": "docker",      "args": ["run", "-i", "--rm", "-e", "GAMEYE_API_TOKEN", "-e", "GAMEYE_ENV", "ghcr.io/gameye/gameye-mcp"],      "env": {        "GAMEYE_API_TOKEN": "<your-token>",        "GAMEYE_ENV": "sandbox"      }    }  }}

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 -i and 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 --rm deletes them:
    • gameye_get_artifacts saves 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/dir on the host.
    • gameye_create_token writes to the outputPath you give it. Mount a directory the same way and pass an outputPath under /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.

RecipeScopesWhat the agent can do
Observersession:read logs:read artifact:read regions:read region:read application:readInspect sessions, logs, artifacts, regions and applications. No changes.
OperatorObserver + session:start session:stop session:writeAlso launch and stop sessions and update session state.
DeployerOperator + application:writeAlso create and edit applications, so the agent can set up a deployment end to end.
Token adminDeployer + token:writeAlso create API tokens.

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.

ToolKindTokenDescription
gameye_contextreadnoneShow the environment, host and server version this server targets, and the guardrail defaults (session TTL, launched-by label, token expiry)
gameye_launch_sessionwrite, dryRunOperatorStart a containerized game server (billable). Default TTL and agent label applied; see Guardrails
gameye_list_sessionsreadObserverList running sessions (filterable; all=true for every status)
gameye_describe_sessionreadObserverGet session details, ports and players
gameye_stop_sessiondestructive, dryRunOperatorStop one session by its exact ID
gameye_player_joinwriteOperatorRegister one or more players as joined
gameye_player_leavewriteOperatorRemove one or more players from a session
gameye_get_locationsreadObserverList locations that can host an image right now
gameye_list_regionsreadObserverList the regions available to your organization
gameye_check_tagreadObserverCheck whether an image tag is available in a region
gameye_list_applicationsreadObserverList your applications with registry, resources, regions and ports
gameye_list_registry_tagsreadObserverList an application's tags in its upstream registry (paged)
gameye_enable_tagwrite, dryRunDeployerEnable an image tag for an application so Gameye preloads it
gameye_get_logsreadObserverFetch session logs
gameye_get_artifactsreadObserverDownload a file or directory from a session container as a tar archive
gameye_create_applicationwrite, dryRunDeployerCreate an application
gameye_edit_applicationdestructive, dryRunDeployerChange an application; omitted fields stay unchanged
gameye_create_tokenwrite, dryRunToken adminCreate an API token and write it to a file
gameye_update_skillsread, or write with applynoneCompare the installed Gameye skills with the latest pack, and update them with apply: true. See Keeping the skills current
gameye_list_skillsreadnoneList the Gameye skills bundled with this server, with each skill's version and files
gameye_get_skillreadnoneRead a bundled skill's SKILL.md or one of its reference files
gameye_get_templatereadnoneGet the Dockerfile or shutdown-hook template for an Unreal, Unity, Godot or web server, exactly as published in the bundled skill
gameye_check_dockerfilereadnoneCheck Dockerfile text against the gameye-containerize container contract, offline: findings with severity, rule, line and fix, plus what the check cannot know

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_tag and the application and token tools accept dryRun: 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 ttl gets a 30m TTL, and the result says the default was applied. Every launch sends the label launched-by: gameye-mcp, replacing any launched-by value the caller passes, so agent-launched sessions can be found with gameye_list_sessions and filter: { "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_session stops exactly one session by its exact ID. There is no bulk stop, and empty, wildcard or list IDs are refused. With GAMEYE_STOP_OWN_ONLY=1 it 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 most 4h (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 the launched-by: gameye-mcp sessions 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_context shows 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.json with source gameye/gameye-skills.
  • skills CLI, this project: the same, in skills-lock.json in the server's working directory.
  • Claude Code plugin: gameye@gameye in ~/.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:

  • outputPath must 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 0600 permissions and without following symlinks. The file is reserved before the token is minted, so a bad path never creates a token.
  • expires_after defaults to 24h. 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.

bash
npm cinpm testnpx tsc --noEmit -p tsconfig.test.jsonnpm run build

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.

Security

Please report vulnerabilities privately. See SECURITY.md.

License

MIT © Gameye B.V.

來源:README.md,提交 e7f3cbd

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

6
  1. v0.5.1最新Nov 7, 2026
  2. v0.4.0Oct 25, 2026
  3. v0.3.2Oct 23, 2026
  4. v0.3.1Oct 14, 2026
  5. v0.3.0Oct 13, 2026
  6. v0.1.3Oct 11, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分