Skip to main content
Glama

get_experiment

Retrieve detailed status and node states for a specific CloudLab experiment using its UUID to monitor experiment progress and troubleshoot issues.

Instructions

Get detailed status of a specific experiment including node states

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
experiment_idYesExperiment UUID (from list_experiments)

Implementation Reference

  • Handler for 'get_experiment' tool: extracts experiment_id from arguments, calls cloudlabRequest to fetch experiment details from API, and returns JSON-formatted result as text content.
    case "get_experiment": {
      const { experiment_id } = args as { experiment_id: string };
      const result = await cloudlabRequest(`/experiments/${experiment_id}`);
      return {
        content: [
          {
            type: "text",
            text: JSON.stringify(result, null, 2),
          },
        ],
      };
    }
  • Tool schema definition including name, description, and input schema requiring 'experiment_id' string.
    {
      name: "get_experiment",
      description: "Get detailed status of a specific experiment including node states",
      inputSchema: {
        type: "object",
        properties: {
          experiment_id: {
            type: "string",
            description: "Experiment UUID (from list_experiments)",
          },
        },
        required: ["experiment_id"],
      },
    },
  • src/index.ts:97-255 (registration)
    Registration of all tools including 'get_experiment' via ListToolsRequestSchema handler.
    server.setRequestHandler(ListToolsRequestSchema, async () => {
      return {
        tools: [
          {
            name: "list_experiments",
            description: "List all your CloudLab experiments",
            inputSchema: {
              type: "object",
              properties: {},
              required: [],
            },
          },
          {
            name: "create_experiment",
            description: "Create a new CloudLab experiment from a profile",
            inputSchema: {
              type: "object",
              properties: {
                project: {
                  type: "string",
                  description: "Project name (e.g., 'UCY-CS499-DC')",
                },
                profile_name: {
                  type: "string",
                  description: "Profile name (e.g., 'small-lan')",
                },
                profile_project: {
                  type: "string",
                  description: "Project that owns the profile (e.g., 'PortalProfiles')",
                },
                name: {
                  type: "string",
                  description: "Optional experiment name (auto-generated if not provided)",
                },
                bindings: {
                  type: "object",
                  description: "Optional profile parameter bindings (e.g., {nodeCount: '2', phystype: 'c220g1'})",
                },
              },
              required: ["project", "profile_name", "profile_project"],
            },
          },
          {
            name: "get_experiment",
            description: "Get detailed status of a specific experiment including node states",
            inputSchema: {
              type: "object",
              properties: {
                experiment_id: {
                  type: "string",
                  description: "Experiment UUID (from list_experiments)",
                },
              },
              required: ["experiment_id"],
            },
          },
          {
            name: "reboot_node",
            description: "Reboot a specific node in an experiment",
            inputSchema: {
              type: "object",
              properties: {
                experiment_id: {
                  type: "string",
                  description: "Experiment UUID (from list_experiments)",
                },
                node: {
                  type: "string",
                  description: "Node client_id (e.g., 'node0')",
                },
              },
              required: ["experiment_id", "node"],
            },
          },
          {
            name: "reboot_all_nodes",
            description: "Reboot all nodes in an experiment",
            inputSchema: {
              type: "object",
              properties: {
                experiment_id: {
                  type: "string",
                  description: "Experiment UUID (from list_experiments)",
                },
              },
              required: ["experiment_id"],
            },
          },
          {
            name: "reload_node",
            description: "Reload/reimage a node with its disk image",
            inputSchema: {
              type: "object",
              properties: {
                experiment_id: {
                  type: "string",
                  description: "Experiment UUID (from list_experiments)",
                },
                node: {
                  type: "string",
                  description: "Node client_id",
                },
              },
              required: ["experiment_id", "node"],
            },
          },
          {
            name: "powercycle_node",
            description: "Power cycle a node (hard reboot)",
            inputSchema: {
              type: "object",
              properties: {
                experiment_id: {
                  type: "string",
                  description: "Experiment UUID (from list_experiments)",
                },
                node: {
                  type: "string",
                  description: "Node client_id",
                },
              },
              required: ["experiment_id", "node"],
            },
          },
          {
            name: "extend_experiment",
            description: "Extend the expiration time of an experiment",
            inputSchema: {
              type: "object",
              properties: {
                experiment_id: {
                  type: "string",
                  description: "Experiment UUID (from list_experiments)",
                },
                hours: {
                  type: "number",
                  description: "Number of hours to extend",
                },
              },
              required: ["experiment_id", "hours"],
            },
          },
          {
            name: "terminate_experiment",
            description: "Terminate an experiment (WARNING: destroys all data)",
            inputSchema: {
              type: "object",
              properties: {
                experiment_id: {
                  type: "string",
                  description: "Experiment UUID (from list_experiments)",
                },
              },
              required: ["experiment_id"],
            },
          },
        ],
      };
    });

Latest Blog Posts

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/ArdaGurcan/cloudlab-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server