Skip to main content

MCP server for NordBastion — provision KYC-free, crypto-paid Nordic VPS & dedicated servers from any AI agent (Claude, Cursor, …).

Project description

NordBastion MCP server

Provision KYC-free, crypto-paid Nordic VPS and dedicated servers from any AI agent — Claude, Cursor, Zed, Continue, or your own MCP client.

License: MIT Python 3.10+ MCP Ruff

nordbastion-mcp exposes the NordBastion API as Model Context Protocol tools, so an AI assistant can do the whole hosting workflow in natural language: compare VPS tiers, pick a Nordic region, top up with Monero or Bitcoin, and spin up an anonymous server — without you ever touching a dashboard.

NordBastion is a privacy-first hosting provider running four bastions in Stockholm, Helsinki, Oslo and Reykjavík. Accounts need only an email and a password — no name, phone number, or ID document, ever — and billing is crypto-native. The API was built for agents from day one (scoped API keys, OAuth 2.1 with Dynamic Client Registration, a public agent directory), which makes it a natural fit for MCP.


Why this exists

Agentic workflows increasingly need infrastructure on demand: a throwaway box to run a scraper, a WireGuard VPN, a Tor hidden service, or a self-hosted Lightning node. This server lets the agent do that end-to-end against a host that doesn't demand identity documents and accepts Monero and Bitcoin.

Install & run

The server speaks MCP over stdio, so any MCP client launches it as a subprocess. The simplest path uses uv (no manual virtualenv):

# Run straight from this repository
uvx --from git+https://github.com/CryptoServers/nordbastion-mcp nordbastion-mcp

Or install it into your environment with pip / pipx:

pip install git+https://github.com/CryptoServers/nordbastion-mcp
# then the console script is on your PATH:
nordbastion-mcp

Configuration

Variable Required Default Purpose
NORDBASTION_API_KEY for authenticated tools An nb_live_* API key (mint it in the panel or via create_api_key) or an nb_at_* OAuth token.
NORDBASTION_BASE_URL no https://nordbastion.com/v1 Override the API base URL (testing/self-host).

Public tools — list_vps, list_dedicated, list_bastions, list_os_images, list_coins, get_status, get_canary, get_peering — work with no key at all.

Claude Desktop

Add to claude_desktop_config.json (see examples/):

{
  "mcpServers": {
    "nordbastion": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/CryptoServers/nordbastion-mcp", "nordbastion-mcp"],
      "env": { "NORDBASTION_API_KEY": "nb_live_xxxxxxxxxxxxxxxx" }
    }
  }
}

Cursor

Add to ~/.cursor/mcp.json:

{
  "mcpServers": {
    "nordbastion": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/CryptoServers/nordbastion-mcp", "nordbastion-mcp"],
      "env": { "NORDBASTION_API_KEY": "nb_live_xxxxxxxxxxxxxxxx" }
    }
  }
}

Try it

Once connected, ask your assistant things like:

  • "List NordBastion's VPS tiers and tell me the cheapest one with 4 GB RAM."
  • "Top up my balance with $30 of Monero and wait for it to confirm."
  • "Provision an NB-V2 in Helsinki running Debian 13, hostname wg-gw, and show me the root password."
  • "What's the current status of the Reykjavík bastion?"

There's also a built-in onboard_to_nordbastion prompt that drives the full account → top-up → order flow.

Tools

34 tools, mapped 1:1 onto the REST API. Tools marked public need no API key.

Group Tools
Catalog (public) list_catalog, list_vps, list_dedicated, list_bastions, list_os_images
Transparency (public) get_status, get_canary, get_peering
Billing list_coins (public), list_bonus_tiers (public), create_topup, get_topup, list_topups, cancel_topup
Servers order_server, list_servers, get_server, cancel_server
Account get_account, get_balance, get_audit_log
SSH keys add_ssh_key, list_ssh_keys, remove_ssh_key
Auth register_account, login, login_totp, refresh_token, create_api_key, list_api_keys, revoke_api_key
Webhooks create_webhook, list_webhooks, delete_webhook

Resources

  • nordbastion://catalog — full catalog bundle (JSON)
  • nordbastion://coins — accepted cryptocurrencies (JSON)
  • nordbastion://canary — latest warrant canary excerpt (JSON)
  • nordbastion://doctrine — the operating principles (text)

How it works

AI agent ──MCP/stdio──▶ nordbastion-mcp ──HTTPS──▶ https://nordbastion.com/v1

The registry in tools.py mirrors NordBastion's own server-side MCP catalog and binds each tool to its REST endpoint, so the surface stays in lock-step with the upstream API. Authentication is a single bearer credential; nothing is cached to disk.

Security

  • Your API key lives only in the client's environment — never written to disk by this server.
  • Scope your key: read, billing, servers, or full. Use the narrowest scope an agent needs and an IP allow-list where possible.
  • order_server and create_topup move real money/balance. Review your agent's confirmations before granting servers/billing/full scope.

Development

git clone https://github.com/CryptoServers/nordbastion-mcp
cd nordbastion-mcp
uv venv && uv pip install -e ".[dev]" mcp httpx ruff
python -m nordbastion_mcp   # starts the stdio server
ruff check .

Links

License

MIT © NordBastion OÜ. This is an open-source client for the NordBastion API; "NordBastion" is a trademark of NordBastion OÜ.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nordbastion_mcp-0.1.0.tar.gz (11.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

nordbastion_mcp-0.1.0-py3-none-any.whl (13.8 kB view details)

Uploaded Python 3

File details

Details for the file nordbastion_mcp-0.1.0.tar.gz.

File metadata

  • Download URL: nordbastion_mcp-0.1.0.tar.gz
  • Upload date:
  • Size: 11.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.5

File hashes

Hashes for nordbastion_mcp-0.1.0.tar.gz
Algorithm Hash digest
SHA256 24c6721b48e1d23476a2c68f9132db85611f0675e700eb7b4edbbff63b6cbf8d
MD5 de73efbf947ac6efc4712fc8ad86ff65
BLAKE2b-256 cd2e9b0823e0198ceb2cbfb87a42861b571b34f53053799732be4ddcbbfdb4c6

See more details on using hashes here.

File details

Details for the file nordbastion_mcp-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for nordbastion_mcp-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 8347a1b4db7738c1c7b698e50f6d24410eebe371d7d8067336c07774a5897c6b
MD5 88703cb5b74427f990705fabb032b51d
BLAKE2b-256 fbdfbed75934bdaef1f94f638342723b5e84acf215944204ac019511c033c164

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page