Skip to main content
ClaudeWave

The simplest, most complete MCP server for Wise: balances, card payments, transfers and recipients, plus transfers you approve twice. Run locally with npx or self-host for Claude and ChatGPT.

MCP ServersRegistry oficial0 estrellas0 forks● TypeScriptMITActualizado today
ClaudeWave Trust Score
95/100
✓ Verified
Passed
  • ✓Open-source license (MIT)
  • ✓Actively maintained (<30d)
  • ✓Clear description
  • ✓Topics declared
  • ✓Documented (README)
Last scanned: 10/12/2026
Install in Claude Code / Claude Desktop
Method: NPX · @blanketbyte/wise-mcp
Claude Code CLI
claude mcp add wise-mcp -- npx -y @blanketbyte/wise-mcp
claude_desktop_config.json (Claude Desktop)
{
  "mcpServers": {
    "wise-mcp": {
      "command": "npx",
      "args": ["-y", "@blanketbyte/wise-mcp"],
      "env": {
        "WISE_API_TOKEN": "<wise_api_token>"
      }
    }
  }
}
1. Run the command above in your terminal (Claude Code), or paste the JSON config into claude_desktop_config.json (Claude Desktop).
2. Replace any <placeholder> values with your API keys or paths.
3. Restart Claude. The MCP server and its tools appear automatically.
Detected environment variables
WISE_API_TOKEN
Casos de uso

Resumen de MCP Servers

<div align="center">

<img src="public/logo.svg" alt="Wise MCP" width="120" height="120">

# Wise MCP

**Ask Claude or ChatGPT about your Wise money.**
The simplest, most complete MCP server for your Wise balances, card payments, transfers and recipients that can also prepare transfers you approve twice.
Run it locally with one `npx` command (Claude Desktop, Claude Code, Codex, Cursor…), or host it as a custom connector for Claude and ChatGPT.

![npx @blanketbyte/wise-mcp](.github/badges/npx.svg)
![MCP](.github/badges/mcp.svg)
![OAuth 2.1](.github/badges/oauth-2-1.svg)
![Writes](.github/badges/writes.svg)
![Node.js 22](.github/badges/node-js-22.svg)
![License MIT](.github/badges/license-mit.svg)

</div>

---

> *"How much did I spend on groceries in September?"*
> *"What's left in my jars, in EUR?"*
> *"Show the transfers I sent to Mario this year and the rate I got."*
> *"Send Mario 120 EUR for dinner."*

Give it a Wise API token once and your assistant can answer questions like these across all your Wise profiles, personal and business. It can also prepare transfers, new recipients and cancellations. Every change needs your explicit approval in chat, and a transfer only moves money once **you pay it in the Wise app**.

### Why this one

The simplest way to connect Wise to an AI assistant, and the most feature-rich Wise MCP server we know of (October 2026):

- **One token, no partner account.** Other servers need Wise partner OAuth credentials or stop at read-only basics. Here a personal API token is all you need, locally or hosted.
- **Your real spending.** The activity feed includes **card payments** with clean merchant names and amounts, plus transfers, conversions, cashback and Jars, across personal and business profiles.
- **Writes you can trust.** Quotes, new recipients, transfers and cancellations, all two-step and approved in chat; transfers are paid by you in the Wise app.
- **Everywhere.** `npx` for Claude Desktop, Claude Code, Codex and Cursor, a one-click Claude Desktop extension, or a self-hosted connector for Claude and ChatGPT on web and mobile.
- **Built for real accounts.** 14 tools, encrypted token storage, session management, an audit log, and end-to-end tests for both modes.

## Choose how to run it

| | **Local** | **Remote (self-hosted)** |
| --- | --- | --- |
| Works with | Claude Desktop, Claude Code, Codex, Cursor, VS Code, any MCP client | Claude (web, desktop, mobile) and ChatGPT custom connectors |
| Setup | One `npx` command or a one-click Claude Desktop extension | Deploy a container behind HTTPS (Dokploy, Easypanel, Docker Compose) |
| Token | In your app's MCP config, on your machine | Pasted on a login page, stored encrypted on your server |
| Guide | [Run locally](#run-locally) | [Deploy](#deploy) |

## Contents

- [Why this one](#why-this-one)
- [Choose how to run it](#choose-how-to-run-it)
- [Tools](#tools)
- [How it works](#how-it-works)
- [Security model](#security-model)
- [Run locally](#run-locally)
- [Deploy](#deploy)
- [Your server's pages](#your-servers-pages)
- [Configuration](#configuration)
- [Development](#development)
- [Limitations](#limitations)
- [Contributing](#contributing)
- [License](#license)

## Tools

### Read

| Tool | What it returns |
| --- | --- |
| `list_profiles` | Every Wise profile the token can see (personal, business) |
| `list_balances` | Balances in every currency plus **Jars**, across all profiles by default |
| `get_transactions` | Activity feed, newest first: **card payments**, transfers, conversions, cashback, direct debits. Clean merchant names, numeric amounts, `in` / `out` / `neutral` direction. Filter by type, status, date range and text; cursor pagination |
| `list_transfers` | Transfers newest first, with both currencies, reference, status and recipient name |
| `get_transfer` | One transfer in detail: rate, amounts, reference, recipient |
| `list_recipients` | Saved recipients with account number / IBAN, filterable by currency and text |
| `get_exchange_rate` | Wise mid-market rate, now or at a past date |

### Write: always two-step

| Tool | What it does |
| --- | --- |
| `get_quote` | Prices a transfer or conversion: rate, fee, amount received, delivery estimate. Changes nothing |
| `get_recipient_requirements` | The bank details Wise needs for a recipient in a currency (IBAN, sort code, …) |
| `prepare_transfer` | Quotes a transfer to a saved recipient, checks Wise's route requirements and your balance, returns a summary + one-time code |
| `prepare_recipient` | Validates a new recipient and returns a summary + one-time code |
| `prepare_cancel_transfer` | Prepares cancelling a transfer you haven't paid yet |
| `confirm_action` | Performs a prepared action. Only after you approve the exact summary |
| `discard_action` | Throws a prepared action away |

Profiles are discovered from the token at runtime. Every tool takes an optional `profile`: an id, `personal`, `business`, or part of the profile name.

## How it works

**Locally**, the server runs on your machine as a child process of your MCP client and reads the token from `WISE_API_TOKEN`. Nothing is hosted and there's no login.

**Remotely**, Wise doesn't offer OAuth to individuals, so the server is its own OAuth 2.1 authorization server for Claude and ChatGPT, and the "login" is a Wise personal API token you paste once.

```mermaid
sequenceDiagram
    autonumber
    participant C as Claude / ChatGPT
    participant S as Wise MCP
    participant W as Wise API
    C->>S: Dynamic client registration (trusted redirect hosts only)
    C->>S: /authorize (PKCE)
    S-->>C: Login page: token + "stay connected for"
    Note over C,S: You paste a Wise API token, pick 5 / 15 / 30 / 90 days or until revoked
    S->>W: GET /v1/me
    W-->>S: Wise user id
    S->>S: Allowlist check, token sealed with AES-256-GCM
    S-->>C: Authorization code → access + refresh tokens
    C->>S: MCP tool calls (Bearer, 1 h tokens, rotating refresh)
    S->>W: Reads, and writes only after confirm_action
```

- **Session length** is chosen at each login. Access tokens last one hour; refresh tokens rotate on every use and live exactly as long as the session.
- **`/sessions`** lists every connected session for your Wise account and lets you revoke one or all. You sign in by pasting a Wise token again; it's only used to check who you are and is never stored. Access lasts 15 minutes in an HTTP-only cookie.
- **Revoking in Wise works too**: delete the token in Wise → Settings → API tokens. The next call fails with a clear message, and the server deletes the stored token and every session that used it.

### Two confirmations for every write

```
prepare_*  ──▶  summary + code (TX-…, RCP-…, CXL-…)  ──▶  you approve in chat  ──▶  confirm_action
                 nothing written to Wise yet              ①                          created in Wise
                                                                                          │
transfers only:                                    you pay it in the Wise app  ◀──────────┘
                                                   ②  money moves only now
```

- Codes are single-use, expire after 10 minutes, and only work from the session that prepared them.
- Transfers are created **unpaid** (`incoming_payment_waiting`). Wise doesn't let personal tokens fund transfers for EU/UK accounts anyway, so the final "Pay" is always yours. Until then you can cancel the transfer with `prepare_cancel_transfer` or in the app.
- Every prepare, confirm, discard and failure is appended to `audit.log` (`~/.wise-mcp/` locally, the data volume when hosted).

## Security model

| | |
| --- | --- |
| ✋ **Two-step writes** | Every write is prepare → your approval in chat → confirm with a one-time code. Transfers then also need you to pay them in the Wise app. |
| 🔒 **Read-only option** | `WRITES_ENABLED=false` removes all write tools. With a Wise **Read only** token, write tools fail with a clear message and reading keeps working. |
| 💶 **Limits** | Optional `MAX_TRANSFER_AMOUNT` per transfer. Wise's own route checks (purpose, source of funds) are enforced before a code is issued. |
| 🧾 **Allowlist** | Only Wise user ids in `ALLOWED_WISE_USERS` can connect. Any other token is refused and nothing about it is stored. Removing an id cuts off that user's existing sessions too. |
| 🗝️ **Encryption at rest** | Wise tokens are sealed with AES-256-GCM under `TOKEN_ENCRYPTION_KEY`. OAuth tokens are stored only as SHA-256 hashes. State files and the audit log are owner-only (`0600`) and written atomically. |
| 🧹 **Minimal retention** | A Wise token is deleted as soon as no live session uses it: after revocation, session expiry, or when Wise rejects it. |
| 🔁 **OAuth hardening** | PKCE (S256), single-use login and authorization codes, rotating refresh tokens, redirect hosts limited to `claude.ai`, `claude.com`, `chatgpt.com` and localhost, so authorization codes can only reach apps you trust. |
| 🚦 **Rate limiting** | The token forms (`/login`, `/sessions/login`) allow 20 attempts per IP every 15 minutes; OAuth endpoints use the MCP SDK's limits. |
| 🔐 **HTTPS only** | The server refuses to start with a non-HTTPS `PUBLIC_URL`, and every page shows a red warning if it's opened over plain HTTP, so nobody pastes a Wise token on an unencrypted page. |
| 🛡️ **Pages** | Strict CSP (`default-src 'none'`, `form-action` limited to the server and the client's own redirect origin), `X-Frame-Options: DENY`, `no-store`, no referrer. |

> [!WARNING]
> Keep `TOKEN_ENCRYPTION_KEY` out of backups of the data volume. Changing it makes stored tokens unreadable: just reconnect.

## Run locally

Needs Node.js 20 or newer. Create a token first: Wise → **Settings → API tokens → Add new token** (**Full access** to prepare transfers and recipients, **Read only** for answers only).

### Claude Desktop extension (one click)

Download `wise-mcp-<version>.mcpb` from the [latest release](https://github.com/BlanketByte/wi
chatgptclaudefintechmcpmcp-servermodel-context-protocoltypescriptwise

Lo que la gente pregunta sobre wise-mcp

¿Qué es BlanketByte/wise-mcp?

+

BlanketByte/wise-mcp es mcp servers para el ecosistema de Claude AI. The simplest, most complete MCP server for Wise: balances, card payments, transfers and recipients, plus transfers you approve twice. Run locally with npx or self-host for Claude and ChatGPT. Tiene 0 estrellas en GitHub y su última actualización registrada es del 2026-10-11.

¿Cómo se instala wise-mcp?

+

Puedes instalar wise-mcp clonando el repositorio (https://github.com/BlanketByte/wise-mcp) o siguiendo las instrucciones del README en GitHub. ClaudeWave también te ofrece bloques de instalación rápida en esta misma página.

¿Es seguro usar BlanketByte/wise-mcp?

+

Nuestro agente de seguridad ha analizado BlanketByte/wise-mcp y le ha asignado un Trust Score de 95/100 (tier: Verified). Revisa el desglose completo de comprobaciones superadas y flags en esta página.

¿Quién mantiene BlanketByte/wise-mcp?

+

BlanketByte/wise-mcp es mantenido por BlanketByte. La última actividad registrada en GitHub es del 2026-10-11, con 0 issues abiertos.

¿Hay alternativas a wise-mcp?

+

Sí. En ClaudeWave puedes explorar mcp servers similares en /categories/mcp, ordenados por popularidad o actividad reciente.

Despliega wise-mcp en tu cloud

Lleva este repo a producción en minutos. Cada plataforma genera su propio entorno con variables de entorno editables.

¿Mantienes este repo? Añade un badge a tu README

Pega el badge en tu README de GitHub para mostrar que está auditado por ClaudeWave. Cada badge enlaza de vuelta a esta página y muestra el Trust Score actual.

Featured on ClaudeWave: BlanketByte/wise-mcp
[![Featured on ClaudeWave](https://claudewave.com/api/badge/blanketbyte-wise-mcp)](https://claudewave.com/repo/blanketbyte-wise-mcp)
<a href="https://claudewave.com/repo/blanketbyte-wise-mcp"><img src="https://claudewave.com/api/badge/blanketbyte-wise-mcp" alt="Featured on ClaudeWave: BlanketByte/wise-mcp" width="320" height="64" /></a>

Más MCP Servers

Alternativas a wise-mcp