Skip to main content
Glama
zjor

FIO Bank MCP Server

by zjor

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

pnpm install
pnpm build

Related MCP server: folio-mcp

Configuration

Getting an API Token

  1. Log in to your FIO Bank internet banking

  2. Go to SettingsAPI

  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):

{
  "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:

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:

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

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

Resources

License

MIT

Available Tools

1 tool
fio_get_transactionsA

Get account transactions for a date range from FIO Bank.

Returns account info (IBAN, BIC, balance) and transactions with:

  • Transaction ID, date, amount, currency

  • Counter account (number, name, bank)

  • Payment symbols (variable, constant, specific)

  • Message, comments, transaction type

Rate limit: 1 request per 30 seconds. Data older than 90 days requires unlock in internet banking.

ParametersJSON Schema
NameRequiredDescriptionDefault
tokenNoFIO API token (64 chars). Optional if FIO_API_TOKEN env var is set.
dateToYesEnd date (YYYY-MM-DD)
dateFromYesStart date (YYYY-MM-DD)

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does disclose two meaningful behavioral traits: throttling (1 req/30s) and a prerequisite on 90-day-old data. It omits error/retry behaviour, pagination, and token-failure handling, so it is good but not exhaustive for a no-annotation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded purpose, then a scannable bulleted enumeration of returned fields, then two short constraint lines. No filler sentences; every line either frames the call or warns of an operational limit.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the bulleted list of returned fields (IDs, amounts, counter account, payment symbols) is genuinely necessary and provided. Rate limit and the 90-day unlock prerequisite round it out; only pagination/volume behaviour and error semantics are left implicit.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and all three parameters (token, dateFrom, dateTo) are documented in the schema with formats. The description only restates the date-range concept and adds nothing about accepted range size, date boundary inclusivity, or token fallback, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get account transactions') plus the source system (FIO Bank) and the scoping dimension (date range). No siblings exist to disambiguate against, and the tool's identity is unambiguous from the first sentence.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives real operational guidance: a 1-request-per-30-second rate limit and the requirement to unlock data older than 90 days in internet banking. There are no sibling tools, so no alternative-routing is possible or expected, but it stops short of stating what to do when the date range is refused.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool updatev1.0.0
    • First observedfio_get_transactions

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

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables secure interaction with Plaid's Transactions API to sync, search, and analyze financial transactions from linked bank accounts using natural language queries.
    -
  • A
    license
    A
    quality
    C
    maintenance
    Enables Claude to interact with a Folio business bank account for managing accounts, transactions, receipts, bookkeeping, and payments as drafts.
    14
    3 npm
    6
    MIT
  • F
    license
    A
    quality
    D
    maintenance
    Exposes SimpleFIN bank data (accounts and transactions) as tools for Claude Code, enabling users to connect to bank accounts, list balances, and fetch transactions.
    4
    -
  • A
    license
    B
    quality
    F
    maintenance
    Query bank accounts, credit cards, and transactions via Sophtron's financial data API. Works with Claude Desktop and any MCP-compatible client.
    10
    1
    Apache 2.0