Skip to main content
Glama

variable_bulk_set

Create or update multiple environment variables in bulk for Railway infrastructure. Ideal for migrating configurations, initial service setup, or batch updates. Requires project ID, environment ID, and variable mapping.

Instructions

[WORKFLOW] Create or update multiple environment variables at once

⚡️ Best for: ✓ Migrating configuration between services ✓ Initial service setup ✓ Bulk configuration updates

⚠️ Not for: × Single variable updates (use variable_set) × Temporary configuration changes

→ Prerequisites: service_list

→ Alternatives: variable_set

→ Next steps: deployment_trigger, service_restart

→ Related: variable_list, service_update

Input Schema

NameRequiredDescriptionDefault
environmentIdYesID of the environment for the variables (usually obtained from service_list)
projectIdYesID of the project containing the service
serviceIdNoOptional: ID of the service for the variables, if omitted updates shared variables)
variablesYesObject mapping variable names to values

Input Schema (JSON Schema)

{ "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "environmentId": { "description": "ID of the environment for the variables (usually obtained from service_list)", "type": "string" }, "projectId": { "description": "ID of the project containing the service", "type": "string" }, "serviceId": { "description": "Optional: ID of the service for the variables, if omitted updates shared variables)", "type": "string" }, "variables": { "additionalProperties": { "type": "string" }, "description": "Object mapping variable names to values", "type": "object" } }, "required": [ "projectId", "environmentId", "variables" ], "type": "object" }

Implementation Reference

  • Core handler logic for bulk setting environment variables: transforms the variables record into an array of input objects and calls the API client to upsert them, with success/error responses.
    async bulkUpsertVariables(projectId: string, environmentId: string, variables: Record<string, string>, serviceId?: string) { try { const inputs = Object.entries(variables).map(([name, value]) => ({ projectId, environmentId, name, value, serviceId })); await this.client.variables.upsertVariables(inputs); const variableType = serviceId ? "service variables" : "shared environment variables"; return createSuccessResponse({ text: `Successfully updated ${inputs.length} ${variableType}` }); } catch (error) { return createErrorResponse(`Error updating variables: ${formatError(error)}`); } }
  • Zod input schema defining parameters for the variable_bulk_set tool.
    { projectId: z.string().describe("ID of the project containing the service"), environmentId: z.string().describe("ID of the environment for the variables (usually obtained from service_list)"), variables: z.record(z.string()).describe("Object mapping variable names to values"), serviceId: z.string().optional().describe("Optional: ID of the service for the variables, if omitted updates shared variables)") },
  • Registers the 'variable_bulk_set' MCP tool using createTool, including formatted description, Zod schema, and handler lambda delegating to VariableService.bulkUpsertVariables.
    createTool( "variable_bulk_set", formatToolDescription({ type: 'WORKFLOW', description: "Create or update multiple environment variables at once", bestFor: [ "Migrating configuration between services", "Initial service setup", "Bulk configuration updates" ], notFor: [ "Single variable updates (use variable_set)", "Temporary configuration changes" ], relations: { prerequisites: ["service_list"], nextSteps: ["deployment_trigger", "service_restart"], alternatives: ["variable_set"], related: ["variable_list", "service_update"] } }), { projectId: z.string().describe("ID of the project containing the service"), environmentId: z.string().describe("ID of the environment for the variables (usually obtained from service_list)"), variables: z.record(z.string()).describe("Object mapping variable names to values"), serviceId: z.string().optional().describe("Optional: ID of the service for the variables, if omitted updates shared variables)") }, async ({ projectId, environmentId, variables, serviceId }) => { return variableService.bulkUpsertVariables(projectId, environmentId, variables, serviceId); } ),

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/jason-tan-swe/railway-mcp'

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