
Wise Mcp
io.github.BlanketBytePublished by GitHub account BlanketBytev1.1.1Updated Oct 24, 2026
Wise balances, card payments, transfers and recipients, plus transfers you approve twice.
Overview
MCP server for a Wise account that lets an assistant check balances, card spending, transfers and recipients, and prepare transfers you approve twice.
- What you can do
- Look up balances and Jars across personal and business profiles, in every currency. Browse the activity feed of card payments, transfers, conversions and cashback, filtered by type, status, date and text. Review transfers, single transfer details, saved recipients and current or historical mid-market rates. Price transfers and check recipient bank requirements without changing anything. Prepare transfers, new recipients and cancellations of unpaid transfers, then confirm a summary before they are created.
- When to use it
- Use it to ask about Wise balances, card spending, transfers and recipients in chat, or to draft transfers, new recipients and cancellations that you approve before anything is created. A read-only token with writes disabled covers questions only.
- Requirements
- Runs locally as an npm package via npx and needs Node.js 20 or newer. Requires a Wise personal API token supplied in the WISE_API_TOKEN environment variable. The self-hosted remote mode also needs an HTTPS public URL, TOKEN_ENCRYPTION_KEY and allowed Wise user IDs.
Installation
In SourceWeft
- Open Wise Mcp in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
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] [MCP] [OAuth 2.1] [Writes] [Node.js 22] [License MIT]
"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.
npxfor 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
Contents
- Why this one
- Choose how to run it
- Tools
- How it works
- Security model
- Run locally
- Deploy
- Your server's pages
- Configuration
- Development
- Limitations
- Contributing
- License
Tools
Read
Write: always two-step
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.
- 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.
/sessionslists 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
- 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 withprepare_cancel_transferor in the app. - Every prepare, confirm, discard and failure is appended to
audit.log(~/.wise-mcp/locally, the data volume when hosted).
Security model
[!WARNING] Keep
TOKEN_ENCRYPTION_KEYout 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 and open it. Claude Desktop asks for your token (stored securely, never in a plain config file) and whether to allow preparing transfers.
Claude Code
Codex
Add this to ~/.codex/config.toml:
Claude Desktop, Cursor, VS Code and other MCP clients
Add this to the client's MCP config (for Claude Desktop: Settings → Developer → Edit config):
The repo is also an Agent Plugin (plugin.json + mcp.json), so clients and directories that support the standard can install it directly. Set WISE_API_TOKEN in your client.
Optional env: WRITES_ENABLED=false for read-only, MAX_TRANSFER_AMOUNT for a per-transfer limit. Run npx @blanketbyte/wise-mcp --help for all options.
[!NOTE] ChatGPT only connects to remote servers, so for ChatGPT use the self-hosted setup.
Deploy
The container serves plain HTTP on port 3000; put it behind anything that terminates HTTPS. State (sealed tokens, sessions) lives in /data.
A prebuilt image is published with every release: ghcr.io/blanketbyte/wise-mcp:<version> (or :latest), for linux/amd64 and linux/arm64. Use it instead of building from source wherever your platform accepts an image.
Dokploy
- DNS: point a hostname (e.g.
wise.example.com) at your Dokploy server. - Application: Create Service → Application, source = this repository, branch
main, build type Dockerfile, context.. - Domain: your hostname, container port 3000, HTTPS on, certificate Let's Encrypt.
- Volume: a named volume mounted at
/data(the container runs as uid 1000). - Environment:
- Deploy, then check
https://wise.example.com/health. - Find your Wise user id: connect from Claude once. The Not allowed page shows your id: set
ALLOWED_WISE_USERS=<id>, redeploy and connect again.
Easypanel
- DNS: point a hostname (e.g.
wise.example.com) at your Easypanel server. - Service: in a project, + Service → App, name it
wise-mcp. - Source: GitHub, owner/repository of this repo, branch
main, build path/. (Or Git with the repository URL.) - Build: Dockerfile, file
Dockerfile. - Environment:
- Domains: add
wise.example.com, HTTPS on, port 3000. Easypanel issues the Let's Encrypt certificate. - Mounts: add a volume mount named
datawith mount path/data. Without it, sessions and tokens are lost on every redeploy. - Deploy, then check
https://wise.example.com/health. - Find your Wise user id: connect once from Claude or ChatGPT. The Not allowed page shows your id: set
ALLOWED_WISE_USERS=<id>, deploy again and reconnect.
To redeploy automatically on every push, enable Auto Deploy on the service (it adds a GitHub webhook).
Docker Compose
Connect Claude
- In Wise: Settings → API tokens → Add new token. Choose Full access to prepare transfers and recipients, or Read only if you only want answers.
- In Claude: Settings → Connectors → Add custom connector:
- Paste the token, choose how long to stay connected, done.
ChatGPT: Settings → Apps & Connectors, turn on Developer mode (under Advanced), then Create a connector with the same /mcp address and OAuth authentication. The same login page opens.
Your server's pages
Once deployed, your server has three pages you can open in a browser. Replace wise.example.com with your own address.
Common situations
- "I want to disconnect a device or app." Open Manage sessions and press Revoke next to it.
- "I think my token leaked." Delete it in Wise → Settings → API tokens. Every session that used it stops working immediately, and the server deletes its copy. Then reconnect with a new token.
- "Claude or ChatGPT says to reconnect." Your session expired or was revoked. Remove and add the connector again; the Login page will open.
- "The login page says Not allowed." Your Wise account isn't on this server's allowlist. The page shows your Wise user id: add it to
ALLOWED_WISE_USERSand redeploy.
For monitoring there's also https://wise.example.com/health, which returns {"ok":true} when the server is running.
Configuration
At startup the server logs the allowed users and a short SHA-256 fingerprint of the encryption key, so you can tell which key is deployed without revealing it.
Development
The remote end-to-end test boots the server next to a mock Wise API and drives everything Claude does: client registration, PKCE login, allowlist, session lengths, refresh rotation, encryption at rest, every tool (amount parsing, pagination, filters), the two-step writes (single-use codes, cross-session isolation, route requirements, cancellation, audit log, read-only tokens), /sessions, and revocation in Wise. The stdio suite covers the CLI, token errors, every tool over stdio, two-step writes, the audit log and read-only mode.
Releasing
Push a tag matching package.json (e.g. v1.1.0). The release workflow runs the tests, publishes @blanketbyte/wise-mcp to npm with provenance (trusted publishing over GitHub OIDC, no npm token stored anywhere), lists it in the official MCP Registry from server.json, attaches the .mcpb to a GitHub release, and pushes the Docker image to ghcr.io/blanketbyte/wise-mcp. Before the first release, remove "private": true from package.json.
Project layout
Limitations
Personal API tokens can't use every Wise endpoint. In particular, for EU/UK accounts PSD2 rules block balance statements (so there's no running balance per transaction) and the card list. The activity feed covers card payments, so day-to-day spending questions work fine.
On the write side, personal tokens can't fund transfers for EU/UK accounts (you pay them in the Wise app, which this server relies on anyway), and Wise rejects API transfers on business accounts that have payment approval rules.
Contributing
Issues and pull requests are welcome; see CONTRIBUTING.md. Please report security problems privately as described in SECURITY.md.
License
Made by BlanketByte. Independent project, not affiliated with or endorsed by Wise.
Wise and the Wise flag are trademarks of Wise Payments Limited; the flag is shown unaltered to indicate compatibility.
Source: README.md at commit 65ed43c
Tools
0Version history
2- v1.1.1LatestOct 12, 2026
- v1.0.1Oct 11, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts