Skip to main content
Glama

create-project-and-link

Create a new Railway project and link it to your current directory for deployment and management.

Instructions

Create a new Railway project and link it to the current directory

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
projectNameYes
workspacePathYesThe path to the workspace to create the project in

Implementation Reference

  • The MCP tool handler function that invokes the createRailwayProject helper, formats success/error responses using createToolResponse, and handles exceptions gracefully.
    handler: async ({ projectName, workspacePath }: CreateProjectOptions) => { try { const result = await createRailwayProject({ projectName, workspacePath, }); return createToolResponse( `✅ Successfully created Railway project "${projectName}":\n\n${result}\n\nThis project is now linked and all commands will be run in the context of the newly created project. No need to run \`railway link\` again.`, ); } catch (error: unknown) { const errorMessage = error instanceof Error ? error.message : "Unknown error occurred"; return createToolResponse( "❌ Failed to create Railway project\n\n" + `**Error:** ${errorMessage}\n\n` + "**Next Steps:**\n" + "• Ensure you are logged into Railway CLI (`railway login`)\n" + "• Check that the project name is valid and unique\n" + "• Verify you have permissions to create projects\n" + "• Ensure the workspace path is accessible", ); } },
  • Zod-based input schema defining required parameters: projectName (string) and workspacePath (string with description). Used for tool input validation.
    inputSchema: { projectName: z.string(), workspacePath: z .string() .describe("The path to the workspace to create the project in"), },
  • src/index.ts:21-31 (registration)
    Generic registration loop that registers all exported tools (including create-project-and-link) from ./tools into the McpServer instance.
    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 Railway CLI commands (`railway init` and `railway link`) to create and link a new project, checks for existing links, and handles CLI errors.
    export const createRailwayProject = async ({ projectName, workspacePath, }: CreateProjectOptions): Promise<string> => { try { await checkRailwayCliStatus(); // Check if there's already a linked project const linkedProjectResult = await getLinkedProjectInfo({ workspacePath }); if (linkedProjectResult.success && linkedProjectResult.project) { return "A Railway project is already linked to this workspace. No new project created."; } const { output: initOutput } = await runRailwayCommand( `railway init --name ${projectName}`, workspacePath, ); const { output: linkOutput } = await runRailwayCommand( `railway link -p ${projectName}`, workspacePath, ); return `${initOutput}\n${linkOutput}`; } catch (error: unknown) { return analyzeRailwayError(error, `railway init --name ${projectName}`); } };

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