Railway MCP Server
Enables management of Railway projects, services, and deployments, including viewing project details, monitoring deployment status and logs, redeploying and restarting services, and managing environment variables.
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 Servershow me the deployment logs for my backend service"
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
Model Context Protocol (MCP) сервер для Railway API - позволяет AI системам (Claude, Cursor и другим) напрямую управлять Railway проектами, деплоями и сервисами.
🚀 Возможности
Управление проектами
Просмотр всех проектов и их сервисов
Получение детальной информации о проекте
Мониторинг статуса сервисов
Управление деплоями
Просмотр логов деплоев (build logs, deploy logs)
Запуск нового деплоя (redeploy)
Отмена текущего деплоя
Перезапуск деплоя
Управление переменными окружения
Просмотр переменных сервиса
Создание/обновление переменных
Удаление переменных
Мониторинг
Статус деплоев в реальном времени
URL адреса сервисов
Метаданные проектов и сервисов
Related MCP server: Railway MCP Server
📦 Установка
Требования
Node.js 18+
Railway API токен
Быстрая установка
# Клонировать репозиторий
git clone <your-repo-url>
cd railway-mcp-server
# Установить зависимости
npm install
# Собрать проект
npm run buildПолучение Railway API токена
Зайдите на Railway
Перейдите в Account Settings → Tokens
Создайте новый токен
Скопируйте токен
🔧 Настройка
Для Claude Desktop
Добавьте в конфигурацию Claude Desktop (claude_desktop_config.json):
На macOS:
~/Library/Application\ Support/Claude/claude_desktop_config.jsonНа Windows:
%APPDATA%/Claude/claude_desktop_config.jsonКонфигурация:
{
"mcpServers": {
"railway": {
"command": "node",
"args": ["/absolute/path/to/railway-mcp-server/dist/index.js"],
"env": {
"RAILWAY_TOKEN": "your-railway-token-here"
}
}
}
}Для Cursor
Добавьте в настройки Cursor:
{
"mcpServers": {
"railway": {
"command": "node",
"args": ["/absolute/path/to/railway-mcp-server/dist/index.js"],
"env": {
"RAILWAY_TOKEN": "your-railway-token-here"
}
}
}
}🛠️ Использование
Основные команды
После настройки вы можете использовать следующие команды в Claude или Cursor:
Просмотр проектов
Покажи мне все мои Railway проектыПросмотр конкретного проекта
Покажи детали проекта {project-id}Просмотр логов деплоя
Покажи логи деплоя {deployment-id}Перезапуск сервиса
Перезапусти сервис {service-id}Управление переменными
Установи переменную NODE_ENV=production для сервиса {service-id}Доступные инструменты
Инструмент | Описание |
| Получить все проекты |
| Получить детали проекта |
| Получить детали сервиса |
| Получить логи деплоя |
| Перезапустить сервис |
| Отменить деплой |
| Перезапустить деплой |
| Обновить переменную |
| Удалить переменную |
🧪 Тестирование
Использование MCP Inspector
# Запустить инспектор для отладки
npm run inspectorОткройте браузер по указанному URL для интерактивного тестирования.
Тестирование из командной строки
# Установить переменную окружения
export RAILWAY_TOKEN="your-token-here"
# Запустить сервер
npm start📖 Примеры использования
Мониторинг деплоев
Claude: Покажи мне статус всех деплоев в проекте MarvinУправление переменными
Claude: Установи переменную DATABASE_URL для backend сервисаАнализ логов
Claude: Покажи логи последнего деплоя и найди ошибкиАвтоматический редеплой
Claude: Если деплой frontend завершился с ошибкой, перезапусти его🔒 Безопасность
Токены: Railway токены хранятся только в переменных окружения
Локальное выполнение: MCP сервер работает локально
Подтверждение действий: Изменяющие операции требуют подтверждения
Изоляция: Каждый сервис работает в изолированном контексте
🐛 Отладка
Проверка токена
# Проверить валидность токена
curl -H "Authorization: Bearer your-token" https://backboard.railway.app/graphql/v2Логи сервера
# Просмотр логов
npm run devОбщие проблемы
"RAILWAY_TOKEN is required" - Убедитесь, что токен установлен
"Unauthorized" - Проверьте корректность токена
"Tool not found" - Перезапустите Claude Desktop
📚 Дополнительные ресурсы
🤝 Содействие
Чтобы внести свой вклад:
Форкните репозиторий
Создайте feature branch
Внесите изменения
Создайте pull request
📄 Лицензия
MIT License - смотрите файл LICENSE для деталей.
🆘 Поддержка
Создайте GitHub Issue для багов
Обратитесь в Railway Discord для вопросов по API
Документация MCP для общих вопросов
Создано командой Marvin Studio 🚀
Available Tools
9 toolscancel_deploymentC
Cancel a running deployment
| Name | Required | Description | Default |
|---|---|---|---|
| deploymentId | Yes | The Railway deployment ID to cancel |
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 action ('Cancel') but doesn't explain what 'cancel' entails (e.g., whether it stops the deployment immediately, if it's reversible, what permissions are required, or any side effects). This leaves significant gaps in understanding the tool's behavior beyond the basic action.
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 with zero waste—it directly states the tool's purpose without unnecessary words. It's appropriately sized and front-loaded, making it easy to understand at a glance, which is ideal for conciseness.
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 a cancellation operation (a potentially destructive action), the lack of annotations, and no output schema, the description is incomplete. It doesn't cover behavioral aspects like reversibility, permissions, or response format, which are crucial for safe and effective use. This leaves significant gaps in contextual 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 100% description coverage, with the 'deploymentId' parameter clearly documented. The description doesn't add any meaning beyond what the schema provides (e.g., it doesn't specify format or source for the ID). Since the schema does the heavy lifting, the baseline score of 3 is appropriate, as the description doesn't compensate but also doesn't detract.
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 ('Cancel') and target ('a running deployment'), providing a specific verb+resource combination. However, it doesn't distinguish this tool from potential alternatives like 'restart_deployment' or 'redeploy_service' among the sibling tools, which would require explicit differentiation for a perfect score.
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 'restart_deployment' or 'redeploy_service', nor does it mention prerequisites (e.g., the deployment must be running). It implies usage for canceling deployments but lacks explicit context or exclusions, resulting in minimal guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_service_variableC
Delete an environment variable from a service
| Name | Required | Description | Default |
|---|---|---|---|
| serviceId | Yes | The Railway service ID | |
| name | Yes | The environment variable name to delete |
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 destructive action ('Delete') but fails to mention critical details like required permissions, whether the deletion is permanent or reversible, potential side effects on the service, or error handling. This leaves significant gaps 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 a single, clear sentence with no wasted words, making it highly efficient and easy to parse. It is appropriately sized for a simple tool and front-loads the key information effectively.
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 that this is a destructive mutation tool with no annotations and no output schema, the description is incomplete. It lacks details on behavioral traits (e.g., permanence, permissions), usage context, and expected outcomes, which are essential for safe and effective tool invocation in this scenario.
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 input schema already documents both parameters ('serviceId' and 'name') adequately. The description adds no additional meaning beyond what the schema provides, such as format examples or constraints, but doesn't need to compensate for gaps, resulting in a baseline score.
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 ('Delete') and the resource ('an environment variable from a service'), making the purpose understandable. However, it doesn't explicitly differentiate from sibling tools like 'update_service_variable' beyond the action verb, which slightly limits its specificity.
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 'update_service_variable' for modifying variables or other sibling tools for different operations. It lacks context about prerequisites, dependencies, or scenarios where deletion is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_deployment_logsB
Get logs for a specific deployment
| Name | Required | Description | Default |
|---|---|---|---|
| deploymentId | Yes | The Railway deployment ID |
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 it 'gets logs' which implies a read-only operation, but doesn't specify whether this requires authentication, has rate limits, returns structured vs. unstructured data, or includes pagination/timestamp filtering. For a logging tool with zero annotation coverage, this leaves 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 directly states the tool's function without unnecessary words. It's appropriately sized for a simple retrieval tool and front-loads the core purpose 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 single-parameter read operation with good schema coverage but no annotations or output schema, the description is minimally adequate. It identifies the core function but lacks important context about log format, volume, authentication needs, and how it differs from sibling tools. The absence of an output schema means the description should ideally hint at return values, which it doesn't.
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 100% description coverage, with the single parameter 'deploymentId' clearly documented as 'The Railway deployment ID'. The description doesn't add any additional semantic context beyond this (e.g., where to find the ID, format examples, or related parameters like log level/time range). Baseline 3 is appropriate when 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 ('Get logs') and target resource ('for a specific deployment'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'get_deployment' or 'get_service' that might also retrieve deployment-related information, nor does it specify what type of logs (e.g., build, runtime, error).
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. There's no mention of prerequisites (e.g., needing a deployment ID from another operation), when this is appropriate versus other logging tools (if any exist), or what context it's meant for (debugging, monitoring, etc.).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_projectC
Get details of a specific Railway project
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | The Railway project ID |
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 this is a read operation ('Get details'), but doesn't mention authentication requirements, rate limits, error conditions, or what details are returned. This leaves significant gaps for a tool that likely interacts with an external API.
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 for a simple read operation and front-loaded with the essential information.
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 tool with no annotations and no output schema, the description is insufficient. It doesn't explain what details are returned, potential error cases, or behavioral constraints. Given the complexity of interacting with Railway projects and the lack of structured information, more context is needed.
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%, with the single parameter 'projectId' clearly documented in the schema. The description doesn't add any additional meaning about the parameter beyond what's in the schema, so it meets 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 verb ('Get') and resource ('details of a specific Railway project'), making the purpose understandable. However, it doesn't explicitly differentiate from sibling 'get_projects' (which likely lists multiple projects) or 'get_service' (which focuses on services rather than projects), missing full sibling distinction.
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 'get_projects' or 'get_service'. It lacks context about prerequisites, such as needing a project ID, or when this tool is appropriate compared to other read operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_projectsB
Get all Railway projects and their services
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
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 states the tool retrieves data ('Get'), implying a read operation, but doesn't disclose behavioral traits such as rate limits, authentication needs, pagination, or what 'all' entails (e.g., scope or limitations). This leaves significant gaps for an agent.
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 front-loaded and wastes no space, 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 tool's simplicity (0 parameters, no output schema) and lack of annotations, the description is minimally adequate but incomplete. It covers the basic action but misses behavioral context (e.g., how data is returned, any constraints), leaving room for improvement 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?
The tool has 0 parameters, and schema description coverage is 100%, so no parameter documentation is needed. The description appropriately doesn't discuss parameters, earning a high baseline score as it avoids redundancy.
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 ('Get') and resource ('Railway projects and their services'), making the purpose evident. However, it doesn't differentiate from sibling tools like 'get_project' (singular vs. plural), leaving some ambiguity about when to use each.
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?
No guidance is provided on when to use this tool versus alternatives like 'get_project' (singular) or other sibling tools. The description implies a broad retrieval but doesn't specify contexts, prerequisites, or exclusions for usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_serviceB
Get details of a specific Railway service including deployments and variables
| Name | Required | Description | Default |
|---|---|---|---|
| serviceId | Yes | The Railway service ID |
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 this is a read operation ('Get details'), which is clear, but lacks information on permissions required, rate limits, error handling, or what specific details are returned beyond 'deployments and variables'. For a tool with no annotations, this leaves significant gaps in understanding how it behaves in practice.
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 ('Get details of a specific Railway service') and specifies key inclusions ('including deployments and variables'). There is no wasted verbiage, and every word contributes to understanding the tool's function.
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 moderate complexity (retrieving service details with no output schema), the description is minimally adequate. It covers the purpose and scope but lacks details on return format, error cases, or behavioral traits. With no annotations and no output schema, the description should do more to compensate, but it at least provides a clear starting point.
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 100% description coverage, with the single parameter 'serviceId' clearly documented. The description adds no additional parameter semantics beyond what the schema provides, such as format examples or constraints. Since schema coverage is high, the baseline score of 3 is appropriate, as the description doesn't need to compensate but also doesn't add value here.
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 verb 'Get' and the resource 'Railway service details', specifying what information is retrieved (details including deployments and variables). It distinguishes from siblings like get_project/get_projects by focusing on a specific service rather than projects. However, it doesn't explicitly contrast with other service-related tools like update_service_variable.
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 needing service details, deployments, and variables, which differentiates it from siblings that handle deployments (cancel_deployment, restart_deployment) or variables (delete_service_variable, update_service_variable). However, it lacks explicit guidance on when to use this versus get_project (which might include service info) or clear exclusions for alternative scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
redeploy_serviceC
Trigger a new deployment for a service
| Name | Required | Description | Default |
|---|---|---|---|
| serviceId | Yes | The Railway service ID to redeploy |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral disclosure. While 'Trigger a new deployment' implies a write/mutation operation, it doesn't disclose important behavioral aspects like whether this requires specific permissions, whether it's idempotent, what happens to existing deployments, or potential side effects. The description is minimal and lacks critical context for a deployment 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 extremely concise - a single sentence that directly states the tool's purpose without any unnecessary words. It's perfectly front-loaded with the core functionality immediately apparent.
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/mutation tool with no annotations and no output schema, the description is insufficient. It doesn't explain what happens during redeployment, what the expected outcome is, whether there are limitations or constraints, or how this differs from related deployment operations. The minimal description leaves too many questions unanswered for effective tool selection.
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%, with the single parameter 'serviceId' well-documented in the schema. The description doesn't add any parameter-specific information beyond what's already in the schema, so it meets the baseline expectation when schema coverage is complete.
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 ('Trigger a new deployment') and resource ('for a service'), making the purpose immediately understandable. However, it doesn't differentiate this tool from sibling tools like 'restart_deployment' or 'cancel_deployment', which appear related to deployment operations.
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. With sibling tools like 'restart_deployment' and 'cancel_deployment' available, there's no indication of how 'redeploy_service' differs from them or when one should be chosen over another.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
restart_deploymentC
Restart a deployment
| Name | Required | Description | Default |
|---|---|---|---|
| deploymentId | Yes | The Railway deployment ID to restart |
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. 'Restart a deployment' implies a mutation that could disrupt service, but it doesn't clarify whether this requires specific permissions, if it's reversible, what side effects occur (e.g., downtime), or response behavior. For a mutation tool with zero annotation coverage, 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 extremely concise at three words, with zero wasted language. It's front-loaded with the core action and resource, making it easy to parse. This efficiency is commendable, though it comes at the cost of detail.
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 a deployment restart (a mutation with potential service impact), the description is inadequate. With no annotations, no output schema, and minimal behavioral context, it fails to provide enough information for safe and effective use. The agent must infer critical details like permissions, effects, and error handling.
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 100% description coverage, with the single parameter 'deploymentId' documented as 'The Railway deployment ID to restart'. The description adds no additional meaning beyond this, such as format examples or constraints. With high schema coverage, the baseline score of 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 'Restart a deployment' clearly states the action (restart) and target resource (deployment), which is better than a tautology. However, it lacks specificity about what 'restart' entails operationally and doesn't distinguish this tool from sibling tools like 'redeploy_service' or 'cancel_deployment', leaving ambiguity about when to use each.
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. With siblings like 'redeploy_service' and 'cancel_deployment' available, there's no indication of prerequisites, typical use cases, or exclusions. This forces the agent to guess based on tool names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_service_variableC
Update or create an environment variable for a service
| Name | Required | Description | Default |
|---|---|---|---|
| serviceId | Yes | The Railway service ID | |
| name | Yes | The environment variable name | |
| value | Yes | The environment variable value |
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 action ('Update or create') but lacks critical details like whether this requires specific permissions, if changes are reversible, potential side effects (e.g., service restarts), 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 front-loads the core purpose without unnecessary words. Every part earns its place by clearly stating the action and resource, 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 of a mutation tool with no annotations and no output schema, the description is incomplete. It fails to address behavioral aspects like permissions, side effects, or response format, leaving significant gaps for an AI agent to understand how to use this tool effectively 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 all three parameters (serviceId, name, value) with clear descriptions. The description adds no additional meaning beyond implying the parameters relate to environment variables, which is already evident from the schema. Baseline 3 is appropriate when 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 ('Update or create') and resource ('environment variable for a service'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'delete_service_variable' beyond the obvious action difference, missing explicit scope or context distinctions.
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 when to update versus create, or how it relates to siblings like 'delete_service_variable' or 'redeploy_service'. There are no prerequisites, exclusions, or contextual hints mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool has a clearly distinct purpose targeting specific resources and actions, such as cancel_deployment vs. restart_deployment, and get_project vs. get_service, with no overlapping functionality that would cause confusion.
All tool names follow a consistent verb_noun pattern using snake_case, such as get_deployment_logs and update_service_variable, with no deviations in style or convention throughout the set.
With 9 tools, the server is well-scoped for managing Railway projects, services, deployments, and environment variables, providing a focused set that covers essential operations without being overwhelming or insufficient.
The tool set offers strong coverage for deployment management, environment variables, and project/service queries, but minor gaps exist, such as the inability to create or delete projects or services, which agents might need to work around.
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.
Plan Salesforce deploys, open pull requests and trigger pipelines from your AI client.
Build, validate, deploy — HTTP APIs, cron jobs, webhooks and MCP tools — from your AI client.
Deploy and manage your apps, databases, storage, and scheduled jobs from your AI agent
Related MCP Servers
AlicenseAqualityFmaintenanceEnables interaction with Railway cloud platform through the CLI to manage projects, services, deployments, and environments. Supports creating projects, deploying templates, managing environment variables, and monitoring logs through natural language commands.145,931192MIT- 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
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/allkindsxyz/railway-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server