Content
# Kontist MCP
[](https://opensource.org/licenses/MIT)
[](https://nodejs.org/)
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
```bash
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
1. Log in to [Kontist Dashboard](https://app.kontist.com)
2. Go to **Settings** → **Developers** (or API access)
3. Create new API credentials
4. Note your `clientId` and `clientSecret`
### 2. OAuth Authentication
Run the OAuth server to get access tokens:
```bash
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`:
```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 auth` again when expired to get new tokens
### Error Handling
- "Connection closed" or "Unauthorized" → Token expired, run `npm run auth` again
- Re-authenticate by visiting http://localhost:3000/auth
## Security Notes
- Keep your `clientSecret` confidential
- Tokens are stored in `~/.config/kontist/tokens.json` - restrict file permissions:
```bash
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.