InstaServer
Uses Cloudflare quick tunnels to expose deployed pods with public HTTPS URLs, including retry handling for tunnel registration.
Manages deployable pods as Docker containers, including creating, starting, stopping, deleting, uploading files, executing commands, and retrieving logs.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@InstaServerdeploy a static site from ./dist and give me the URL"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
InstaServer
A free, open-source, self-hosted alternative to InstaPods, Vercel, and other centralized deploy platforms.
InstaServer is an MCP server that gives an AI agent (Claude Code, or any MCP client) the same kind of tools InstaPods offers — deploy_pod, exec_command, get_logs, read_file/write_file, and so on — except every "pod" is a real Docker container running on your own machine, with a public HTTPS URL from a free Cloudflare quick tunnel. No account, no signup, no payment method, no per-deploy billing, no platform-imposed rate limit.
Why this exists
Centralized platforms (Vercel, Netlify, InstaPods, etc.) are convenient until their free/hobby tier throttles you — a burst of a dozen pushes in an hour can trip a build-rate limit and silently freeze your production deploys for days, with no obvious signal that it happened. InstaServer trades platform convenience for owning the whole stack: your machine, your Docker engine, your uptime, no ceiling.
Trade-off, stated plainly: your machine has to be on for the pod to be reachable, and the free Cloudflare quick tunnel is explicitly best-effort (Cloudflare's own words: "no uptime guarantee"). This is the right tool for local development, demos, side projects, and internal tools — not a drop-in replacement for production hosting of a business-critical site with an SLA.
Related MCP server: WEATHGARDS
Requirements
Node.js 20+
colima (or Docker Desktop) — provides the Docker engine
cloudflared — provides free quick tunnels
brew install colima docker cloudflared
colima start --cpu 2 --memory 4 --disk 20Install
git clone <this repo> instaserver
cd instaserver
npm install
npm run buildRegister it as an MCP server
With the Claude Code CLI:
claude mcp add instaserver -- node /absolute/path/to/instaserver/dist/index.jsOr add it manually to your MCP client's config (e.g. ~/.claude.json under mcpServers, or a project's .mcp.json):
{
"mcpServers": {
"instaserver": {
"command": "node",
"args": ["/absolute/path/to/instaserver/dist/index.js"]
}
}
}Tools
Tool | What it does |
| List runtime presets ( |
| Register a new pod (volume only, nothing running yet) |
| Main tool. Create-if-missing, upload files, install deps, (re)start, open a public URL, verify it answers |
| List all pods and status |
| Get one pod's details/URL/status |
|
|
| Remove a pod's container, volume, and tunnel |
| Run a shell command inside a pod |
| Recent stdout/stderr from the pod's app |
| Inspect and edit files without a full redeploy |
Presets
static —
nginx:alpine, serves the uploaded files as-is. Entry:index.html.nodejs —
node:20-alpine, runsnpm installifpackage.jsonis present, thennode <entry>. Entry:server.js/index.js/app.js.PORT=8080is set for you.python —
python:3.12-alpine, runspip install -r requirements.txtif present, thenpython <entry>. Entry:main.py/app.py/server.py.PORT=8080is set for you.
How it works
Each pod is a named Docker volume (persistent app storage) + a named container built from the preset's image, with the volume mounted at the app root and the container's port published to a free host port. deploy_pod stages your files locally, docker cps them into the container, and boots it with sh -c "<install> && exec <start>". A cloudflared quick tunnel is opened against the host port to get a public https://*.trycloudflare.com URL — reachability is verified before the URL is handed back, retrying with a fresh hostname up to 3 times if Cloudflare's registration doesn't come up cleanly (this happens occasionally; it's a known characteristic of the free tier, not a bug).
Pod state lives in ~/.instapod-free/state.json so the MCP server can restart without losing track of what's running.
Limitations (read before relying on this)
Your machine needs to be on and awake for pods to be reachable.
Free Cloudflare quick tunnels are best-effort — no SLA, hostnames can occasionally need a retry.
No built-in TLS cert management beyond what the tunnel provides, no custom domains, no multi-region.
Presets are minimal by design (three runtimes). Extending
src/presets.tsis straightforward if you need another.
License
MIT — see LICENSE.
Available Tools
12 toolscreate_podA
Create a new empty pod (a persistent Docker container + volume) without deploying app files yet. Usually you can skip this and call deploy_pod directly.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | DNS-safe pod name, e.g. 'my-app' | |
| preset | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral burden. It discloses that the pod is persistent, that it includes a Docker container and volume, and that no app files are deployed. It does not mention return values or conflict behavior, but the core side effects are clearly stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no wasted words. The core definition comes first, clarified in parentheses, and the deployment guidance is delivered in the second sentence. Every element earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter creation tool, the description covers the essential concept, the persistent side effect, and the relationship to deploy_pod. The absence of return-value details is a minor gap, but not enough to block a correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 50%, and the description adds no parameter-level meaning. It does not explain how 'preset' affects the pod or clarify 'name' beyond what the schema already provides. The description should compensate for the partially undocumented schema but does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Create a new empty pod') and immediately defines what a pod is in parentheses. It explicitly contrasts with deploy_pod by noting no app files are deployed yet, making it easy for an agent to distinguish the operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives direct usage guidance: 'Usually you can skip this and call deploy_pod directly.' This explicitly names the alternative and states when this tool is unnecessary, which is exactly what an agent needs to choose the right sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_podA
Permanently delete a pod: removes its container, volume, and tunnel.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must carry behavioral disclosure. It explicitly flags permanence and enumerates three consequences of deletion (container, volume, tunnel), which is strong transparency for a destructive tool. It could additionally note irreversibility or permission requirements, but it already exceeds a bare 'Deletes a pod'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The entire description is a single efficient sentence that front-loads the action ('Permanently delete a pod') and only then specifies artifacts affected. Zero filler or duplication.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter destructive operation with no output schema, the description gives enough to invoke it correctly: what action, what objects are affected, and permanence. It stops short of stating error/return behavior or permission prerequisites, but those are secondary for this simple tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description should compensate for the undocumented `name` parameter; it does not mention the parameter directly. The meaning is inferable from 'delete a pod' and the schema's `name` property, but the description adds no explicit parameter guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses a specific verb phrase 'Permanently delete a pod' followed by the concrete scope of destruction ('removes its container, volume, and tunnel'). This clearly distinguishes it from sibling tools like get_pod/list_pods, which inspect, and manage_pod, which suggests modification.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes the usage context evident: call this when a pod must be permanently removed, not merely stopped or managed. It does not explicitly name alternatives or state when-not-to-use (e.g., 'use manage_pod for reversible actions'), so it falls short of a full routing explanation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deploy_podA
Deploy files to a pod. Creates the pod if it doesn't exist, uploads the given files, installs dependencies, (re)starts the app, opens a public HTTPS URL via a Cloudflare quick tunnel, and checks it answers. This is the main tool — one call to go from source files to a live URL.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| files | Yes | ||
| preset | No | Required the first time a pod is created; inferred from the existing pod on redeploys. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure, and it does so thoroughly. It lays out side effects and conditions: pod creation if missing, file upload, dependency installation, app restart, public URL exposure via Cloudflare, and a health check. That goes far beyond the schema and annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences with no filler. It front-loads the core action and then adds only necessary workflow details, 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.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex side-effecting tool with no annotations and no output schema, the description covers the key behavioral sequence and outcome well. It does not explicitly state what the tool returns (e.g., the generated URL) or call out that preset is required on first creation, but those are relatively minor gaps given the strong overall coverage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33%, so the description needs to compensate. It gives meaningful context for 'files' by describing upload and dependency installation, and the deploy narrative implies what 'name' is for. However, it does not explicitly define 'name' as the pod identifier or describe how 'preset' affects runtime, leaving those partially under-specified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource ('Deploy files to a pod') and then enumerates the full lifecycle: create pod, upload files, install dependencies, restart app, open HTTPS URL, verify. This clearly tells an agent what the tool does and distinguishes it from narrower siblings like create_pod or manage_pod.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly frames itself as 'the main tool — one call to go from source files to a live URL,' which gives strong guidance that this is the primary deployment entry point. It does not explicitly say when to prefer create_pod or manage_pod instead, so there are no explicit exclusions, 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.
exec_commandA
Run a shell command inside a pod's container and return stdout/stderr/exit code.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| command | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the return behavior (stdout/stderr/exit code), which is useful. However, with no annotations, it fails to disclose potential side effects of running arbitrary shell commands (e.g., modifying files, installing packages, or changing container state), and provides no safety context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that delivers the core function and return values with no filler. It is front-loaded with the action and resource, making it efficient for an agent to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool that executes commands, the description omits essential context: what 'name' refers to, how the container is selected, whether the pod must be running, and what side effects may occur. The lack of any caveat or usage note makes it incomplete for safe autonomous invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% parameter description coverage, so the description must define the parameters. It implies 'command' is the shell command, but 'name' is left ambiguous (pod name? container name? a composite identifier?). The description does not clarify how 'name' maps to the target container.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Run'), a resource ('a pod's container'), and the key return values ('stdout/stderr/exit code'). This clearly distinguishes it from sibling tools like get_logs or read_file, which inspect without executing arbitrary commands.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage: when you need to execute a shell command inside a container. However, it gives no explicit guidance on when to prefer this over alternatives like get_logs or list_files, and does not mention exclusion criteria such as read-only operations or file inspection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_logsB
Get the recent stdout/stderr logs from a pod's app process.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| lines | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden. It usefully specifies that logs come from stdout/stderr and from the pod's app process, but it omits details like default line count, ordering, timestamps, or whether logs from previous container instances are included.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler or repetition. It is concise and readable, though the brevity comes at the cost of parameter and usage detail captured in other dimensions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite the simple two-parameter schema, there is no output schema and no annotations, so the description must support both selection and invocation. It explains what logs are returned but leaves the behavior of the optional 'lines' parameter, default behavior, and return format unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, but it only indirectly suggests that 'name' identifies a pod. The 'lines' parameter is not explained at all beyond schema constraints, leaving its meaning, default, and relationship to 'recent' ambiguous.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') and a precise resource ('recent stdout/stderr logs from a pod's app process'). It clearly distinguishes this from sibling tools like get_pod or exec_command by naming the exact log streams and process scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for retrieving application logs from a pod, which gives some usage context. However, it does not explicitly state when to prefer it over alternatives such as exec_command, read_file, or get_pod, nor does it mention exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_podB
Get details for one pod, including its public URL and status.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral disclosure burden. 'Get details' strongly implies a safe read-only operation, and the mention of 'public URL and status' clues the expected output. However, it does not explicitly state that the tool is non-mutating, does not deploy/delete/exec, or whether any permissions are needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. Every word adds signal: 'one pod,' 'public URL,' and 'status' all contribute to tool selection and expected behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given it is a simple one-parameter read tool, the description is minimally viable: an agent can infer it fetches a single pod by name and returns URL/status. However, with no annotations, no output schema, and no input-parameter explanation, it leaves some ambiguity about exact status values, required permissions, and the identifier format.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does not mention the `name` parameter at all, nor does it explain that `name` identifies the target pod. 'One pod' hints at a singular target but adds little meaning to the required string parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get'), a clear resource ('pod'), and narrows scope to 'one pod,' which distinguishes it from the sibling list_pods. It also names useful output facets ('public URL and status'), though it does not explicitly distinguish itself from other detail-like siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance about when to use this tool versus sibling alternatives like list_pods or manage_pod. It does not state exclusions, prerequisites, or mention any alternative. The only implied signal is 'one pod,' but there is no explicit usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_filesB
List files under a path inside a pod's app root.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| path | No | Relative to the app root. Defaults to '.' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of disclosing behavior; it conveys a read-only listing operation and scopes it to a pod's app root. It does not disclose whether the listing is recursive, whether directories are included, or what happens on an invalid path.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. Every word contributes to the tool's core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite the tool's apparent simplicity, there are no annotations and no output schema, and the required 'name' parameter is unexplained. An agent would need outside context or sibling-tool conventions to invoke this tool reliably.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50%: 'path' has a description, but the required 'name' parameter is not described anywhere. The description does not clarify that 'name' refers to the target pod, so the most important parameter remains ambiguous.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('List') and resource ('files under a path inside a pod's app root'), and the resource clearly differs from sibling tools like list_pods and read_file. However, it does not explicitly name sibling tools or call out exclusions, so it stops short of fully differentiating itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use or when-not-to-use guidance is provided, and no alternative sibling tools are mentioned. The phrase 'inside a pod's app root' gives some scope, but an agent must infer when this tool is preferred over list_pods, read_file, or exec_command.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_podsA
List all pods and their status.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It indicates the operation is a read-only listing and that status is included, but it does not disclose scoping (e.g., namespace/all namespaces), ordering, pagination, or error behavior. It is adequate but minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single clear sentence with no filler. Every word contributes meaning, and the core verb-object relationship is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter listing tool, the description is mostly complete: it names the action, the resource, and the output content ('status'). Some ambiguity remains about the exact scope of 'all pods', but the tool's low complexity reduces the impact of that gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so the baseline is 4. The description does not need to explain parameter semantics because there are none to explain.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('List'), a specific resource ('pods'), and the scope ('all') plus the returned aspect ('status'). This clearly distinguishes it from sibling tools like get_pod, which presumably targets a single pod.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'List all pods' implies use when an agent needs an enumeration of pods and their status, but no explicit guidance is given about when to prefer this over get_pod or when not to use it. The usage context is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_presetsA
List the runtime presets InstaServer can deploy (static/nginx, nodejs, python) and what each expects.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the burden, and it does communicate read-only informational behavior through 'List' plus the substance of the result ('what each expects'). It does not detail output structure or explicitly state absence of side effects, but for a zero-parameter list tool this is sufficient behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that names the action, scope, and included preset types with no filler. Every word contributes.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters, no output schema, and a simple informational purpose, the description states what will be returned (available presets and what each expects) and is complete enough for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so parameter documentation is moot; the description correctly focuses on behavior rather than inputs. Baseline 4 is appropriate for a parameterless tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('List'), a specific resource (runtime presets InstaServer can deploy), and enumerates the exact preset types, so an agent can distinguish this from pod/list/file siblings without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The context of 'can deploy' and 'what each expects' clearly implies this is the reference to consult when choosing a preset before create/deploy operations, but it never explicitly states when to use it versus alternatives or when not to use it. No exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_podB
Start, stop, restart, or reload (alias for restart) a pod's container.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| action | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are absent, so the description must shoulder the burden of behavioral disclosure. It only provides the action verbs and the reload alias; it does not mention side effects, state changes, idempotency, or whether the operation is synchronous.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. Every phrase adds meaning, and the parenthetical 'alias for restart' is high-value disambiguation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the minimal description leaves out expected context such as prerequisites, return information, and side effects. For a state-changing control operation, this is too sparse to guide a confident agent call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description needs to compensate for the missing parameter docs. It repeats the action values from the enum and adds only the reload-alias detail; it never explains the 'name' parameter or the consequences of each action.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names specific lifecycle verbs ('start, stop, restart, or reload') and a concrete resource ('a pod's container'), which clearly distinguishes it from sibling create/delete/inspect tools. It also clarifies that reload is an alias for restart, removing ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool instead of alternatives such as deploy_pod, create_pod, or exec_command. The description states what it does but not what conditions select it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_fileB
Read a text file from inside a pod's app root.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry behavioral disclosure. 'Read' clearly signals a non-mutating operation and 'text file' sets a content expectation. However, it does not disclose error behavior, path restrictions, or what happens for non-text files.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with zero filler, front-loading the verb and resource. The size fits the tool's simplicity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter read tool, the description gives the core operation. But with no schema descriptions and no output schema, it leaves the `name` parameter and exact path semantics to inference. An agent could likely call it correctly but not with certainty.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must explain the parameters. It only hints that the path relates to the pod's app root, while `name` is left ambiguous as either a pod name or file name. This is insufficient compensation for the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb and resource: read a text file, scoped to a pod's app root. This distinguishes it from siblings like write_file, list_files, and get_logs. No tautology.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to choose this tool instead of alternatives like exec_command, get_logs, or list_files. The usage context is only implied by the phrase 'pod's app root', with no explicit conditions or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
write_fileA
Write (or overwrite) a single file inside a pod's app root without a full redeploy.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| path | Yes | ||
| content | Yes | ||
| encoding | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosing behavioral traits. It clearly discloses that the tool can overwrite existing content, which is important mutation information. However, it does not mention persistence, whether the file is created if absent, permissions required, or side effects on the running pod.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single tight sentence that front-loads the core operation, specifies the target resource, and adds the key differentiator (no full redeploy). Every clause carries meaning and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 4 parameters, no output schema, and no annotations, the description leaves important invocation details unexplained: how the target pod is identified, whether path is absolute or relative, which file states are overwritten vs created, and what response is returned. The description gives the purpose but not enough operational context for reliable use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description offers no parameter-level meaning beyond what the parameter names themselves imply. It does not explain what 'name' refers to, what 'path' should contain, how content is provided, or how encoding affects input. The description fails to compensate for the schema's lack of documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Write (or overwrite)') and a clear resource ('a single file inside a pod's app root'), and immediately contrasts it with a full redeploy. This makes the tool's purpose clear and distinguishable from siblings like read_file, list_files, and deploy_pod.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'without a full redeploy' provides clear context for when to use this tool: when a file change should be applied directly to a running pod rather than through a redeploy. It does not explicitly name alternatives or exclusions, 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.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
12 tool updates
v0.1.0- First observed
create_pod - First observed
delete_pod - First observed
deploy_pod - First observed
exec_command - First observed
get_logs - First observed
get_pod - First observed
list_files - First observed
list_pods - First observed
list_presets - First observed
manage_pod - First observed
read_file - First observed
write_file
TDQS
Most tools have clearly distinct purposes, but create_pod overlaps with deploy_pod since deploy_pod can also create the pod. The descriptions explicitly call this out, so an agent can still choose correctly, but the boundary is slightly fuzzy.
All tool names follow a consistent verb_noun snake_case pattern: list_, create_, get_, manage_, delete_, exec_, read_, write_. The naming style is uniform and predictable across the entire set.
12 tools is well-scoped for a deployment and pod-management server. Each tool maps to a distinct lifecycle operation or inspection task, and none feel redundant or unnecessary.
The tool surface covers the full pod lifecycle: deploy, list, inspect, manage, delete, execute, log, and file operations. There are no obvious dead ends, and the provided tools are sufficient to go from source files to a live managed URL.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
Deploy AI-generated HTML/CSS/JS to instant public HTTPS URLs from any MCP-compatible agent.
Hosted MCP runtime where the agent is the operator: sign up by tool call, publish your own tools.
171Zero-setup MCP gateway securely connecting AI to your tools with authentication and workflows
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceRuns isolated AI agents in Docker containers with persistent workspaces and conversation history. Each agent has access to file operations, shell commands, GitHub integration, and can connect to external MCP servers for additional tools.3MIT
- FlicenseNot gradedqualityDmaintenanceExposes MCP tools that enable remote LLMs to query local Docker containers, OS processes, and system services in real time.-
- AlicenseBqualityAmaintenanceEnables AI agents to manage Docker containers, images, Compose stacks, health checks, and logs through a unified MCP interface, ensuring containers stay running with self-healing capabilities.31915MIT
- AlicenseNot gradedqualityCmaintenanceExposes a Linux host with shell, Python, and filesystem tools as MCP tools over HTTPS, enabling AI agents to execute commands and manage files remotely.15MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/CodesbyFebin/instaserver'
If you have feedback or need assistance with the MCP directory API, please join our Discord server