Railway MCP Server
OfficialThe Railway MCP Server is an experimental local server that provides opinionated workflows and tools for efficiently managing Railway resources. Key capabilities include:
CLI Integration: Verify Railway CLI installation and user login status
Project Management: Create, list, and link projects to your current directory
Service Management: List, link, and deploy services from your directory or Railway Template Library using fuzzy search
Environment Management: Create, link, and manage environments with options to duplicate existing environments and configure service variables
Configuration & Variables: List, set, and manage environment variables, plus generate
railway.appdomains for projects or servicesMonitoring & Logs: Retrieve build or deployment logs with options to specify deployment ID, service, and environment
IDE Integration: Supports setup and usage with Cursor and VSCode
Provides comprehensive tools for managing Railway infrastructure including project and service management, deployments from templates, environment configuration, domain generation, and monitoring through build/deployment logs.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Railway MCP Serverdeploy a Postgres database for my new project"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
@railway/mcp-server is deprecated
Railway MCP is now bundled into the Railway CLI.
This npm package no longer contains the standalone TypeScript MCP server. It is a compatibility shim that launches:
railway mcpMigration
Install or upgrade the Railway CLI:
bash <(curl -fsSL https://railway.com/install.sh)Then configure supported MCP clients:
railway mcp installTo configure the hosted MCP server instead of the local stdio server:
railway mcp install --remoteYou can also configure a local MCP client directly with:
{
"mcpServers": {
"railway": {
"command": "railway",
"args": ["mcp"]
}
}
}Remove old client entries that run:
npx -y @railway/mcp-serverRelated MCP server: Railway MCP Server
Compatibility
For existing configs that still invoke @railway/mcp-server, this package delegates to railway mcp.
If the Railway CLI is missing, the package exits with migration instructions.
Docs
See the Railway CLI MCP docs: https://docs.railway.com/cli/mcp
Available Tools
14 toolscheck-railway-statusCheck Railway CLI StatusA
Check whether the Railway CLI is installed and if the user is logged in. This tool helps agents verify the Railway CLI setup before attempting to use other Railway tools.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It describes what the tool checks (installation and login status) but doesn't disclose behavioral details like what specific checks are performed, what happens if CLI isn't found, whether it provides diagnostic information, or what the output format looks like. It's adequate but lacks depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with zero waste. The first sentence states the purpose, the second provides usage context. Every word earns its place, and the information is front-loaded with the core functionality stated immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter verification tool with no output schema, the description is reasonably complete. It explains what's being checked and when to use it. However, without annotations or output schema, it could benefit from mentioning what kind of status information is returned (e.g., binary success/failure vs detailed diagnostics).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters with 100% schema description coverage, so the baseline is 4. The description appropriately doesn't discuss parameters since none exist, and it correctly focuses on the tool's purpose rather than attempting to describe non-existent inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs ('check whether... installed' and 'logged in') and identifies the resource (Railway CLI). It distinguishes this verification tool from sibling deployment/management tools by focusing on setup status rather than operational actions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use this tool: 'before attempting to use other Railway tools.' This provides clear contextual guidance about its role as a prerequisite check, distinguishing it from all sibling tools that perform actual Railway operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create-environmentCreate EnvironmentB
Create a new Railway environment for the currently linked project. Optionally duplicate an existing environment and set service variables.
| Name | Required | Description | Default |
|---|---|---|---|
| workspacePath | Yes | The path to the workspace where the environment should be created | |
| environmentName | Yes | The name for the new environment | |
| duplicateEnvironment | No | The name of an existing environment to duplicate | |
| serviceVariables | No | Service variables to assign in the new environment (only works when duplicating) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. While it mentions the creation action and optional duplication, it lacks critical details like required permissions, whether this is a destructive operation, rate limits, or what happens on failure. For a creation tool with zero annotation coverage, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized with two sentences that efficiently convey the core functionality and optional features. It's front-loaded with the primary purpose, though it could be slightly more structured by explicitly separating required from optional behaviors.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a creation tool with 4 parameters, 100% schema coverage, but no annotations and no output schema, the description is moderately complete. It covers the basic purpose but lacks behavioral context, error handling information, and output expectations, which are important for a tool that creates resources.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, providing good documentation for all parameters. The description adds minimal value beyond the schema by mentioning the optional duplication and service variables, but doesn't explain parameter interactions (e.g., that serviceVariables only works with duplicateEnvironment) or provide additional context beyond what's already in the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Create a new Railway environment') and resource ('for the currently linked project'), distinguishing it from siblings like 'create-project-and-link' or 'link-environment'. It also mentions optional capabilities ('duplicate an existing environment and set service variables'), providing comprehensive purpose clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context ('for the currently linked project') but doesn't explicitly state when to use this tool versus alternatives like 'link-environment' or 'create-project-and-link'. No exclusions or prerequisites are mentioned, leaving some ambiguity about appropriate scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create-project-and-linkCreate Railway ProjectC
Create a new Railway project and link it to the current directory
| Name | Required | Description | Default |
|---|---|---|---|
| projectName | Yes | ||
| workspacePath | Yes | The path to the workspace to create the project in |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions creation and linking but fails to detail critical aspects like permissions required, whether this is a destructive operation, error handling, or what happens if the project already exists. This leaves significant gaps in understanding the tool's behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence that efficiently conveys the core functionality without unnecessary words. It is front-loaded with the main action and avoids redundancy, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of creating and linking a project with no annotations, no output schema, and incomplete parameter documentation, the description is insufficient. It lacks details on outcomes, error conditions, or integration with sibling tools, making it incomplete for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 50% (only 'workspacePath' has a description), and the description does not add any parameter-specific details beyond what the schema provides. It implies parameters are needed but doesn't explain their roles or constraints, resulting in a baseline score due to moderate schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Create a new Railway project') and includes an additional outcome ('and link it to the current directory'), which specifies the tool's purpose beyond just creation. However, it doesn't explicitly differentiate from sibling tools like 'create-environment' or 'link-service', which could involve similar concepts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as 'list-projects' for checking existing ones or 'deploy-template' for starting from a template. It lacks context about prerequisites, timing, or exclusions, leaving usage decisions unclear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deployDeploy to RailwayC
Upload and deploy from the current directory. Supports CI mode, environment, and service options.
| Name | Required | Description | Default |
|---|---|---|---|
| workspacePath | Yes | The path to the workspace to deploy | |
| ci | No | Stream build logs only, then exit (equivalent to setting $CI=true) | |
| environment | No | Environment to deploy to (defaults to linked environment) | |
| service | No | Service to deploy to (defaults to linked service) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but lacks critical behavioral details. It mentions 'Upload and deploy' implying a write operation, but doesn't disclose permissions needed, whether it's destructive, rate limits, or what happens on failure. The CI mode hint is useful but insufficient for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief and front-loaded with the core action, using two efficient sentences. However, the second sentence could be more structured to clearly separate features, and it slightly under-specifies given the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a deployment tool with 4 parameters, no annotations, and no output schema, the description is inadequate. It misses behavioral context, output expectations, error handling, and differentiation from siblings, leaving significant gaps for an AI agent to understand and invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all parameters. The description adds minimal value by listing 'CI mode, environment, and service options' but doesn't explain semantics beyond what the schema provides, such as how defaults work or interaction effects.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Upload and deploy') and resource ('from the current directory'), making the purpose understandable. However, it doesn't differentiate from sibling tools like 'deploy-template' or 'list-deployments' beyond the basic action, missing specific distinctions about scope or method.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'deploy-template' or 'check-railway-status'. It mentions supported options but doesn't specify prerequisites, exclusions, or contextual triggers, leaving usage ambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deploy-templateDeploy Railway TemplateA
Search and deploy Railway templates. This tool will search for templates using fuzzy search and automatically deploy the selected template to the current Railway project and environment.
| Name | Required | Description | Default |
|---|---|---|---|
| workspacePath | Yes | The path to the workspace to deploy the template to | |
| searchQuery | Yes | Search query to filter templates by name, description, or category | |
| templateIndex | No | Index of the template to deploy (required if multiple templates found) | |
| teamId | No | The ID of the team (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses key behaviors: fuzzy search, automatic deployment, and deployment target (current project/environment). However, it lacks details on permissions needed, rate limits, error handling, or what 'automatically deploy' entails (e.g., confirmation steps).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences front-load the core purpose and key behaviors. Every phrase adds value: 'search and deploy' (action), 'fuzzy search' (method), 'automatically deploy' (behavior), 'current Railway project and environment' (context). No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter mutation tool with no annotations and no output schema, the description is adequate but incomplete. It covers the what and how but lacks details on side effects, return values, error cases, or integration with sibling tools. Given the complexity, more behavioral context would be helpful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all 4 parameters. The description adds no parameter-specific semantics beyond implying 'searchQuery' is used for fuzzy search and 'workspacePath' targets deployment. Baseline 3 is appropriate as the schema handles parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Search and deploy Railway templates' with specific verbs and resources. It distinguishes from siblings like 'deploy' (which likely deploys services) by specifying template deployment, though it doesn't explicitly contrast with all sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context ('to the current Railway project and environment') but doesn't explicitly state when to use this vs. alternatives like 'deploy' or 'create-project-and-link'. No guidance on prerequisites, exclusions, or comparison with sibling tools is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate-domainGenerate Railway DomainB
Generate a domain for the currently linked Railway project. If a domain already exists, it will return the existing domain URL. Optionally specify a service to generate the domain for.
| Name | Required | Description | Default |
|---|---|---|---|
| workspacePath | Yes | The path to the workspace to generate domain for | |
| service | No | The name of the service to generate the domain for (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that the tool returns an existing domain URL if one already exists, which is useful behavioral context. However, it doesn't mention potential side effects (e.g., whether this modifies infrastructure, requires permissions, or has rate limits), and the output format is unspecified. For a tool that likely involves infrastructure changes, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with zero waste: the first states the core purpose and behavior, and the second adds optional parameter context. It's front-loaded with the main action and efficiently structured, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (likely involving infrastructure changes), lack of annotations, and no output schema, the description is incomplete. It doesn't explain what a 'domain' entails in this context, potential errors, or the return value format. For a tool with no structured safety or output information, more descriptive detail is needed to guide effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters fully. The description adds minimal value by mentioning the optional 'service' parameter, but doesn't provide additional semantics beyond what's in the schema (e.g., format examples or constraints). With high schema coverage, the baseline is 3, and the description doesn't significantly enhance understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('generate a domain') and resource ('for the currently linked Railway project'), with additional context about returning existing domains. It distinguishes from siblings like 'create-project-and-link' or 'deploy' by focusing specifically on domain generation. However, it doesn't explicitly differentiate from all potential domain-related tools that might exist.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when a domain is needed for a Railway project, mentioning optional service specification. However, it doesn't provide explicit guidance on when to use this versus alternatives like 'deploy' (which might handle domains differently) or 'link-service', nor does it mention prerequisites like having a linked project. The context is clear but lacks specific when/when-not instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-logsGet Railway LogsA
Get build or deployment logs for the currently linked Railway project. This will only pull the latest successful deployment by default, so if you need to inspect a failed build, you'll need to supply a deployment ID. You can optionally specify a deployment ID, service, and environment. If no deployment ID is provided, it will get logs from the latest deployment. The 'lines' and 'filter' parameters require Railway CLI v4.9.0+. Use 'lines' to limit the number of log lines (disables streaming) and 'filter' to search logs by terms or attributes (e.g., '@level:error', 'user', '@level:warn AND rate limit'). For older CLI versions, these parameters will be ignored and logs will stream.
| Name | Required | Description | Default |
|---|---|---|---|
| workspacePath | Yes | The path to the workspace to get logs from | |
| logType | Yes | Type of logs to retrieve: 'build' for build logs or 'deploy' for deployment logs | |
| deploymentId | No | Deployment ID to pull logs from. Omit to pull from latest deployment | |
| service | No | Service to view logs from (defaults to linked service) | |
| environment | No | Environment to view logs from (defaults to linked environment) | |
| lines | No | Number of log lines to return (disables streaming). Requires Railway CLI v4.9.0+. Useful for searching through recent logs. | |
| filter | No | Filter logs by search terms or attributes. Requires Railway CLI v4.9.0+. Examples: 'error', '@level:error', '@level:warn AND rate limit', 'user login', '@status:500'. See https://docs.railway.com/guides/logs for more info. | |
| json | No | JSON provides structured log data with more information (e.g. timestamps) but uses more tokens. Defaults to false to save tokens. Set to true for more detailed logs. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since no annotations are provided, the description carries the full burden of behavioral disclosure. It effectively describes key traits: default behavior (pulls latest successful deployment), prerequisites (requires linked project), version dependencies (CLI v4.9.0+ for some parameters), and effects (disables streaming with 'lines'). However, it lacks details on rate limits, error handling, or authentication needs, which are common for API tools.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded, starting with the core purpose and default behavior. Each sentence adds useful information, such as version requirements and parameter usage, with no wasted text. However, it could be slightly more streamlined by integrating some details more cohesively.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (8 parameters, no output schema, no annotations), the description does a good job of covering usage, behavior, and parameter context. It explains defaults, version dependencies, and practical examples. However, without an output schema, it doesn't detail the return format or structure, which is a minor gap for a log retrieval tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds some context, such as explaining that 'lines' and 'filter' require Railway CLI v4.9.0+ and providing examples for 'filter', but this is minimal beyond the schema. This meets the baseline of 3 for high schema coverage without significant added value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves 'build or deployment logs for the currently linked Railway project,' specifying both the verb ('Get') and resource ('logs'). It distinguishes itself from siblings like 'list-deployments' or 'check-railway-status' by focusing on log retrieval rather than listing or status checking, making the purpose specific and differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use this tool versus alternatives: it specifies that it 'will only pull the latest successful deployment by default' and that for failed builds, you need to supply a deployment ID. It also mentions using 'lines' and 'filter' parameters for specific versions of the Railway CLI, offering clear context and exclusions for usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
link-environmentLink EnvironmentB
Link to a specific Railway environment. If no environment is specified, it will list available environments for selection.
| Name | Required | Description | Default |
|---|---|---|---|
| workspacePath | Yes | The path to the workspace to link the environment to | |
| environmentName | Yes | The environment name to link to |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions the fallback behavior (listing environments if none specified), which is useful. However, it doesn't disclose critical behavioral traits: whether linking is reversible, what permissions are required, if it affects existing configurations, or what the output looks like. For a mutation tool with zero annotation coverage, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences with zero waste. The first sentence states the primary purpose, and the second explains the fallback behavior. It's appropriately sized and front-loaded, with every sentence earning its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given this is a mutation tool (linking implies change) with no annotations and no output schema, the description is incomplete. It doesn't explain what 'linking' entails operationally, what happens after linking, error conditions, or return values. The fallback behavior hint is helpful but insufficient for a tool that modifies state.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters (workspacePath and environmentName). The description adds no additional parameter semantics beyond what the schema provides. It implies environmentName is optional in practice (contradicting the required schema), but doesn't clarify this parameter behavior. Baseline 3 is appropriate when schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Link to a specific Railway environment' specifies the verb (link) and resource (environment). It distinguishes from siblings like 'link-service' by focusing on environments rather than services. However, it doesn't explicitly differentiate from 'create-environment' which creates rather than links.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides implied usage guidance: it mentions that without an environment specified, it will list available environments. This suggests it can be used for discovery. However, it doesn't explicitly state when to use this tool versus alternatives like 'create-environment' or 'list-projects', nor does it mention prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
link-serviceLink Railway ServiceB
Link a service to the current Railway project. If no service is specified, it will list available services
| Name | Required | Description | Default |
|---|---|---|---|
| workspacePath | Yes | The path to the workspace to link the service to | |
| serviceName | No | The service name to link |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It describes the dual behavior (linking or listing based on parameter presence), which is useful. However, it lacks details on permissions required, whether linking is reversible, rate limits, or what happens if the service is already linked—critical for a mutation tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the primary purpose and followed by conditional behavior. Every word earns its place with no redundancy or fluff, making it highly efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description is moderately complete: it covers the tool's dual functionality and parameter dependency. However, as a mutation tool (linking implies a write operation), it should ideally mention authentication needs, side effects, or response format to be fully helpful, leaving some gaps in context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters (workspacePath and serviceName) with descriptions. The description adds value by explaining the conditional behavior: if serviceName is omitted, it lists services instead of linking. This provides context beyond the schema, but doesn't elaborate on parameter formats or constraints, meeting the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Link a service to the current Railway project' specifies the action (link) and resource (service). However, it doesn't explicitly differentiate from sibling tools like 'link-environment' or 'create-project-and-link', which also involve linking operations in the Railway context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides implied usage guidance: it mentions that if no service is specified, it will list available services, suggesting this tool can be used for both linking and listing. However, it doesn't explicitly state when to use this tool versus alternatives like 'list-services' (for listing) or other linking tools, nor does it mention prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list-deploymentsList Railway DeploymentsA
List deployments for a Railway service with IDs, statuses and other metadata. Requires Railway CLI v4.10.0+.
| Name | Required | Description | Default |
|---|---|---|---|
| workspacePath | Yes | The path to the workspace to list deployments from | |
| service | No | Service name or ID to list deployments for (defaults to linked service) | |
| environment | No | Environment to list deployments from (defaults to linked environment) | |
| limit | No | Maximum number of deployments to show (default: 20, max: 1000) | |
| json | No | Return deployments as structured JSON data. When true, the output will contain ids, statuses, and other metadata |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions a CLI version requirement, which is useful context, but does not disclose other behavioral traits such as whether this is a read-only operation, potential rate limits, authentication needs, or what happens if parameters are invalid. The description lacks details on output format or pagination behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose in the first sentence, and the second sentence adds essential prerequisite information without redundancy. Every sentence earns its place, making it appropriately sized and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (5 parameters, no output schema, no annotations), the description is minimally adequate. It covers the purpose and a prerequisite but lacks details on behavioral traits, output format, or error handling. Without annotations or output schema, more context would improve completeness for a listing tool with multiple parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds no additional meaning beyond what the schema provides, such as explaining parameter interactions or default behaviors. Baseline 3 is appropriate as the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('List deployments') and the resource ('for a Railway service'), specifying what information is returned ('IDs, statuses and other metadata'). It distinguishes this from sibling tools like 'deploy' or 'get-logs' by focusing on listing rather than creating or retrieving logs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by specifying a prerequisite ('Requires Railway CLI v4.10.0+'), but it does not explicitly state when to use this tool versus alternatives like 'list-services' or 'list-projects'. No exclusions or specific contexts for usage are provided beyond the CLI version requirement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list-projectsList Railway ProjectsB
List all Railway projects for the currently logged in account
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It states it's a list operation but doesn't describe return format (e.g., pagination, fields included), error conditions, or authentication requirements beyond 'currently logged in account'. This leaves significant gaps for a tool that likely returns structured data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with zero waste. It's front-loaded with the core action and resource, and every word contributes to understanding the tool's purpose without redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description is incomplete. It doesn't explain what the output looks like (e.g., list of project objects, error responses), which is critical for a list tool. While the purpose is clear, the lack of behavioral and output details makes it insufficient for full agent understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description appropriately doesn't discuss parameters, focusing on the tool's purpose. A baseline of 4 is applied since no parameters exist, and the description doesn't introduce unnecessary complexity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('List all') and resource ('Railway projects'), specifying scope ('for the currently logged in account'). It distinguishes from siblings like 'create-project-and-link' or 'list-services' by focusing on projects only. However, it doesn't explicitly differentiate from other list tools like 'list-deployments' or 'list-services' beyond the resource name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., authentication status), compare with other list tools, or indicate scenarios where it's preferred over other project-related tools like 'create-project-and-link'. The context is implied but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list-servicesList Railway ServicesC
List all services for the currently linked Railway project
| Name | Required | Description | Default |
|---|---|---|---|
| workspacePath | Yes | The path to the workspace to list services from |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the scope ('currently linked Railway project') but fails to describe return format, pagination, error conditions, or authentication needs. For a read operation with zero annotation coverage, this leaves significant gaps in understanding how the tool behaves.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It is appropriately sized and front-loaded, with zero waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (1 parameter, no output schema, no annotations), the description is minimal but incomplete. It lacks details on return values, error handling, and usage context relative to siblings, making it insufficient for full agent understanding despite the low complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents the single parameter 'workspacePath'. The description adds no additional meaning beyond implying context about the linked project, which doesn't enhance parameter understanding. Baseline 3 is appropriate when the schema does all the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('List all services') and the target resource ('for the currently linked Railway project'), providing specific verb+resource pairing. However, it doesn't distinguish this tool from sibling tools like 'list-projects' or 'list-deployments' beyond the resource type, missing explicit differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'list-projects' or 'list-deployments', nor does it mention prerequisites such as having a linked project. It only states the basic function without contextual usage information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list-variablesList Railway VariablesC
Show variables for the active environment
| Name | Required | Description | Default |
|---|---|---|---|
| workspacePath | Yes | The path to the workspace to list variables from | |
| service | No | The service to show variables for (optional) | |
| environment | No | The environment to show variables for (optional) | |
| kv | No | Show variables in KV format (optional) | |
| json | No | Output in JSON format (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states it 'shows' variables, implying a read operation without details on permissions, rate limits, or output format. It doesn't disclose whether this is a safe read, if it requires authentication, or how results are structured, leaving significant behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose without unnecessary words. It's appropriately sized for a listing tool, with zero wasted text, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description is incomplete for a tool with 5 parameters. It lacks details on behavioral traits, output format, or error handling, which are crucial for an agent to use it correctly. The minimal description doesn't compensate for the missing structured data.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 100% description coverage, so parameters are well-documented in the schema itself. The description adds no additional parameter semantics beyond implying 'active environment' context, which aligns with the optional 'environment' parameter but doesn't provide extra meaning. Baseline 3 is appropriate as the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Show') and resource ('variables for the active environment'), making the purpose understandable. However, it doesn't explicitly differentiate from sibling tools like 'set-variables' or 'list-services', which would require mentioning it's a read-only listing operation versus mutation or other resource types.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides minimal guidance by implying usage in the 'active environment', but lacks explicit when-to-use instructions, prerequisites, or alternatives. It doesn't clarify when to use this versus other listing tools like 'list-services' or 'list-deployments', or how it relates to 'set-variables' for mutation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set-variablesSet Railway VariablesC
Set environment variables for the active environment
| Name | Required | Description | Default |
|---|---|---|---|
| workspacePath | Yes | The path to the workspace to set variables in | |
| variables | Yes | Array of '{key}={value}' environment variable pairs to set | |
| service | No | The service to set variables for (optional) | |
| environment | No | The environment to set variables for (optional) | |
| skipDeploys | No | Skip triggering deploys when setting variables (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool sets environment variables, implying a write/mutation operation, but doesn't mention critical behaviors like whether this requires specific permissions, if changes are reversible, potential side effects (e.g., triggering deploys), or rate limits. This is inadequate for a mutation tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It's appropriately sized and front-loaded, making it easy to parse quickly while conveying the essential action and target.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (mutation operation with 5 parameters) and lack of both annotations and output schema, the description is insufficient. It doesn't explain what happens after setting variables (e.g., success/failure responses, whether deploys are triggered by default), leaving significant gaps for an AI agent to understand the tool's full behavior and outcomes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 5 parameters thoroughly. The description doesn't add any parameter-specific information beyond what's in the schema, such as examples or constraints not captured in structured fields. This meets the baseline for high schema coverage but doesn't provide extra value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Set') and resource ('environment variables for the active environment'), making the purpose immediately understandable. However, it doesn't explicitly distinguish this tool from sibling tools like 'list-variables' or 'create-environment', which could help with similar operations in the Railway context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'list-variables' for checking existing variables or 'create-environment' for environment setup. It mentions 'active environment' but doesn't clarify prerequisites or contextual constraints, leaving usage scenarios ambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
2 tool updates
v1.0.0- Changed
get-logs3 fields changed- added
Input schema / properties / filterAdded value: +{ + "description": "Filter logs by search terms or attributes. Requires Railway CLI v4.9.0+. Examples: 'error', '@level:error', '@level:warn AND rate limit', 'user login', '@status:500'. See https://docs.railway.com/guides/logs for more info.", + "type": "string" +} - added
Input schema / properties / jsonAdded value: +{ + "description": "JSON provides structured log data with more information (e.g. timestamps) but uses more tokens. Defaults to false to save tokens. Set to true for more detailed logs.", + "type": "boolean" +} - added
Input schema / properties / linesAdded value: +{ + "description": "Number of log lines to return (disables streaming). Requires Railway CLI v4.9.0+. Useful for searching through recent logs.", + "type": "number" +}
- Added
list-deployments
13 tool updates
- First observed
check-railway-status - First observed
create-environment - First observed
create-project-and-link - First observed
deploy - First observed
deploy-template - First observed
generate-domain - First observed
get-logs - First observed
link-environment - First observed
link-service - First observed
list-projects - First observed
list-services - First observed
list-variables - First observed
set-variables
TDQS
Most tools have distinct purposes targeting specific Railway resources like projects, environments, services, deployments, and variables, with clear action verbs. However, 'deploy' and 'deploy-template' could be confused as both handle deployment, though their descriptions clarify one is for directory uploads and the other for templates.
Tool names predominantly follow a consistent verb-noun pattern (e.g., create-environment, list-services, set-variables), with clear and readable conventions. Minor deviations include 'check-railway-status' using a verb-noun-adjective structure and hyphenated names throughout, but overall consistency is high.
With 14 tools, the count is well-scoped for managing Railway projects, covering setup, deployment, logging, and resource management. Each tool serves a clear purpose without redundancy, fitting typical server tool ranges and the domain's complexity.
The tool set provides comprehensive coverage for Railway operations, including project and environment creation, deployment, logging, variable management, and listing resources. There are no obvious gaps; agents can perform full lifecycle management from setup to monitoring.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Develop, manage, and debug Railway projects, services, and deployments from within agents.
Deploy and manage your apps, databases, storage, and scheduled jobs from your AI agent
Inspect and control your Northflank projects, services, jobs, and builds from your AI assistant.
Plan Salesforce deploys, open pull requests and trigger pipelines from your AI client.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables management of Railway.app infrastructure through natural language, including deploying services from GitHub repos or Docker images, managing environment variables, monitoring deployments, and configuring networking and volumes.3658MIT
- AlicenseAqualityDmaintenanceEnables management of Railway.app infrastructure through natural language, including deploying services, managing environment variables, monitoring deployments, and controlling project resources.3658MIT
- AlicenseAqualityDmaintenanceEnables management of Railway.app infrastructure through natural language, including deploying services, managing environment variables, monitoring deployments, and handling databases and volumes.3658MIT
- AlicenseAqualityDmaintenanceEnables management of Railway.app infrastructure through natural language, allowing users to deploy services, manage environment variables, monitor deployments, and configure projects directly from MCP clients like Claude.3858MIT
Appeared in Searches
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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