Skip to main content
Railway and Render are managed platforms that deploy directly from a GitHub repository. Both handle HTTPS, DNS, and container orchestration automatically — no VPS configuration needed.
Both platforms offer free tiers that spin down idle services after a period of inactivity. A sleeping server cannot receive requests from Claude.ai. For reliable operation, use a paid plan or deploy to an always-on host (a VPS with Docker or bare Node.js).

Deploy on Railway

1

Create a new project

Go to railway.app and click New Project.
2

Connect your GitHub repository

Choose Deploy from GitHub repo and select your Reacher repository.Railway detects the Dockerfile automatically and uses it to build the image.
3

Configure the start command

In the service settings under Deploy, confirm the start command is:
node index.js
If Railway does not detect it automatically, set it explicitly.
4

Set environment variables

Navigate to the Variables tab of your service and add the following:
VariableRequiredValue
MCP_SECRETYesA random secret (openssl rand -hex 32)
TAILSCALE_API_KEYYesYour Tailscale API key
GITHUB_TOKENYesYour GitHub personal access token
PROXY_ALLOWED_DOMAINSYesComma-separated list, e.g. api.github.com
PORTNoRailway injects PORT automatically; you can omit this
Add any additional variables from .env.example that apply to your setup.
5

Deploy

Railway builds and deploys automatically after you save the variables. Watch the build logs from the Deployments tab.
6

Get your public URL

Once deployed, go to Settings > Networking and click Generate Domain. Railway assigns a public HTTPS URL.Use this to connect Claude.ai:
https://your-app.up.railway.app/mcp?token=YOUR_MCP_SECRET
7

Connect to Claude.ai

Go to Claude.ai > Settings > Integrations > Add custom connector and paste the URL from the previous step.

Auto-deploys

Railway redeploys automatically on every push to your connected branch. No manual trigger needed.

Health check path

For both platforms, set the health check path to /health. Note that this endpoint requires the MCP_SECRET token as a query parameter (?token=YOUR_SECRET) — configure your platform’s health check accordingly, or use a platform-level TCP check on port 3000 instead.

Environment variable reference

See .env.example for the full list of supported variables and descriptions.