Skip to main content
Glama

set-variables

Set environment variables for the active environment in Railway projects to configure application settings and manage deployment configurations.

Instructions

Set environment variables for the active environment

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
workspacePathYesThe path to the workspace to set variables in
variablesYesArray of '{key}={value}' environment variable pairs to set
serviceNoThe service to set variables for (optional)
environmentNoThe environment to set variables for (optional)
skipDeploysNoSkip triggering deploys when setting variables (optional)

Implementation Reference

  • The asynchronous handler function for the 'set-variables' tool that invokes setRailwayVariables with provided options, wraps the result in createToolResponse, and provides detailed error handling with next steps.
    handler: async ({ workspacePath, variables, service, environment, skipDeploys, }: SetVariablesOptions) => { try { const result = await setRailwayVariables({ workspacePath, variables, service, environment, skipDeploys, }); return createToolResponse(result); } catch (error: unknown) { const errorMessage = error instanceof Error ? error.message : "Unknown error occurred"; return createToolResponse( "❌ Failed to set Railway variables\n\n" + `**Error:** ${errorMessage}\n\n` + "**Next Steps:**\n" + "• Ensure you have a Railway project linked\n" + "• Check that the service and environment exist\n" + "• Verify you have permissions to set variables\n" + "• Ensure variable format is correct (KEY=value)\n" + "• Run `railway link` to ensure proper project connection", ); } },
  • Zod schema defining the input parameters for the 'set-variables' tool: workspacePath, variables array, optional service, environment, and skipDeploys.
    inputSchema: { workspacePath: z .string() .describe("The path to the workspace to set variables in"), variables: z .array(z.string()) .describe("Array of '{key}={value}' environment variable pairs to set"), service: z .string() .optional() .describe("The service to set variables for (optional)"), environment: z .string() .optional() .describe("The environment to set variables for (optional)"), skipDeploys: z .boolean() .optional() .describe("Skip triggering deploys when setting variables (optional)"), },
  • src/index.ts:21-31 (registration)
    Dynamic registration of all exported tools (including 'set-variables') to the MCP server using server.registerTool with name, schema, and handler.
    Object.values(tools).forEach((tool) => { server.registerTool( tool.name, { title: tool.title, description: tool.description, inputSchema: tool.inputSchema, }, tool.handler, ); });
  • Helper function that constructs and executes the 'railway variables --set KEY=value ...' CLI command, checks project linkage, handles errors, and returns output.
    export const setRailwayVariables = async ({ workspacePath, variables, service, environment, skipDeploys, }: SetVariablesOptions): Promise<string> => { try { await checkRailwayCliStatus(); const result = await getLinkedProjectInfo({ workspacePath }); if (!result.success) { throw new Error(result.error); } let command = "railway variables"; if (service) { command += ` --service ${service}`; } if (environment) { command += ` --environment ${environment}`; } if (skipDeploys) { command += " --skip-deploys"; } // Add each variable with --set flag variables.forEach((variable) => { command += ` --set "${variable}"`; }); const { output } = await runRailwayCommand(command, workspacePath); return output; } catch (error: unknown) { return analyzeRailwayError(error, "railway variables --set"); } };

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/railwayapp/railway-mcp-server'

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