@crazyrabbitltc/railway-mcp
Version:
Railway MCP Server - 146+ tools with 100% Railway API coverage, comprehensive MCP testing framework, and real infrastructure management through AI assistants. Enhanced version with enterprise features, based on original work by Jason Tan.
75 lines (74 loc) • 2.85 kB
JavaScript
import { createTool, formatToolDescription } from '../utils/tools.js';
import { z } from 'zod';
import { tcpProxyService } from '../services/tcpProxy.service.js';
export const tcpProxyTools = [
createTool("tcp_proxy_list", formatToolDescription({
type: 'API',
description: "List all TCP proxies for a service in a specific environment",
bestFor: [
"Viewing TCP proxy configurations",
"Managing external access",
"Auditing service endpoints"
],
relations: {
prerequisites: ["service_list"],
nextSteps: ["tcp_proxy_create"],
related: ["domain_list", "service_info"]
}
}), {
environmentId: z.string().describe("ID of the environment containing the service"),
serviceId: z.string().describe("ID of the service to list TCP proxies for")
}, async ({ environmentId, serviceId }) => {
return tcpProxyService.listTcpProxies(environmentId, serviceId);
}),
createTool("tcp_proxy_create", formatToolDescription({
type: 'API',
description: "Create a new TCP proxy for a service",
bestFor: [
"Setting up database access",
"Configuring external connections",
"Exposing TCP services"
],
notFor: [
"HTTP/HTTPS endpoints (use domain_create)",
"Internal service communication"
],
relations: {
prerequisites: ["service_list"],
nextSteps: ["tcp_proxy_list"],
alternatives: ["domain_create"],
related: ["service_info", "service_update"]
}
}), {
environmentId: z.string().describe("ID of the environment (usually obtained from service_info)"),
serviceId: z.string().describe("ID of the service"),
applicationPort: z.number().describe("Port of application/service to proxy, usually based off of the service's Dockerfile or designated running port.")
}, async ({ environmentId, serviceId, applicationPort }) => {
return tcpProxyService.createTcpProxy({
environmentId,
serviceId,
applicationPort
});
}),
createTool("tcp_proxy_delete", formatToolDescription({
type: 'API',
description: "Delete a TCP proxy",
bestFor: [
"Removing unused proxies",
"Security management",
"Endpoint cleanup"
],
notFor: [
"Temporary proxy disabling",
"Port updates"
],
relations: {
prerequisites: ["tcp_proxy_list"],
related: ["service_update"]
}
}), {
proxyId: z.string().describe("ID of the TCP proxy to delete")
}, async ({ proxyId }) => {
return tcpProxyService.deleteTcpProxy(proxyId);
})
];