Skip to main content
Glama
milomymilo

BuchhaltungsButler MCP-Server

by milomymilo
README.md
# BuchhaltungsButler MCP-Server

Ein [Model Context Protocol (MCP)](https://modelcontextprotocol.io/)-Server für die [BuchhaltungsButler API](https://app.buchhaltungsbutler.de/docs/api/v1/). Damit kannst du BuchhaltungsButler direkt aus Claude Desktop, ChatGPT oder jedem anderen MCP-Client heraus nutzen.

## Voraussetzungen

- Node.js ≥ 18
- BuchhaltungsButler API-Zugang (API Client + API Secret + API Key eines Kunden)

## Installation

```bash
git clone <repo-url>
cd buchhaltungsbutler-mcp
npm install
npm run build
```

## Konfiguration

Die folgenden Umgebungsvariablen werden benötigt:

| Variable | Beschreibung |
|----------|-------------|
| `BUCHHALTUNGSBUTLER_API_CLIENT` | Dein API Client |
| `BUCHHALTUNGSBUTLER_API_SECRET` | Dein API Secret |
| `BUCHHALTUNGSBUTLER_API_KEY` | Der API-Key des zu verwaltenden Kunden (kann pro Tool-Aufruf überschrieben werden) |

Optional:

| Variable | Beschreibung |
|----------|-------------|
| `BUCHHALTUNGSBUTLER_API_URL` | Standard: `https://webapp.buchhaltungsbutler.de/api/v1` |

## Verwendung in Claude Desktop

1. Öffne die Claude Desktop Konfiguration:
   - macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
   - Windows: `%APPDATA%\Claude\claude_desktop_config.json`

2. Füge den Server hinzu:

```json
{
  "mcpServers": {
    "buchhaltungsbutler": {
      "command": "node",
      "args": ["/absoluter/pfad/zu/buchhaltungsbutler-mcp/dist/index.js"],
      "env": {
        "BUCHHALTUNGSBUTLER_API_CLIENT": "dein-api-client",
        "BUCHHALTUNGSBUTLER_API_SECRET": "dein-api-secret",
        "BUCHHALTUNGSBUTLER_API_KEY": "kunden-api-key"
      }
    }
  }
}
```

3. Claude Desktop neu starten.

## Verwendung in ChatGPT / anderen Clients

Dieser Server verwendet den MCP-Stdio-Transport, der von Claude Desktop nativ unterstützt wird. Für ChatGPT oder andere Clients wird ein MCP-Client-Bridge (z.B. [mcp-proxy](https://github.com/sparfenyuk/mcp-proxy)) benötigt, um Stdio in SSE/WebSocket zu übersetzen:

```bash
npx mcp-proxy node /absoluter/pfad/zu/buchhaltungsbutler-mcp/dist/index.js
```

## Verfügbare Tools

- **Belege**: `list_receipts`, `get_receipt`, `create_receipt`, `upload_receipt`, `delete_receipt`
- **Transaktionen**: `list_transactions`, `get_transaction`, `create_transaction`, `assign_receipt_to_transaction`, `unassign_receipt_from_transaction`
- **Rechnungen**: `create_invoice`, `create_invoice_draft`
- **Buchungen**: `list_postings`, `create_free_posting`
- **Stammdaten**: `list_debtors`, `list_creditors`, `list_posting_accounts`, `create_debtor`, `create_creditor`
- **Sonstiges**: `list_accounts`, `add_comment`, `list_cost_locations`, `create_cost_location`

Die vollständige API-Dokumentation liegt als `api-spec.json` im Projekt und kann mit den offiziellen [BuchhaltungsButler API-Docs](https://app.buchhaltungsbutler.de/docs/api/v1/) abgeglichen werden.

## Sicherheit

- API Client und Secret sind **vertraulich**. Speichere sie nicht im Repository, sondern nur in der Claude-Desktop-Konfiguration oder in Umgebungsvariablen.
- Die `.gitignore` schließt `node_modules/`, `dist/` und `.env` aus.

## Entwicklung

```bash
npm run dev     # TypeScript im Watch-Modus
npm run build   # Einmalig bauen
npm start       # Server starten
```

## Lizenz

MIT

TDQS

B3.1/5.0

Scored across 23 tools

Disambiguation2/5

Several tools have unclear boundaries: create_receipt and create_invoice both create invoices/credit notes, and create_invoice_draft is a near-variant. list_accounts and list_posting_accounts can also be confused. Most other resources are distinct, but these overlaps make tool selection error-prone.

Naming Consistency5/5

All tool names follow a consistent lower_snake_case verb_noun pattern: list_*, get_*, create_*, delete_*, upload_*. Pluralization is consistent for list operations, and longer names like assign_receipt_to_transaction remain predictable.

Tool Count3/5

With 23 tools, the server is at the heavy end of the typical range. Several tools overlap in purpose, especially create_receipt, create_invoice, and create_invoice_draft. The count is not unreasonable for an accounting suite, but the set could be consolidated.

Completeness2/5

The server covers many read/create workflows but lacks update/delete operations for most entities such as transactions, invoices, debtors/creditors, accounts, and cost locations. create_invoice_draft creates a draft with no matching list/get tool, leaving the workflow incomplete.

Maintenance

ActivityMaintained
ResponsivenessNo issues