@mindstone/mcp-server-wise
v0.1.1
Published
Wise (formerly TransferWise) MCP server for Model Context Protocol hosts
Readme
@mindstone/mcp-server-wise
Wise (formerly TransferWise) MCP server for Model Context Protocol hosts. Check multi-currency balances and exchange rates, review transactions and activity, manage recipients, price transfers with quotes — and, with an explicit opt-in, create, fund, and cancel transfers — all through a standardised MCP interface.
Status
- Version: 0.1.1 · npm
- Auth: API token (env var, or on disk via
WISE_CONFIG_PATH) - Tools: 17 (accounts, balances, recipients, quotes, transfers, discovery)
- Surface: cloud-api
- Machine-readable:
STATUS.json
Requirements
- Node.js 20+
- npm
- A Wise API token: wise.com → Settings → API tokens
One-click install
After clicking the button, your host will prompt you to fill: WISE_API_TOKEN.
{
"mcpServers": {
"Wise": {
"command": "npx",
"args": [
"-y",
"@mindstone/mcp-server-wise"
],
"env": {
"WISE_API_TOKEN": ""
}
}
}
}Quick Start
Install & build
cd <path-to-repo>/connectors/wise
npm install
npm run buildnpx (once published)
npx -y @mindstone/mcp-server-wiseLocal
node dist/index.jsConfiguration
Environment variables
WISE_API_TOKEN— Wise API token. Optional if you connect via theconfigure_wisetool instead; when set, it takes precedence over any stored token.WISE_ENVIRONMENT—production(default) orsandbox. Sandbox requires a token created in the Wise sandbox.WISE_CONFIG_PATH— path to the config directory that stores the token written byconfigure_wise(defaults to~/.mcp/wise).WISE_REQUEST_TIMEOUT_MS— outbound request timeout in milliseconds (default30000).MCP_HOST_BRIDGE_STATE— optional path to a host bridge state file used for credential management.MINDSTONE_REBEL_BRIDGE_STATE— backwards-compatible alias forMCP_HOST_BRIDGE_STATE.
Host configuration examples
Claude Desktop / Cursor
{
"mcpServers": {
"Wise": {
"command": "npx",
"args": ["-y", "@mindstone/mcp-server-wise"],
"env": {
"WISE_API_TOKEN": "your-wise-api-token"
}
}
}
}Local development (no npm publish needed)
{
"mcpServers": {
"Wise": {
"command": "node",
"args": ["<path-to-repo>/connectors/wise/dist/index.js"],
"env": {
"WISE_API_TOKEN": "your-wise-api-token"
}
}
}
}Tools (17)
Account management
configure_wise— Connect a Wise account with an API token (verified against the Wise API before storing)remove_wise_account— Disconnect the Wise account
Profiles & balances
list_wise_profiles— List personal and business profiles accessible with the token; use the ids asprofile_idlist_wise_balances— List balances (multi-currency accounts and savings jars) with amounts per currencyget_wise_balance_statement— Transaction statement for one balance over a time window (max 469 days)list_wise_activities— Chronological activity feed (transfers, card payments, deposits) with status
Exchange rates & quotes
get_wise_exchange_rate— Current or historic mid-market rate between two currenciescreate_wise_quote— Lock a rate and get exact fees per funding method (does not move money)
Recipients
list_wise_recipients— List saved recipients (bank accounts), filterable by currency or typeget_wise_recipient— Full details of one recipient, including bank detailsget_wise_recipient_requirements— Discover the bank detail fields Wise requires for a route, given a quotecreate_wise_recipient— Create a saved recipient (does not move money)
Transfers
list_wise_transfers— List transfers with filters (status, currencies, created-date window)get_wise_transfer— Current state of one transfercreate_wise_transfer— Create a transfer from a quote to a recipient (not funded yet)fund_wise_transfer— Fund a created transfer from a Wise balance (moves money)cancel_wise_transfer— Cancel a transfer before thefunds_convertedstage
Typical payout flow
list_wise_profiles→ pick aprofile_idcreate_wise_quote— price the transfer and lock a rate- (New recipient)
get_wise_recipient_requirements→create_wise_recipient create_wise_transfer— creates the transfer (not funded yet)fund_wise_transfer— pays from a Wise balance; this is the step that moves money
Security
- Money movement runs by default.
create_wise_transfer,fund_wise_transfer, andcancel_wise_transferare always available and declaredestructiveHint: true— gating of individual invocations is the host's tool-approval layer's job, not the connector's. Quote and recipient creation never move money; onlyfund_wise_transferdebits a balance. - Untrusted-content envelopes. Strings authored by external parties (recipient names and bank details, transfer references, statement descriptions and merchant names, activity titles, quote notices) are wrapped in
<untrusted-content source="…">envelopes so the host LLM treats them as data, not instructions. Connector-controlled metadata (ids, amounts, currencies, statuses, timestamps) is returned raw. - Credential storage. Tokens written by
configure_wiseare stored incredentials.jsonunderWISE_CONFIG_PATHwith0600permissions (config directory0700). Only the two fixed Wise hosts (api.wise.com,api.wise-sandbox.com) are ever contacted — there is no arbitrary base-URL override. - Error hygiene. Vendor error bodies, raw
Retry-Afterheader text, and query-bearing URLs are never written to logs or surfaced in tool errors; tokens never appear in error messages. - Idempotent transfer creation.
create_wise_transferusescustomer_transaction_idas the Wise idempotency key, so a retry never creates a duplicate transfer. - Input validation. Currency codes, numeric ids, UUIDs, and date-time windows are validated before any request is made.
Licence
FSL-1.1-MIT — Functional Source License, Version 1.1, with MIT future licence. The software converts to MIT licence on 2030-04-08.
