Back to Browse

Comdirect MCP Server

by Mad4ms
Developer ToolsLow Risk10.0MCP RegistryLocal
Free

Server data from the Official MCP Registry

Read-only access to comdirect accounts, transactions, depots, orders and postbox documents.

About

Read-only access to comdirect accounts, transactions, depots, orders and postbox documents.

Security Report

10.0
Low Risk10.0Low Risk

Valid MCP server (1 strong, 0 medium validity signals). No known CVEs in dependencies. Package registry verified. Imported from the Official MCP Registry.

4 files analyzed · 1 issue found

Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.

What You'll Need

Set these up before or after installing:

comdirect API client id (or stored in the OS keychain via `comdirect-mcp configure`)Required

Environment variable: COMDIRECT_CLIENT_ID

comdirect API client secret (or stored in the OS keychain via `comdirect-mcp configure`)Required

Environment variable: COMDIRECT_CLIENT_SECRET

comdirect Zugangsnummer (or stored in the OS keychain via `comdirect-mcp configure`)Required

Environment variable: COMDIRECT_USERNAME

comdirect PIN (or stored in the OS keychain via `comdirect-mcp configure`)Required

Environment variable: COMDIRECT_PASSWORD

Seconds to wait for the push TAN approval if the client cannot show a confirmation dialogOptional

Environment variable: COMDIRECT_MCP_PUSH_TAN_WAIT

Set to true to return counterparty IBANs unmaskedOptional

Environment variable: COMDIRECT_MCP_UNMASK_IBANS

Set to true to replace counterparty names with stable pseudonymsOptional

Environment variable: COMDIRECT_MCP_MASK_NAMES

Path to a dotenv file with the credentials (opt-in; prefer the OS keychain)Optional

Environment variable: COMDIRECT_ENV_FILE

Seconds the server keeps bank results within a session; 0 disables the cacheOptional

Environment variable: COMDIRECT_MCP_CACHE_TTL

Size limit for postbox documents in bytesOptional

Environment variable: COMDIRECT_MCP_MAX_DOCUMENT_BYTES

Path of the category rules file (default ~/.config/comdirect-mcp/categories.toml)Optional

Environment variable: COMDIRECT_MCP_CATEGORIES

Set to 1 to skip the login confirmation dialog and wait for the push TAN approval insteadOptional

Environment variable: COMDIRECT_MCP_SKIP_ELICITATION

File the server appends its log to (default stderr)Optional

Environment variable: COMDIRECT_MCP_LOG_FILE

Log level of the serverOptional

Environment variable: COMDIRECT_MCP_LOG_LEVEL

How to Install

Add this to your MCP configuration file:

{
  "mcpServers": {
    "io-github-mad4ms-comdirect-mcp": {
      "env": {
        "COMDIRECT_ENV_FILE": "your-comdirect-env-file-here",
        "COMDIRECT_PASSWORD": "your-comdirect-password-here",
        "COMDIRECT_USERNAME": "your-comdirect-username-here",
        "COMDIRECT_CLIENT_ID": "your-comdirect-client-id-here",
        "COMDIRECT_MCP_LOG_FILE": "your-comdirect-mcp-log-file-here",
        "COMDIRECT_CLIENT_SECRET": "your-comdirect-client-secret-here",
        "COMDIRECT_MCP_CACHE_TTL": "your-comdirect-mcp-cache-ttl-here",
        "COMDIRECT_MCP_LOG_LEVEL": "your-comdirect-mcp-log-level-here",
        "COMDIRECT_MCP_CATEGORIES": "your-comdirect-mcp-categories-here",
        "COMDIRECT_MCP_MASK_NAMES": "your-comdirect-mcp-mask-names-here",
        "COMDIRECT_MCP_UNMASK_IBANS": "your-comdirect-mcp-unmask-ibans-here",
        "COMDIRECT_MCP_PUSH_TAN_WAIT": "your-comdirect-mcp-push-tan-wait-here",
        "COMDIRECT_MCP_SKIP_ELICITATION": "your-comdirect-mcp-skip-elicitation-here",
        "COMDIRECT_MCP_MAX_DOCUMENT_BYTES": "your-comdirect-mcp-max-document-bytes-here"
      },
      "args": [
        "comdirect-mcp"
      ],
      "command": "uvx"
    }
  }
}

Documentation

View on GitHub

From the project's GitHub README.

comdirect-mcp

PyPI Python Tests MCP License: MIT

Read-only MCP server and typed Python client for the comdirect REST API. Let Claude, GitHub Copilot or a local model look at your accounts, transactions, depot and postbox. You approve the login in the photoTAN app, and no tool can move money.

LM Studio with a local model answers „Welche Abos zahle ich, und was kosten sie im Jahr?“ (synthetic sample data)

[!WARNING] Unofficial, not affiliated with comdirect. It handles your banking credentials, and every tool result goes to the model behind your MCP client: with a cloud assistant your financial data leaves your computer. For the most privacy use a local model. See SECURITY.md.

Warnung (auf Deutsch, weil comdirect)

Leute, hier geht es um euer Geld. Nutzt das nur, wenn ihr den Code versteht und die Risiken kennt. MIT-Lizenz: Jeder darf damit machen, was er/sie will (auch ihr, comdirect 👀), aber ohne Gewährleistung und ohne Haftung.

Transparenz: Ein Teil des Codes stammt von Opus 5.5 und gpt-6.1-sol, ich habe reviewed, getestet und weise genickt. Genau deshalb: Code verstehen.

Der Server nutzt nur lesende Endpunkte, aber Fehler passieren trotzdem: comdirect kann die API ändern, Dependencies können kompromittiert werden, und 2FA ist kein Freifahrtschein. Deshalb:

  • Nur lokal auf dem eigenen Rechner nutzen, Zugangsdaten niemandem geben.
  • Zugangsdaten in den OS-Schlüsselbund (comdirect-mcp configure). Eine .env enthält das Passwort im Klartext: niemals committen.
  • Updates nicht blind einspielen: Version pinnen, Änderungen anschauen.

MCP-Server: Hängt ihr ihn an einen Cloud-Client, verlassen eure Daten euren Rechner und können in Logs landen. Verwendungszwecke und Dokumente können Prompt-Injections enthalten. Also nur in Umgebungen nutzen, denen ihr vertraut.

Wer seine Kontoauszüge eh schon in ChatGPT kopiert: Macht, was ihr wollt, aber auf eigene Verantwortung!

Features

  • Safe login: push TAN confirmed in your client; stops before comdirect's lock after five unconfirmed challenges; revokes the session on logout and shutdown
  • Credentials in the OS keychain, read-only tools with truthful annotations
  • Answers on the server: cash flow and spending per month, counterparty or your own categories, subscriptions with yearly costs, portfolio allocation
  • Clean data: transfers between your own accounts are kept out of spending, PayPal payments show the merchant, payment texts are cleaned up, IBANs masked
  • Typed Python client for your own scripts

The API returns account transactions of the last 180 days only.

Tool
login / logoutStart a session (push TAN) / end and revoke it
list_accounts, list_cards, get_wealth_overviewBalances of accounts, cards and all products
list_transactionsIndividual transactions
summarize_transactionsIncome, expenses and net per month, counterparty, type or category
find_recurring_paymentsSubscriptions, contracts and standing orders
list_depots, get_depot_positions, summarize_portfolioDepot positions and allocation
list_depot_transactions, list_orders, get_order, get_instrumentSecurities movements, order book, security data
list_documents, read_documentPostbox documents as text or PDF (reading marks them as read)

Prompts: monthly_review, find_subscriptions, tax_documents. Details: Tools reference.

Quickstart

You need uv, comdirect API access (Client ID and Secret) and photoTAN Push as default TAN method.

uvx comdirect-mcp@0.6.1 configure   # stores your credentials in the OS keychain

Add the server to your client, e.g. Claude Code:

claude mcp add --transport stdio --scope user comdirect -- uvx comdirect-mcp@0.6.1

or Claude Desktop, LM Studio and others:

{
  "mcpServers": {
    "comdirect": {
      "command": "uvx",
      "args": ["comdirect-mcp@0.6.1"]
    }
  }
}

Then ask, e.g. „Welche Abos zahle ich, und was kosten sie im Jahr?“ The assistant calls login and you approve the push in the app. VS Code, Ollama and more: Configure MCP clients · step by step: Getting started · problems: Troubleshoot.

Python library

from comdirect_mcp import ComdirectClient
from comdirect_mcp.utils import default_push_tan_callback

client = ComdirectClient(
    {"client_id": "...", "client_secret": "...", "username": "...", "password": "..."},
    {"push_tan_cb": default_push_tan_callback},
)
client.login()  # approve the push TAN, then press Enter
for account in client.list_accounts():
    print(account.id, account.balance, account.currency)

See Use the Python library.

More

Documentation · CHANGELOG · CONTRIBUTING · AGENTS.md for AI coding agents · MIT License

Reviews

No reviews yet

Be the first to review this server!