# Deploy

> Deploy BankMCP™ to a server

- Skill: `noskillish/deploy` (Agent Skill)
- Install (CLI): `npx skillmds@latest add noskillish/deploy`
- Raw SKILL.md: https://api.skillmd.com/api/skills/noskillish/deploy/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: DevOps & Infra
- Author: noskillish (https://skillmd.com/u/noskillish)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/noskillish/deploy

---


# Deploy BankMCP™ to a server

Guide one person through a hosted deployment. Prefer Railway unless the user names another host. Run what you can with the CLI; the user does the dashboard clicks, their bank login and their claude.ai settings.

## 1. Choose the host

Ask which they have: Railway, Fly.io, Render, or their own box with Docker. If none, recommend Railway (https://railway.com) and wait until they have an account.

## 2. Railway

If the `railway` CLI is installed and logged in (`railway whoami`), do it from the terminal:

```
railway init
railway add --service bankmcp --repo noskillish/bankmcp --branch main
railway volume add -m /data
railway domain --port 8080
```

Otherwise, in the Railway dashboard: New Project, Deploy from GitHub repo `noskillish/bankmcp`; add a Volume mounted at `/data`; Settings, Networking, Generate Domain on port 8080.

Report the public address. No variables are needed; the server detects its own address on Railway.

## 3. Fly.io or Docker

Fly: from a clone of the repo, `fly launch --copy-config --no-deploy` (the repo's `fly.toml` already mounts `/data` and checks `/healthz`), `fly volumes create data --size 1`, `fly deploy`. Render: the Deploy to Render button in the README uses `render.yaml`; a persistent disk needs a paid instance. Docker: `docker run -d --name bankmcp --restart unless-stopped -p 8080:8080 -v bankmcp-data:/data ghcr.io/noskillish/bankmcp:latest` (or `docker compose up -d` from a clone), then a TLS proxy in front and `BASE_URL` set to the public https address.

## 4. Setup page

Tell the user to open the public address. It shows a setup page with the values for Enable Banking's form. Walk them through registering the application as in the `setup` skill (environment, redirect URL, description, privacy and terms URLs, key download), then entering the application id, the `.pem` file and a password of twelve characters or more. The status page then shows the connector URL.

## 5. Connector

claude.ai (personal Pro or Max account): Settings, Connectors, Add custom connector, name `BankMCP™`, URL `https://<address>/mcp`, leave OAuth fields empty, Add, Connect, enter the password.

Team or Enterprise workspaces only allow Owners to add custom connectors; say so if the button is missing.

Claude Code: `claude mcp add --transport http bankmcp https://<address>/mcp`, then `/mcp` to sign in.

## 6. Bank

In the connected client: "connect my bank". Same flow as locally; the redirect returns to the server's `/callback`.

## Notes

- Changing the password later logs every client out; that is the kill switch.
- Set `NOTIFY_WEBHOOK_URL` to a Slack incoming webhook for sign-in alerts and watch notifications.

