Monobank MCP Server
About
A Monobank MCP (Model Context Protocol) Server
Details
- Author
- todesstoss
- Downloads
- 344
- Categories
- Other, API
Jump to
- Exposes Monobank accounts, transactions, and rates as MCP tools
- Pre‑processes data: amounts in base units, ISO 8601 timestamps, human‑readable permissions
- Caches responses for 1 hour to avoid Monobank’s 1‑request‑per‑60‑second rate limit
- Public tools for exchange rates (no token required)
- Personal tools: client info, statements, webhook management
- Destructive webhook setters warn before overwriting the current URL
Setting up with Highlight
This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:
- Download and install Highlight from highlightai.com/download
- Navigate to the plugins tab and select "Add Custom Plugin"
-
Configure the plugin with the settings below
Plugin Name
Monobank MCP ServerCommand (node, npx, python, etc.)Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.
- Enable "Start Automatically" if you want the plugin to start when Highlight launches
From the repository
Add the server to your Claude Desktop configuration or run claude mcp add monobank -- npx -y @dirgen/monobank-mcp for Claude Code. Provide your personal API token via the MONOBANK_API_TOKEN environment variable (obtain one at api.monobank.ua). The server exposes public tools (exchange rates, no token required) and personal tools (accounts, statements, webhooks) once the token is set.
monobank-bank-currency
Returns Monobank exchange rates for all supported currencies. Response fields: - baseCurrency / quoteCurrency: ISO 4217 currency codes (e.g. 'USD', 'EUR', 'UAH'). quoteCurrency is almost always 'UAH' — except the EUR/USD pair. - date: ISO 8601 timestamp of the last rate update. - rateSell: rate at which the bank sells baseCurrency (you pay in quoteCurrency). Present only for directly traded pairs. - rateBuy: rate at which the bank buys baseCurrency (you receive in quoteCurrency). Present only for directly traded pairs. - rateCross: mid-market rate for all other currencies. Use when rateSell/rateBuy are absent.
monobank-bank-currency-rate
Returns the Monobank exchange rate for a specific currency pair. Faster than monobank-bank-currency when you need just one rate. quoteCurrency defaults to 'UAH'. The only non-UAH pair available is EUR/USD.
Claude Desktop / Cursor
Paste into your MCP client config file to install this server.
{
"mcpServers": {
"monobank mcp server": {
"monobank": {
"command": "npx",
"args": [
"-y",
"@dirgen/monobank-mcp"
],
"env": {
"MONOBANK_API_TOKEN": "your_token_here"
}
}
}
}
}
McpServers
{
"monobank": {
"command": "npx",
"args": [
"-y",
"@dirgen/monobank-mcp"
],
"env": {
"MONOBANK_API_TOKEN": "your_token_here"
}
}
}
monobank-mcp
MCP server for Monobank — exposes your accounts, transactions, exchange rates, and webhook configuration as tools for Claude and other MCP clients.
Responses are pre-processed for LLM consumption: amounts are in base currency units (not cents), timestamps are ISO 8601, currency codes are ISO 4217 strings, and permissions are decoded to human-readable names. Frequently-accessed data is cached server-side for 1 hour so repeated reads never hit the Monobank rate limit.
Quick Start — Claude Desktop
Add to your claude_desktop_config.json:
{
"mcpServers": {
"monobank": {
"command": "npx",
"args": ["-y", "@dirgen/monobank-mcp"],
"env": {
"MONOBANK_API_TOKEN": "your_token_here"
}
}
}
}
Quick Start — Claude Code
claude mcp add monobank -- npx -y @dirgen/monobank-mcp
Then add your token to .claude/settings.json:
{
"mcpServers": {
"monobank": {
"env": { "MONOBANK_API_TOKEN": "your_token_here" }
}
}
}
Getting a Token
Open api.monobank.ua and scan the QR code with the Monobank app to generate your personal API token. The token never leaves your machine — it is passed directly to the server process as an environment variable.
Available Tools
Public — no token required
| Tool | Description |
| ----------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| monobank-bank-currency | All Monobank exchange rates. Returns baseCurrency / quoteCurrency (ISO 4217), date (ISO 8601), and rateSell / rateBuy (traded pairs) or rateCross (cross rates). |
| monobank-bank-currency-rate | Exchange rate for a single currency pair. Inputs: baseCurrency, quoteCurrency (defaults to UAH). Faster than fetching the full list. |
Personal — requires MONOBANK_API_TOKEN
| Tool | Description |
| ------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| monobank-personal-client-info | Full client profile: identity, decoded token permissions, all accounts and jars including FOP/business accounts (managedClients). Account id fields are what you pass to the statement tool. |
| monobank-personal-accounts | Compact account and jar list (id, type, currencyCode, balance, maskedPan). Use this for quick account discovery before fetching statements. |
| monobank-personal-statement | Transaction history for an account. Inputs: accountId (from client-info, or "0" for default UAH account), fromDate, toDate (ISO 8601 with timezone). Maximum range: 31 days per request. |
| monobank-get-webhook | Returns the webhook URL currently configured for this token. Empty string means no webhook is set. |
| monobank-set-webhook | ⚠️ Destructive. Sets the webhook URL. Overwrites the existing URL immediately with no confirmation — check the current value with monobank-get-webhook first. |
| monobank-unset-webhook | ⚠️ Destructive. Removes the webhook by setting the URL to empty string. |
Caching
The server caches responses to stay within Monobank's rate limits and avoid redundant API calls:
| Data | Cache TTL |
| ------------------------------------- | ----------------------------------------------- |
| Client info (/personal/client-info) | 1 hour |
| Currency rates (/bank/currency) | 1 hour |
| Statement with a fixed toDate | 1 hour |
| Statement without toDate | Not cached (open-ended range → stale data risk) |
Webhook mutations automatically invalidate the client-info cache so the next read reflects the updated URL.
Rate Limits
Monobank personal endpoints allow 1 request per 60 seconds. If the limit is hit, the server returns a clear error message telling you to wait 60 seconds. The 1-hour cache means most repeated reads are served locally without hitting the API at all.
Developer Setup
Requires Node.js ≥ 24.17.0 and pnpm.
git clone https://github.com/todesstoss/monobank-mcp
cd monobank-mcp
pnpm install
Create a .env file:
MONOBANK_API_TOKEN=your_token_here
pnpm start # run the MCP server
pnpm inspect # open MCP Inspector in the browser for interactive testing
pnpm typecheck # type-check without emitting
pnpm lint # lint src/
Troubleshooting
Invalid token / 401 — regenerate your token at api.monobank.ua. Tokens expire if unused.
Rate limit / 429 — wait 60 seconds. The server will tell you when this happens. Repeated reads within an hour are served from cache and won't trigger this.
Statement range > 31 days — split the request into multiple calls, each covering ≤ 31 days. The tool will tell you if the range is too wide.
Currency pair not found — use monobank-bank-currency to see all available pairs. Only UAH pairs and EUR/USD are available.
No managedClients in client-info — this field only appears if you are registered as a FOP (sole proprietor) with Monobank. All tokens are the same personal token — managedClients is simply absent if you have no FOP accounts.
License
MIT
Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.




