@aiwerk/mcp-server-wise
Wise (TransferWise) Personal API MCP server. Read-only: profiles, balances, rates, transfers, recipients.
wise_list_profiles, wise_get_profile
wise_list_balances, wise_get_balance
wise_get_exchange_rate, wise_get_exchange_rate_history
wise_list_transfers, wise_get_transfer
wise_list_recipients, wise_get_recipient, wise_get_account_requirements
Write tools (create/fund/cancel transfer, create/delete recipient, create quote) are intentionally not in v0.1.x β they require idempotency + SCA state-machine handling, planned for v0.2.0.
Configuration
| Env var | Required | Default | Purpose |
|---|
WISE_API_TOKEN | yes | β | Personal API token from https://wise.com/settings/api-tokens |
WISE_API_BASE_URL | no | https://api.wise.com | Sandbox override: https://api.sandbox.transferwise.tech |
WISE_API_TIMEOUT_MS | no | 30000 | Per-request timeout |
WISE_API_ALLOW_UNSAFE_BASE_URL | no | β | Dangerous override β see below |
Base URL safety
WISE_API_BASE_URL is locked down by default:
- Must use
https://
- Host must be on the allowlist:
api.wise.com or api.sandbox.transferwise.tech
Violation throws WiseConfigError before any Bearer token leaves the machine. This prevents token exfiltration via a misconfigured env, a bad CI value, or a malicious override.
Dangerous override: set WISE_API_ALLOW_UNSAFE_BASE_URL=1 to bypass both checks (allow http:// and arbitrary hosts). Only use for local testing against a mock server. Never enable this in production or with a real Wise token. The token will be sent to whatever host you configure.
Install
Two ways to run this server β pick the one that fits.
Option 1 β Hosted (zero setup)
No local runtime, no env vars on your machine β your Wise token is AES-256-GCM encrypted server-side via HashiCorp Vault.
- Sign up at aiwerkmcp.com.
- Install Wise from the catalog and paste your
WISE_API_TOKEN.
- Point your MCP client (Claude.ai, Cursor, Hermes, β¦) at your hosted endpoint:
https://bridge.aiwerk.ch/u/<your-user-id>/mcp
with your Bearer token.
All 11 read-only tools appear. Install other AIWerk recipes from the same bridge.
Option 2 β Self-hosted (npx)
Run directly β you manage the token:
WISE_API_TOKEN=xxx npx @aiwerk/mcp-server-wise
Or install globally:
npm install -g @aiwerk/mcp-server-wise
WISE_API_TOKEN=xxx mcp-server-wise
Error taxonomy
Errors surface as MCP isError: true responses with distinct prefixes:
Timeout: β¦ β request exceeded WISE_API_TIMEOUT_MS (wraps AbortController)
Network error: β¦ β fetch rejected (DNS, connection reset, etc.)
Configuration error: β¦ β missing token or invalid base URL
Wise API error <status> β¦ β HTTP 4xx/5xx response from Wise
Typical flow
wise_list_profiles β pick profileId
wise_list_balances({profileId}) β see available currencies / amounts
wise_get_exchange_rate({source, target}) β check rate
wise_list_transfers({profileId, status}) β history / status lookup
Build / dev notes
src/version.ts is generated from package.json by scripts/gen-version.mjs (runs as prebuild / predev / pretest). The file IS committed so a fresh clone compiles immediately.
- The generator is idempotent: it only writes when the version actually changes. So
npm run build on an in-sync tree leaves the working copy clean.
- Bumping
package.json's version and running any of build / dev / test is enough to propagate β no separate manual step on src/version.ts.
About AIWerk MCP
Part of the AIWerk MCP platform β curated, signed MCP recipes served either as npm packages for self-hosting or through our multi-tenant hosted bridge (bridge.aiwerk.ch).
Other AIWerk MCP servers:
Browse the full catalog (20+ recipes including GitHub, Linear, Notion, Stripe, β¦) at aiwerkmcp.com.
Licence
MIT Β© 2026 AIWerk