list_service_variables
Retrieve environment variables for a Railway service to view configuration, audit settings, or check connection strings.
Instructions
[API] List all environment variables for a service
⚡️ Best for: ✓ Viewing service configuration ✓ Auditing environment variables ✓ Checking connection strings
→ Prerequisites: service_list
→ Next steps: variable_set, variable_delete
→ Related: service_info, variable_bulk_set
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | ID of the project containing the service | |
| environmentId | Yes | ID of the environment to list variables from (usually obtained from service_list) | |
| serviceId | No | Optional: ID of the service to list variables for, if not provided, shared variables across all services will be listed |
Implementation Reference
- src/tools/variable.tool.ts:27-29 (handler)The handler function that executes the tool logic by calling variableService.listVariables with the provided projectId, environmentId, and optional serviceId.async ({ projectId, environmentId, serviceId }) => { return variableService.listVariables(projectId, environmentId, serviceId); }
- src/tools/variable.tool.ts:22-26 (schema)Zod input schema defining parameters for the list_service_variables tool.{ projectId: z.string().describe("ID of the project containing the service"), environmentId: z.string().describe("ID of the environment to list variables from (usually obtained from service_list)"), serviceId: z.string().optional().describe("Optional: ID of the service to list variables for, if not provided, shared variables across all services will be listed") },
- src/tools/index.ts:16-37 (registration)Registration of the list_service_variables tool (included in variableTools) to the MCP server via the registerAllTools function.export function registerAllTools(server: McpServer) { // Collect all tools const allTools = [ ...databaseTools, ...deploymentTools, ...domainTools, ...projectTools, ...serviceTools, ...tcpProxyTools, ...variableTools, ...configTools, ...volumeTools, ...templateTools, ] as Tool[]; // Register each tool with the server allTools.forEach((tool) => { server.tool( ...tool ); }); }
- Helper method in VariableService that retrieves, formats, and returns service or shared environment variables.async listVariables(projectId: string, environmentId: string, serviceId?: string) { try { const variables = await this.client.variables.getVariables(projectId, environmentId, serviceId); if (Object.keys(variables).length === 0) { return createSuccessResponse({ text: serviceId ? "No variables found for this service in this environment." : "No shared variables found in this environment.", data: {} }); } const context = serviceId ? "service variables" : "shared environment variables"; const formattedVars = Object.entries(variables) .map(([key, value]) => `${key}=${value}`) .join('\n'); return createSuccessResponse({ text: `Current ${context}:\n\n${formattedVars}`, data: variables }); } catch (error) { return createErrorResponse(`Error listing variables: ${formatError(error)}`); } }