Skip to main content
Glama
edgegap

Edgegap MCP Server

Official
by edgegap

edgegap-mcp

An MCP server that lets a coding agent take a developer from "I have a game server container" to "players are connected to it" without the developer reading the API reference.

Ten tools, hand-picked. Not generated from the OpenAPI spec — see Scope for why.

Install

One line in your MCP client config. Nothing to clone, nothing to build.

{
  "mcpServers": {
    "edgegap": {
      "command": "npx",
      "args": ["-y", "@edgegap/mcp"]
    }
  }
}

Works in Claude Code, Cursor, Codex, and VS Code. Pin a version in production (@edgegap/mcp@0.1.0) rather than floating on latest.

Node version: the server itself needs Node 18+. Deploying the optional Cloudflare Worker needs Node 22+, because wrangler requires it.

Related MCP server: antics-mcp

Your token never leaves your machine

There is no Edgegap-hosted component. This server runs as a process on your own computer, spawned by your editor. The first tool call asks you for a token, shows what it authorises, and requires an explicit acknowledgement before accepting it. Where that token then lives, exhaustively:

  • one variable in that process's memory, for the life of your editor session

That is the whole list. Not on disk. Not in a config file. Not in logs. Not on any Edgegap server — the only thing sent to Edgegap is the API call itself, exactly as if you had run curl. Closing your editor revokes this server's access completely.

Generate a token at https://app.edgegap.com/user-settings?tab=tokens.

Setting EDGEGAP_API_TOKEN still works and takes precedence, for CI and for clients that cannot show prompts. Do not pass a token as a command-line argument — arguments are visible to other processes via ps, and the server warns if it detects one.

Why this is not hosted. A hosted server would have to either store your token or receive it on every request. "We don't store it" and "we never see it" are different claims, and only a local process makes the second one. See worker/DECISION.md for the full reasoning and the conditions under which a hosted version becomes worth building.

Read this before connecting an agent

The Edgegap API token cannot be scoped. One token authorises every application, every version, every running deployment, and your usage across the whole organization. There is no deploy-only token and no per-application token.

Consequences worth being deliberate about:

  • An agent holding this token can stop production deployments, not just the test ones it created.

  • Prompt injection reaching the agent — from a repo file, an issue, a fetched page — reaches the token too.

  • Anything the agent logs, echoes, or sends to a model provider is a place the token could end up. This server does not log it, but it cannot control what the rest of the agent does.

Recommended setup, in decreasing order of caution:

Situation

Setup

Unattended or autonomous agent

Separate non-production organization, plus EDGEGAP_READ_ONLY=1

Supervised agent, live game in the org

EDGEGAP_APP_ALLOWLIST scoped to the app being worked on, plus EDGEGAP_MAX_DURATION_MINUTES

Solo developer, no production workload

Defaults are fine; revoke the token when finished

The allowlist and read-only flag are enforced in this server, which means they protect against an agent that makes a mistake, not against one that has been compromised into calling the API directly. They narrow the blast radius; they do not remove it.

Environment variables

Variable

Default

Purpose

EDGEGAP_API_TOKEN

(prompted)

API token. Optional — omit it and the developer is asked at first use. The token prefix is added for you.

EDGEGAP_READ_ONLY

0

Set to 1 and the five mutating tools are never registered. The agent cannot see them, so it cannot be talked into calling them.

EDGEGAP_APP_ALLOWLIST

(empty)

Comma-separated application names. When set, every tool refuses to touch anything else.

EDGEGAP_MAX_DURATION_MINUTES

60

Ceiling on max_duration the agent may set on a version. Caps runaway cost from an unattended agent.

EDGEGAP_TIMEOUT_MS

30000

Per-request HTTP timeout.

The ten tools

Ordered along the golden path.

#

Tool

Mutating

What it's for

1

edgegap_list_apps

Orient before doing anything. Prevents duplicate applications.

2

edgegap_create_app

Create the container for versions.

3

edgegap_list_app_versions

Find a deployable version, or copy settings from a working one.

4

edgegap_create_app_version

Register a container image with CPU, memory, and ports.

5

edgegap_deploy

Start one instance near specified players.

6

edgegap_get_deployment

Single status read.

7

edgegap_wait_for_deployment

Poll to ready with backoff, then return the connection address.

8

edgegap_list_deployments

Find orphaned servers from earlier sessions.

9

edgegap_stop_deployment

Graceful SIGTERM, one deployment at a time.

10

edgegap_get_deployment_logs

Container output and crash exit code after a failure.

Design decisions

Curated, not generated. The Edgegap API has roughly sixty operations. Auto-generating one tool per operation puts all sixty descriptions into the agent's context on every turn and measurably degrades tool selection. These ten cover the path that converts a new developer.

wait_for_deployment is a tool, not a loop. Left to itself an agent will call a status endpoint in a tight loop, burn turns, and give up early. Folding the polling and backoff into one call removes the most common failure in agent-driven deploys.

Errors are written for self-correction. A 424 comes back saying the image could not be pulled and which fields to check. A 422 says to try different coordinates or lower the resource request. The agent can act on these without a round trip to the human.

Local validation before the wire. The memory-to-CPU ratio and the missing player location are caught here rather than surfacing as an opaque 400.

Bulk operations are deliberately absent. stop takes one request_id. There is no bulk-stop tool, because an agent with a filter expression and a bug can stop a production fleet.

Scope

Not exposed, on purpose: matchmaking, relays, private fleets, smart fleets, endpoint storage, ACL/whitelist entries, deployment tags, metrics, container registry management, DNS configuration.

These are real capabilities, but they belong to studios already operating on the platform, not to a developer deploying their first server. Adding them would trade the conversion path for surface area.

Known limitation: asking for the token at all

The MCP specification says servers should not use elicitation to collect sensitive data, and an API token is sensitive. This server does it anyway, because requiring a token in a config file before anything works is the largest drop in the onboarding funnel, and the whole point of the server is to remove setup friction.

That is a deliberate trade rather than a pattern to copy. What makes it defensible is the set of mitigations in src/auth.ts — memory-only storage, plain-language disclosure, required acknowledgement, redaction from all output, and the environment variable always winning when present. Removing any of them breaks the trade.

The real fix is on Edgegap's side: scoped, revocable, deploy-only credentials, issued through OAuth rather than pasted as a secret. Until those exist, the interactive prompt is a workaround and is labelled as one in the code.

Development

npm run typecheck
node smoke.mjs      # handshake, tool registration, read-only mode
node guards.mjs     # local validation and allowlist enforcement
node elicit.mjs     # token prompt: accept, refuse acknowledgement, decline, no support

None of these make network calls. elicit.mjs asserts that the prompt states the org-wide scope, that the acknowledgement is required, that the token never appears in tool output, and that declining produces a stop-and-report message rather than a retry loop.

Available Tools

10 tools
edgegap_create_appCreate an Edgegap applicationAInspect

Create a new application to hold game server versions. Only call this after edgegap_list_apps confirms no suitable application exists. Creating an application does not deploy anything — follow with edgegap_create_app_version.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesApplication name, 3-64 chars. Usually the game or project name.
is_activeNoWhether deployments are allowed. Default true.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=false and idempotentHint=false; the description adds that creating an application does not deploy anything, which is crucial behavioral context. It also implies a non-destructive nature but avoids repeating annotation-mandated details. This goes beyond annotations by clarifying the tool's limited scope.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is only two sentences long, with the essential action front-loaded and the critical usage condition immediately following. Every word adds value, and the structure is efficient without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that the tool has a simple schema with two simple parameters, full schema coverage, and no output schema, the description provides sufficient information for correct invocation. It lacks details on default behavior for is_active, but the schema covers that. The main gap is not specifying what the response looks like, but since there's no output schema, it's not mandatory. Overall, it's complete enough for its complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so both parameters are fully described in the schema. The description does not add extra parameter-level detail beyond what the schema provides, aligning with the baseline of 3. It doesn't repeat parameter names, but it also doesn't offer additional context like naming conventions beyond the schema's note.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool creates a new application to hold game server versions, distinguishing it from related operations like creating an app version. However, it doesn't explicitly mention that it's creating the top-level container versus other resource types, but the verb 'create' and resource 'application' are specific enough. It could more strongly differentiate from edgegap_create_app_version, but the follow-up note implicitly does so.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly instructs to call this only after confirming no suitable application exists via edgegap_list_apps, and it tells the user to follow with edgegap_create_app_version. This provides clear when-to-use and sequential guidance, surpassing typical usage notes.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

edgegap_create_app_versionCreate an application versionAInspect

Register a container image as a deployable version of an application. The image must already be pushed to a registry that Edgegap can pull from. Resource units: 1024 cpu units = 1 vCPU; memory_mb must be at least 256 and at most double the cpu units. Set verify_image true on the first version so a bad image fails here rather than at deploy time. Avoid the "latest" docker tag — use a build ID so deployments are reproducible.

ParametersJSON Schema
NameRequiredDescriptionDefault
envNoEnvironment variables injected into the container.
nameYesVersion identifier, typically a build ID or timestamp.
portsYesPorts to expose. At least one is required for players to connect.
cpu_unitsYesvCPU units. 1024 = 1 vCPU.
memory_mbYesMemory in MB. At most 2x cpu_units.
docker_tagYesImage tag. Use a build ID, not "latest".
applicationYesExisting application name.
docker_imageYesNamespaced image, e.g. "mystudio/game-server".
verify_imageNoVerify Edgegap can pull the image before accepting the version.
registry_tokenNoRegistry password or token.
docker_repositoryYesRegistry host, e.g. "docker.io" or "registry.edgegap.com".
registry_usernameNoRegistry username, for private images.
max_duration_minutesNoAuto-stop after this many minutes. Keeps test deployments from running up cost.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, the description adds valuable behavioral context: verify_image makes a bad image fail at registration rather than deployment, and resource units/memory constraints define server sizing. It does not contradict the openWorldHint/idempotentHint/destructiveHint annotations, and while it does not discuss auth or rollback, the annotations already cover the safety profile.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four tight sentences with no filler; the core purpose is front-loaded in the first sentence, followed by constraints and recommendations. Every sentence adds either a precondition, a conversion rule, or a best practice, so the description is appropriately sized.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 13-parameter tool with no output schema, the description covers the non-obvious prerequisites, resource constraints, verification behavior, and tag strategy, while the schema handles parameter details. It does not describe response shape or failure modes, but this is not necessary for invoking the tool successfully, so the definition is nearly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, and the description adds extra meaning: the registry-pull precondition, the 1024 cpu units = 1 vCPU conversion, and the advice to set verify_image on the first version. These details make parameter choices more actionable even though some duplicate the schema text.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: “Register a container image as a deployable version of an application,” which clearly distinguishes this from sibling tools like edgegap_create_app or edgegap_deploy. The title and description align and scope the operation to version registration rather than app creation or deployment.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context: use it to register an already-pushed image and states a precondition (“The image must already be pushed to a registry that Edgegap can pull from”). It offers operation-specific recommendations (verify_image on first version, avoid latest tag) but does not explicitly name alternatives or when-not-to-use conditions, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

edgegap_deployDeploy a game serverAInspect

Start one containerized instance of an application version, placed near the players you specify. Returns immediately with a request_id; the server is still starting and has no connection details yet. Follow this call with edgegap_wait_for_deployment to get the address players connect to. Always stop deployments you started for testing.

ParametersJSON Schema
NameRequiredDescriptionDefault
envNoEnvironment variables for this deployment only.
tagsNoTags for filtering later, e.g. ["agent-test"]. Recommended.
usersYesWhere the players are. Exactly one of these two is required.
versionYesVersion name within the application.
cpu_unitsNoOverride the version CPU.
memory_mbNoOverride the version memory.
applicationYesApplication name.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

It discloses an important behavioral trait not available in the annotations: the deployment is asynchronous and the returned request_id is not yet a usable address. It also surfaces the need to clean up test deployments, which is valuable guidance beyond openWorldHint/idempotentHint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Compact and efficient: three sentences deliver purpose, async behavior, follow-up call, and cleanup guidance. Each sentence earns its place, and the most important workflow step is clearly front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that all seven parameters are fully documented in the schema and there is no output schema, the description properly provides the missing context: return value (request_id), asynchronous behavior, the next step (wait_for_deployment), and the need to stop test deployments. Nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the input schema already explains every parameter. The description slightly reinforces 'application version' and 'players you specify' but does not add substantial new meaning about the parameters or how they interact.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific action, 'start one containerized instance of an application version', and clarifies geo-placement ('placed near the players you specify'). It is clearly a deployment creation tool and is easily distinguished from sibling tools like edgegap_wait_for_deployment, edgegap_list_deployments, and edgegap_stop_deployment.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly tells the agent to follow this call with edgegap_wait_for_deployment for connection details, and explains the timing caveat: it returns immediately, the server is still starting, no connection details yet. It also warns to always stop test deployments, which is concrete operational guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

edgegap_get_deploymentGet deployment statusA
Read-only
Inspect

Read the current status of one deployment, including connection address and ports once it is ready. For a deployment you just created, prefer edgegap_wait_for_deployment — it polls for you instead of making you call this in a loop.

ParametersJSON Schema
NameRequiredDescriptionDefault
request_idYesThe request_id returned by edgegap_deploy.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnlyHint=true, so the read-only behavior is covered. The description adds value by disclosing that connection address and ports appear only once the deployment is ready, which helps the agent understand timing and response behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with no filler: the first states what the tool does and what it returns, and the second routes to the preferred sibling when relevant. The most important information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple single-parameter read tool with readOnlyHint and full schema coverage, the description is sufficient. An agent knows what to call, how to get the request_id, what to expect in the response, and when to use wait_for_deployment instead.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already documents request_id fully, including that it is returned by edgegap_deploy, so schema coverage is 100%. The description reinforces this but does not add meaningful semantics beyond the schema, warranting the baseline score.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Read the current status of one deployment' and adds the relevant output ('connection address and ports once it is ready'). The singular 'one deployment' clearly distinguishes it from list-style siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly names the alternative edgegap_wait_for_deployment and gives the condition for preferring it: a deployment you just created, because that tool polls for you instead of requiring a loop. This is clear, actionable usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

edgegap_get_deployment_logsGet container logs for a deploymentA
Read-only
Inspect

Retrieve stdout/stderr and crash output for a deployment. Call this whenever a deployment errors or a server exits unexpectedly — the crash exit code usually identifies the problem faster than redeploying does. Logs for stopped deployments are only retained if Endpoint Storage was configured on the version beforehand.

ParametersJSON Schema
NameRequiredDescriptionDefault
request_idYesThe request_id of the deployment.
max_charactersNoTruncate logs to this length, keeping the tail. Default 8000.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With readOnlyHint and openWorldHint already present, the description adds useful non-obvious behavior: logs include crash output and are retained for stopped deployments only if Endpoint Storage was configured. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences cover what the tool returns, when to call it, and an important retention caveat. No filler; the usage guidance is front-loaded before the edge case.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only log retrieval tool with two well-documented parameters and annotations covering safety, the description provides enough context: what logs are retrieved, when to use it, and the retention limitation. The lack of an output schema is not a gap here.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with clear descriptions of request_id and max_characters. The description does not add parameter-level details, but the baseline 3 is appropriate because the schema already carries the semantic load.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb ('Retrieve') and resource ('stdout/stderr and crash output for a deployment'), making the tool's function unambiguous. This is clearly distinct from sibling tools that list, stop, or create deployments/apps.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit trigger conditions: call when a deployment errors or a server exits unexpectedly, and explains the diagnostic value of the crash exit code. It does not explicitly name alternatives or when-not-to-use cases, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

edgegap_list_appsList Edgegap applicationsA
Read-only
Inspect

List the applications in the Edgegap organization. Start here before creating or deploying anything, so you reuse an existing application instead of making a duplicate. An "application" groups versions of one game server.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
limitNoResults per page. Default 50.

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, covering the safety profile. The description adds useful context about organizational scope and the meaning of an application, but does not disclose pagination behavior or response details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences front-load the action, then give a concrete usage rule, then define the domain concept. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is sufficient for deciding to call it and knowing its scope, and the annotations cover safety. It falls slightly short by not hinting that results are paginated or that page/limit should be considered for a complete inventory.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The two pagination parameters are optional, and only 'limit' carries a schema description; 'page' has only type/constraints. The description adds no parameter-level detail, so it fails to compensate for the incomplete schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb and resource: 'List the applications in the Edgegap organization.' The definition of an application as grouping versions of one game server distinguishes it from sibling list_app_versions and places it clearly in the create/deploy workflow.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly instructs the agent to call this before creating or deploying anything to avoid duplicate applications. It does not name sibling alternatives or state when not to use, but the context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

edgegap_list_app_versionsList versions of an applicationA
Read-only
Inspect

List the versions under an application, with their container image and resource settings. Use this to find the version name to deploy, or to copy settings from a working version when creating a new one.

ParametersJSON Schema
NameRequiredDescriptionDefault
applicationYesApplication name, as returned by edgegap_list_apps.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, covering the read-only safety profile. The description adds useful context about the output content, but does not disclose any edge behaviors such as pagination, ordering, or error conditions when an application does not exist.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tightly written sentences with no filler. The first states the core action and output scope; the second gives practical use cases. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only tool with one well-documented parameter and no output schema, the description covers what the tool returns and why an agent would call it. It could mention absence of an application as a possible failure, but this is a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the single 'application' parameter is already documented in the schema. The description does not add format or syntax detail beyond that, which is acceptable given the schema's completeness.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('List'), a precise resource ('versions under an application'), and the key contents of the result ('container image and resource settings'). It is clearly distinguished from sibling edgegap_list_apps, which lists applications rather than versions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit use cases: 'find the version name to deploy' or 'copy settings from a working version when creating a new one.' It does not name alternatives or state when not to use it, but the intended context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

edgegap_list_deploymentsList running deploymentsA
Read-only
Inspect

List active deployments, optionally filtered. Use this to find deployments left running from earlier sessions before starting new ones — orphaned servers cost money.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoDefault 50.
filterNoEdgegap filter expression, e.g. by tag. Omit for all deployments.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered. The description adds meaningful behavior: it lists only 'active' deployments (not stopped ones) and supports optional filtering. The cost warning adds context about why listing is useful. This goes beyond the annotations without contradicting them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with zero redundancy. The core action ('List active deployments') is front-loaded, followed by the optional filter and a practical usage rationale. Every word earns its place; it's both concise and informative.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only list tool with no output schema and high parameter coverage, the description is nearly complete. It covers purpose, usage, and the active-deployment scope. It doesn't mention pagination or response format, but those are typically inferred for list operations and the annotations already signal safety. Overall, an agent has enough to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% – both limit and filter have descriptions in the schema. The description's 'optionally filtered' mirrors the filter param but adds no new syntax or details. Since the schema already documents both parameters fully, the description provides no extra parameter-level value, meeting the baseline for high coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('List') and resource ('active deployments') with an explicit filter option. It clearly distinguishes from sibling tools like edgegap_get_deployment (single) and edgegap_stop_deployment (mutation), and even gives a concrete use case that sets it apart. An agent can immediately grasp what this tool does and how it relates to others.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides a clear when-to-use context: 'find deployments left running from earlier sessions before starting new ones' with the cost warning. While it doesn't explicitly contrast with siblings or state exclusions, the guidance is actionable and context-rich, making it easy for an agent to decide when to invoke this tool. Slight gap: no mention of alternatives for single-deployment lookup.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

edgegap_stop_deploymentStop a deploymentA
DestructiveIdempotent
Inspect

Gracefully stop one deployment by request_id, sending SIGTERM to the container. Stop every deployment you started for testing before ending your task. This tool stops exactly one deployment; bulk stop is deliberately not exposed.

ParametersJSON Schema
NameRequiredDescriptionDefault
request_idYesThe request_id of the deployment to stop.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark the tool destructive and idempotent; the description adds the behavioral detail that stopping is graceful and sends SIGTERM to the container. It also scopes behavior to exactly one deployment. This adds context beyond the structured hints without contradicting them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, each earning its place: the first defines the operation and mechanism, the second gives a task-level cleanup directive, and the third sets scope. Information is front-loaded and there is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter, annotation-rich tool with no output schema, the description covers what the agent needs: the operation, the mechanism, the required identifier, and the cleanup expectation. Nothing material is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the request_id parameter is already described as 'The request_id of the deployment to stop.' The description adds little beyond confirming lookup by request_id and single-deployment scope, so it earns the baseline score for schema-covered parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific action ('stop'), a specific resource ('one deployment'), and the required identifier ('by request_id'), and distinguishes itself from any bulk-stop alternative ('bulk stop is deliberately not exposed'). It is unambiguous and differentiates from sibling tools like edgegap_deploy.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit usage context: the agent should stop every deployment it started for testing before ending its task. It also clarifies the tool's single-deployment scope and that bulk stop is intentionally unavailable, preventing the agent from seeking a bulk alternative. It does not explicitly point to sibling tools for finding request_ids, but the context is sufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

edgegap_wait_for_deploymentWait for a deployment to become readyA
Read-onlyIdempotent
Inspect

Poll a deployment until it is ready, errors, or the timeout expires, then return the connection details. This is the tool to call right after edgegap_deploy. Do not build your own polling loop — this handles backoff and reports the container error detail if the server fails to start.

ParametersJSON Schema
NameRequiredDescriptionDefault
request_idYesThe request_id returned by edgegap_deploy.
timeout_secondsNoHow long to wait before giving up. Default 180.

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and idempotentHint, so the safety profile is covered. The description adds valuable behavioral details: polling behavior, backoff, timeout handling, and that it reports container error detail on failure. This is more than the annotations provide, though it doesn't specify exact timeout semantics beyond the parameter.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with zero waste. The purpose is front-loaded, and the usage guidance is compact and direct. Every clause serves a purpose, making it easy for an agent to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a polling tool with no output schema, the description covers the full lifecycle: what triggers it, what it does while polling, what it returns on success, and what happens on failure (error detail). An agent has everything needed to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with both parameters documented. The description adds the key contextual meaning that request_id comes from edgegap_deploy, which is not in the schema. This extra clarification goes beyond the schema's field descriptions, justifying a score above the baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a precise verb ('poll') and resource ('deployment'), and the outcome ('return the connection details'). It explicitly positions itself relative to edgegap_deploy and mentions that it handles backoff, which distinguishes it from a generic status check like edgegap_get_deployment.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It clearly says 'This is the tool to call right after edgegap_deploy' and instructs 'Do not build your own polling loop', giving an explicit when-to-use and a when-not-to alternative. This leaves no ambiguity about the intended context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 10 tool updatesv0.1.2
    • First observededgegap_create_app
    • First observededgegap_create_app_version
    • First observededgegap_deploy
    • First observededgegap_get_deployment
    • First observededgegap_get_deployment_logs
    • First observededgegap_list_app_versions
    • First observededgegap_list_apps
    • First observededgegap_list_deployments
    • First observededgegap_stop_deployment
    • First observededgegap_wait_for_deployment

TDQS

A4.2/5.0

Scored across 10 tools

Disambiguation5/5

Each tool targets a distinct resource and action: apps, versions, deployments, and logs. The only close pair is get_deployment vs wait_for_deployment, but their descriptions explicitly distinguish one-shot status read from polling helper, so there is no real ambiguity.

Naming Consistency4/5

All tools share the edgegap_ prefix and mostly follow a verb_noun pattern (list_deployments, create_app, get_deployment_logs). Minor deviations like the bare verb 'deploy' and 'wait_for_deployment' are still predictable and readable.

Tool Count5/5

With 10 tools covering apps, versions, and deployments, the count is well-scoped for the domain. Each tool maps to a clear lifecycle step, and no tool feels redundant.

Completeness4/5

The core workflow is fully covered: create/list apps, create/list versions, deploy, wait, get status, logs, and stop. Missing update/delete for apps/versions and bulk stop are minor gaps, but agents can complete typical tasks without dead ends.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Enables AI agents to create, edit, and run Godot 4.5+ games by providing tools for project scaffolding, scene manipulation, and engine interaction. It supports full game development workflows including node editing, script attachment, and project execution with debugging capabilities.
    24
    5
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables AI agents to deploy multiplayer web games as playable URLs with rooms, live state sync, and leaderboards, all through a single tool call.
    4
    82 npm
    5
    -
  • A
    license
    A
    quality
    B
    maintenance
    Enables AI agents to create and manage BasicDeploy containers with PostgreSQL, S3 storage, and public URLs, including deploying apps, running commands, viewing logs, and sharing containers.
    18
    137 npm
    MIT