Skip to main content
Glama

list-projects

Retrieve all Railway cloud platform projects for your account to manage deployments, services, and environments.

Instructions

List all Railway projects for the currently logged in account

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Implementation Reference

  • The async handler function that fetches Railway projects using listRailwayProjects, maps and formats them into a markdown list grouped by project details, handles errors, and returns a formatted tool response.
    handler: async () => { try { const projects = await listRailwayProjects(); const projectList = projects.map((project) => ({ id: project.id, name: project.name, team: project.team?.name || "Unknown", environments: project.environments?.edges?.map((env) => env.node.name) || [], services: project.services?.edges?.map((service) => service.node.name) || [], createdAt: project.createdAt, updatedAt: project.updatedAt, })); const formattedList = projectList .map( (project) => `**${project.name}** (ID: ${project.id})\n` + `Team: ${project.team}\n` + `Environments: ${project.environments.join(", ")}\n` + `Services: ${project.services.join(", ")}\n` + `Created: ${new Date(project.createdAt).toLocaleDateString()}\n` + `Updated: ${new Date(project.updatedAt).toLocaleDateString()}\n`, ) .join("\n"); return createToolResponse( `✅ Found ${projects.length} Railway project(s):\n\n${formattedList}\n\n**Note:** To link to one of these projects, run \`railway link\` manually.`, ); } catch (error: unknown) { const errorMessage = error instanceof Error ? error.message : "Unknown error occurred"; return createToolResponse( "❌ Failed to list Railway projects\n\n" + `**Error:** ${errorMessage}\n\n` + "**Next Steps:**\n" + "• Ensure you are logged into Railway CLI (`railway login`)\n" + "• Check that your authentication token is valid\n" + "• Verify you have permissions to view projects\n" + "• Try running `railway login` to refresh your authentication", ); } },
  • Empty input schema as the tool requires no input parameters.
    inputSchema: {},
  • src/index.ts:21-31 (registration)
    Registers all imported tools (including 'list-projects') with the MCP server by looping through Object.values(tools) and calling server.registerTool with name, schema details, and handler.
    Object.values(tools).forEach((tool) => { server.registerTool( tool.name, { title: tool.title, description: tool.description, inputSchema: tool.inputSchema, }, tool.handler, ); });
  • Core helper function that executes the 'railway list --json' CLI command to retrieve the list of Railway projects, with status check and error analysis.
    export const listRailwayProjects = async (): Promise<RailwayProject[]> => { try { await checkRailwayCliStatus(); const projects = await runRailwayJsonCommand("railway list --json"); if (!Array.isArray(projects)) { throw new Error("Unexpected response format from Railway CLI"); } return projects; } catch (error: unknown) { return analyzeRailwayError(error, "railway list --json"); } };

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