A Model Context Protocol (MCP) server that exposes the Kontist banking API as tools for AI assistants.
Kontist MCP
A Model Context Protocol (MCP) server that exposes the Kontist banking API as tools for AI assistants.
Why This?
Kontist is one of the few (possibly the only) German business bank accounts with a public SDK. This MCP server lets AI tools like OpenCode interact with your Kontist account - checking balances, viewing transactions, and managing transfers.
Requirements
- Node.js 18+
- A Kontist business account
- Kontist API credentials (client ID + client secret)
Quick Start
git clone https://github.com/tobiasendres-dev/kontist-mcp.git
cd kontist-mcp
npm install
npm run auth # Opens browser for OAuth
# Configure OpenCode to use this server
npm start # Or run directly: node server.mjs
Setup
1. Get Kontist API Credentials
- Log in to Kontist Dashboard
- Go to Settings → Developers (or API access)
- Create new API credentials
- Note your
clientIdandclientSecret
2. OAuth Authentication
Run the OAuth server to get access tokens:
cd ~/kontist-mcp
npm install
npm run auth
This starts a local server at http://localhost:3000 and opens the Kontist OAuth flow in your browser. After authentication, tokens are saved to ~/.config/kontist/tokens.json.
3. Configure MCP
Add to your OpenCode config at ~/.config/opencode/opencode.json:
{
"mcp": {
"kontist": {
"type": "local",
"command": ["node", "/your/path/kontist-mcp/server.mjs"],
"enabled": true
}
}
}
Available Tools
get_balance
Returns current account balance and available balance. ✓ Tested
get_account
Returns account details including IBAN and holder name. ✓ Tested
list_transactions
Lists the 50 most recent transactions with amounts, recipients, and descriptions. ✓ Tested
list_transfers
Lists transfers by type (SEPA_TRANSFER, STANDING_ORDER, TIMED_ORDER). Optional type param defaults to SEPA_TRANSFER. ✓ Tested
create_transfer
Creates a new transfer. Requires: amount, recipient, iban. Optional: purpose. Returns confirmationId, then confirm with TAN. ✓ Tested
confirm_transfer
Confirms a transfer with TAN. Requires: confirmationId, tan. ✓ Tested
list_cards
Lists all cards. ✓ Tested
Token Management
- Tokens expire after ~1 hour
- Run
npm run authagain when expired to get new tokens
Error Handling
- "Connection closed" or "Unauthorized" → Token expired, run
npm run authagain - Re-authenticate by visiting http://localhost:3000/auth
Security Notes
-
Keep your
clientSecretconfidential -
Tokens are stored in
~/.config/kontist/tokens.json- restrict file permissions:chmod 600 ~/.config/kontist/tokens.json -
Transfer tools require TAN confirmation - you must manually approve each transfer via your phone
License
MIT License - see LICENSE file.
Disclaimer
This is an unofficial, community-built tool. Not affiliated with Kontist. Use at your own risk. The author is not responsible for any financial losses.