Skip to main content
Glama

Railway MCP Server

A Model Context Protocol (MCP) server that gives Claude (and other MCP-compatible AI tools) full access to your Railway.app infrastructure. Deploy, manage services, check logs, configure environment variables — all through natural conversation.

Supports multiple workspaces — use one token per workspace and the server merges results across all of them.

Quick Start

1. Get Railway API Tokens

Go to railway.com/account/tokens and create a workspace-scoped token for each workspace you want to access. Tokens scoped to "No workspace" can only see account-level info, not projects.

2. Install & Build

cd railway-mcp-server
npm install
npm run build

3. Configure in Claude Desktop

Open your Claude Desktop config file:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

  • Linux: ~/.config/Claude/claude_desktop_config.json

Use named env vars — one per workspace:

{
  "mcpServers": {
    "railway": {
      "command": "node",
      "args": ["/FULL/PATH/TO/railway-mcp-server/build/index.js"],
      "env": {
        "RAILWAY_TOKEN_MYCOMPANY": "token-scoped-to-company-workspace",
        "RAILWAY_TOKEN_PERSONAL": "token-scoped-to-personal-workspace"
      }
    }
  }
}

The label after RAILWAY_TOKEN_ becomes the workspace name in results (e.g. mycompany, personal).

Single workspace

If you only need one workspace, you can use the simpler format:

{
  "mcpServers": {
    "railway": {
      "command": "node",
      "args": ["/FULL/PATH/TO/railway-mcp-server/build/index.js"],
      "env": {
        "RAILWAY_API_TOKEN": "your-token-here"
      }
    }
  }
}

All token formats supported

Env var

Behavior

RAILWAY_TOKEN_<LABEL>

Named tokens — one per workspace (recommended)

RAILWAY_API_TOKENS

Comma-separated list of tokens

RAILWAY_API_TOKEN

Single token (backwards compatible)

4. Restart Claude Desktop

The Railway tools will appear automatically.

Related MCP server: Railway MCP Server

Available Tools (30 total)

Teams

Tool

Description

list_teams

List all teams/organizations you belong to

Projects

Tool

Description

list_projects

List ALL projects across all workspaces

list_personal_projects

List only your personal projects

list_team_projects

List projects for a specific team

get_project

Get project details (services, environments)

create_project

Create a new project

delete_project

Delete a project

Services

Tool

Description

list_services

List services in a project

create_service

Create from GitHub repo or Docker image

delete_service

Remove a service

Deployments

Tool

Description

list_deployments

List deployments for a service

get_deployment

Get deployment status and details

deploy_service

Trigger a new deployment

redeploy_service

Redeploy the latest version

restart_deployment

Restart a running deployment

remove_deployment

Cancel/remove a deployment

Environments

Tool

Description

list_environments

List environments (production, staging, etc.)

create_environment

Create a new environment

delete_environment

Remove an environment

Variables

Tool

Description

get_variables

Read environment variables

set_variables

Set one or more variables (upsert)

delete_variable

Delete a variable

Domains

Tool

Description

create_service_domain

Generate a *.up.railway.app domain

create_custom_domain

Attach your own domain

delete_service_domain

Remove the Railway domain

Logs

Tool

Description

get_deployment_logs

Runtime/application logs

get_build_logs

Build output logs

Volumes

Tool

Description

create_volume

Create persistent storage for a service

Advanced

Tool

Description

raw_graphql

Run any GraphQL query/mutation directly

introspect_schema

Discover all available API operations

How Multi-Workspace Works

When you configure multiple tokens, the server handles routing automatically:

  • Listing projects: Queries all workspaces in parallel and merges results, labeled by workspace name.

  • ID-based lookups (get project, deploy, check logs, etc.): Tries each token until one succeeds. Since Railway IDs are globally unique, it finds the right workspace automatically.

  • Create operations: Uses the first configured token by default.

Example Usage (in Claude)

"List my Railway projects"

"Deploy my-app service to production"

"Show me the logs for the latest deployment of api-server"

"Set DATABASE_URL on my backend service in staging"

"Create a new project called 'my-saas' with a Postgres database"

Development

npm run dev    # Watch mode — recompiles on changes
npm run build  # One-time build
npm start      # Run the server

How It Works

This server communicates with Railway's public GraphQL API at backboard.railway.com/graphql/v2. It runs locally on your machine via STDIO transport, so your API tokens never leave your computer.

The raw_graphql tool is an escape hatch — if Railway adds new API operations before this server is updated, you (or Claude) can still access them by writing the GraphQL directly.

License

MIT

Available Tools

30 tools
create_custom_domainC

Attach a custom domain to a service

Inputs: domain (required), serviceId (required), environmentId (required).

create_environmentB

Create a new environment in a project

Inputs: name (required), projectId (required).

create_projectB

Create a new Railway project

Inputs: name (required), description.

create_serviceB

Create a new service in a project (from GitHub repo or Docker image)

Inputs: name (required), projectId (required), repo, image.

create_service_domainA

Generate a Railway-provided domain (*.up.railway.app) for a service

Inputs: serviceId (required), environmentId (required).

create_volumeA

Create a persistent volume attached to a service

Inputs: mountPath (required), projectId (required), serviceId (required), environmentId (required).

delete_environmentA

Delete an environment from a project

Inputs: environmentId (required).

delete_projectA

Delete a Railway project (irreversible!)

Inputs: projectId (required).

delete_serviceB

Delete a service from a project

Inputs: serviceId (required).

delete_service_domainA

Remove the Railway-provided domain from a service

Inputs: serviceId (required), environmentId (required).

delete_variableB

Delete a single environment variable

Inputs: name (required), projectId (required), serviceId (required), environmentId (required).

deploy_serviceC

Trigger a new deployment for a service

Inputs: serviceId (required), environmentId (required).

get_build_logsB

Get build logs for a deployment

Inputs: deploymentId (required).

get_deploymentA

Get details of a specific deployment

Inputs: deploymentId (required).

get_deployment_logsA

Get runtime/application logs for a deployment

Inputs: deploymentId (required), limit.

get_projectA

Get details of a specific Railway project

Inputs: projectId (required).

get_variablesB

Get environment variables for a service

Inputs: projectId (required), environmentId (required), serviceId.

introspect_schemaA

Fetch the full Railway GraphQL schema. Useful for discovering available operations beyond the built-in tools.

Inputs: no named parameters.

list_deploymentsB

List deployments for a service in an environment

Inputs: projectId (required), serviceId (required), environmentId (required).

list_environmentsA

List all environments in a project

Inputs: projectId (required).

list_personal_projectsA

List only your personal Railway projects

Inputs: no named parameters.

list_projectsA

List ALL Railway projects — both personal and from all teams/orgs. Returns projects grouped by personal vs each team.

Inputs: no named parameters.

list_servicesA

List all services in a Railway project

Inputs: projectId (required).

list_team_projectsA

List projects for a specific team/organization

Inputs: teamId (required).

list_teamsA

List all teams/organizations you belong to

Inputs: no named parameters.

raw_graphqlA

Execute an arbitrary GraphQL query/mutation against Railway's API. Use this for operations not covered by other tools.

Inputs: query (required), variables.

redeploy_serviceB

Redeploy the latest deployment of a service

Inputs: serviceId (required), environmentId (required).

remove_deploymentB

Remove/cancel a specific deployment

Inputs: deploymentId (required).

restart_deploymentB

Restart a specific deployment

Inputs: deploymentId (required).

set_variablesA

Set one or more environment variables (upsert)

Inputs: projectId (required), serviceId (required), variables (required), environmentId (required).

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3.3/5.0

    Scored across 30 tools

    Disambiguation4/5

    Most tools target distinct resources/actions, but a few overlap: list_projects/personal/team_projects and deploy/redeploy/restart could cause selection errors. Descriptions help clarify, but boundaries are not razor-sharp.

    Naming Consistency4/5

    Uses mostly verb_noun (list_*, create_*, delete_*) but 'remove_deployment' breaks delete_* pattern, and 'redeploy_service'/'deploy_service' are closely named. Otherwise predictable.

    Tool Count2/5

    30 tools is excessive for an MCP server, even for a comprehensive platform. Several tools (list_personal_projects, list_team_projects) could be folded into list_projects. The count weighs on agent tool selection.

    Completeness3/5

    Covers CRUD for projects, deployments, environments, variables, domains, logs, and volumes partially. Missing update operations for projects/services/environments, get_service, and volume list/delete. raw_graphql mitigates gaps but the built-in surface is incomplete.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      D
      maintenance
      A Model Context Protocol (MCP) server that integrates Claude with the Terraform Cloud API, allowing Claude to manage your Terraform infrastructure through natural conversation.
      62
      23
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables comprehensive management of Railway infrastructure, including projects, services, variables, and deployments, directly through the Railway GraphQL API. It is designed to work as a remote service over HTTP, allowing seamless integration with cloud-based MCP clients like claude.ai.
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      Unofficial MCP server for Railway that enables managing Railway infrastructure through natural language, including projects, services, deployments, environments, variables, templates, domains, volumes, observability, integrations, networking, and workflows.
      83 npm
      2
      MIT
    • F
      license
      Not graded
      quality
      D
      maintenance
      A team-wide, remote MCP server that lets Claude operate Railway projects through natural language, with safety guardrails to prevent irreversible actions without human approval.
      -