Skip to main content
Glama
zjor

FIO Bank MCP Server

by zjor
README.md
# FIO Bank MCP Server

An MCP (Model Context Protocol) server for FIO Bank API in the Czech Republic. Allows AI assistants like Claude to access FIO Bank account transactions.

## Installation

```bash
pnpm install
pnpm build
```

## Configuration

### Getting an API Token

1. Log in to your FIO Bank internet banking
2. Go to **Settings** → **API**
3. Create a new token (requires SMS or push notification)
4. Wait 5 minutes before using the token

### Token Properties

- Each token is valid for one account only
- Maximum validity: 180 days
- Can auto-renew on each login to internet banking

## Usage

### With Claude Desktop

Add to your Claude Desktop configuration (`~/Library/Application Support/Claude/claude_desktop_config.json` on macOS):

```json
{
  "mcpServers": {
    "fio-bank": {
      "command": "node",
      "args": ["/path/to/fio-bank-mcp/dist/index.js"],
      "env": {
        "FIO_API_TOKEN": "your-64-character-token-here"
      }
    }
  }
}
```

## Available Tools

### `fio_get_transactions`

Get account transactions for a specific date range.

**Parameters:**
| Name | Type | Required | Description |
|------|------|----------|-------------|
| `dateFrom` | string | Yes | Start date (YYYY-MM-DD) |
| `dateTo` | string | Yes | End date (YYYY-MM-DD) |
| `token` | string | No | API token (uses `FIO_API_TOKEN` env var if not provided) |

**Returns:**
- Account info (IBAN, BIC, balance)
- List of transactions with:
  - Transaction ID, date, amount, currency
  - Counter account (number, name, bank)
  - Payment symbols (variable, constant, specific)
  - Message for recipient, comments
  - Transaction type

## Testing Locally

Use the MCP Inspector to test the server with a web UI:

```bash
npx @modelcontextprotocol/inspector node dist/index.js
```

This opens a browser where you can see available tools, call them with parameters, and view responses.

To pass the API token:

```bash
FIO_API_TOKEN=your-token npx @modelcontextprotocol/inspector node dist/index.js
```

## API Rate Limits

**1 request per 30 seconds per token.** The server automatically waits if needed.

## Data Access

- Data up to **90 days old**: accessible immediately
- Data older than 90 days: requires temporary unlock in internet banking (Settings → API → click lock icon, valid for 10 minutes)

## Error Codes

| Code | Description |
|------|-------------|
| 404 | Invalid URL or token |
| 409 | Rate limit exceeded (wait 30 seconds) |
| 413 | Too many transactions in response |
| 422 | Invalid request data |
| 500 | Internal server error |

## Development

```bash
pnpm install      # Install dependencies
pnpm build        # Build TypeScript
pnpm lint         # Run ESLint
pnpm typecheck    # Type check without emitting
```

## Resources

- [FIO Bank API Documentation (Czech)](https://www.fio.cz/docs/cz/API_Bankovnictvi.pdf)
- [MCP Protocol](https://modelcontextprotocol.io)

## License

MIT

TDQS

A4/5.0

Scored across 1 tool

Disambiguation5/5

With only one tool exposed, there is no possibility of the agent selecting the wrong tool. Its purpose (fetching account transactions over a date range) is stated unambiguously.

Naming Consistency5/5

The single name fio_get_transactions follows a clean namespace_verb_noun convention that would extend predictably. There is no competing convention to clash with.

Tool Count2/5

One tool is far too thin for a bank API surface, which naturally spans accounts, statements, and payment operations. The server exposes a single read endpoint, so the count is an extreme mismatch for the apparent domain.

Completeness2/5

The surface covers only transaction retrieval; there is no way to list accounts, fetch a formal statement, or initiate/verify payments. Agents needing anything beyond a read of transactions will hit a dead end.

Maintenance

ActivityInactive
ResponsivenessNo issues