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.
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-V2in Helsinki running Debian 13, hostnamewg-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, orfull. Use the narrowest scope an agent needs and an IP allow-list where possible. order_serverandcreate_topupmove real money/balance. Review your agent's confirmations before grantingservers/billing/fullscope.
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
- 🌐 Website — https://nordbastion.com
- 📚 API reference — https://nordbastion.com/api/
- 🧭 Guides (anonymous VPS, Monero, Tor, WireGuard…) — https://nordbastion.com/guides/
- 🔒 Warrant canary — https://nordbastion.com/warrant-canary/
- 📡 Status — https://nordbastion.com/status/
License
MIT © NordBastion OÜ. This is an open-source client for the NordBastion API; "NordBastion" is a trademark of NordBastion OÜ.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
24c6721b48e1d23476a2c68f9132db85611f0675e700eb7b4edbbff63b6cbf8d
|
|
| MD5 |
de73efbf947ac6efc4712fc8ad86ff65
|
|
| BLAKE2b-256 |
cd2e9b0823e0198ceb2cbfb87a42861b571b34f53053799732be4ddcbbfdb4c6
|
File details
Details for the file nordbastion_mcp-0.1.0-py3-none-any.whl.
File metadata
- Download URL: nordbastion_mcp-0.1.0-py3-none-any.whl
- Upload date:
- Size: 13.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8347a1b4db7738c1c7b698e50f6d24410eebe371d7d8067336c07774a5897c6b
|
|
| MD5 |
88703cb5b74427f990705fabb032b51d
|
|
| BLAKE2b-256 |
fbdfbed75934bdaef1f94f638342723b5e84acf215944204ac019511c033c164
|