Skip to main content
Glama
mhriemers

banktivity-mcp

by mhriemers

Banktivity SDK & MCP Server

A TypeScript SDK and MCP (Model Context Protocol) server for accessing Banktivity personal finance data.

Packages

This monorepo contains two packages:

  • @mhriemers/banktivity-sdk - A standalone TypeScript SDK for interacting with Banktivity databases

  • @mhriemers/banktivity-mcp - An MCP server built on top of the SDK for use with Claude Desktop and Claude Code

Related MCP server: LunchMoney MCP Server

Quick Start

Installation from npm

npm install -g @mhriemers/banktivity-mcp

Usage with Claude Desktop

Add to your Claude Desktop configuration (~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "banktivity": {
      "command": "npx",
      "args": ["@mhriemers/banktivity-mcp"],
      "env": {
        "BANKTIVITY_FILE_PATH": "/path/to/your/Personal.bank8"
      }
    }
  }
}

Usage with Claude Code

Add the MCP server using the Claude Code CLI:

claude mcp add banktivity -- npx @mhriemers/banktivity-mcp

Then set the environment variable:

export BANKTIVITY_FILE_PATH="/path/to/your/Personal.bank8"

Development Setup

If you want to run from source:

git clone https://github.com/mhriemers/banktivity-mcp.git
cd banktivity-mcp
npm install
npm run build

SDK Usage

The SDK can be used independently in any TypeScript/JavaScript project:

import { BanktivityClient } from "@mhriemers/banktivity-sdk";

const client = new BanktivityClient({ filePath: "/path/to/file.bank8" });

// List accounts
const accounts = client.accounts.list();
console.log(accounts);

// Get account balance
const balance = client.accounts.getBalance(accountId);

// Create a transaction
const result = client.transactions.create({
  title: "Coffee Shop",
  date: "2024-01-15",
  lineItems: [
    { accountId: 1, amount: -5.50 },
    { accountId: 42, amount: 5.50 }
  ]
});

// Search transactions
const transactions = client.transactions.search("grocery");

// Close connection when done
client.close();

SDK API Reference

Accounts

client.accounts.list({ includeHidden?: boolean }): Account[]
client.accounts.get(id: number): Account | null
client.accounts.findByName(name: string): Account | null
client.accounts.getBalance(id: number): number
client.accounts.create(input: CreateAccountInput): number
client.accounts.getNetWorth(): NetWorth
client.accounts.getCategoryAnalysis(type: "income" | "expense", filter?): CategorySpending[]

Transactions

client.transactions.list(filter?: TransactionFilter): Transaction[]
client.transactions.get(id: number): Transaction | null
client.transactions.search(query: string, limit?: number): Transaction[]
client.transactions.count(): number
client.transactions.create(input: CreateTransactionInput): { transactionId, lineItemIds }
client.transactions.update(id: number, input: UpdateTransactionInput): boolean
client.transactions.delete(id: number): boolean
client.transactions.reconcile(ids: number[], cleared?: boolean): number

Line Items

client.lineItems.get(id: number): LineItem | null
client.lineItems.getForTransaction(transactionId: number): LineItem[]
client.lineItems.create(transactionId, accountId, amount, memo?): number
client.lineItems.update(id: number, input: UpdateLineItemInput): boolean
client.lineItems.delete(id: number): boolean

Tags

client.tags.list(): Tag[]
client.tags.get(id: number): Tag | null
client.tags.getByName(name: string): Tag | null
client.tags.create(name: string): number
client.tags.tagTransaction(transactionId, tagId): number
client.tags.untagTransaction(transactionId, tagId): number

Templates

client.templates.list(): TransactionTemplate[]
client.templates.get(id: number): TransactionTemplate | null
client.templates.create(input: CreateTransactionTemplateInput): number
client.templates.update(id: number, input: UpdateTransactionTemplateInput): boolean
client.templates.delete(id: number): boolean

Import Rules

client.importRules.list(): ImportRule[]
client.importRules.get(id: number): ImportRule | null
client.importRules.create(input: CreateImportRuleInput): number
client.importRules.update(id: number, input: UpdateImportRuleInput): boolean
client.importRules.delete(id: number): boolean
client.importRules.match(description: string): ImportRule[]

Scheduled Transactions

client.scheduledTransactions.list(): ScheduledTransaction[]
client.scheduledTransactions.get(id: number): ScheduledTransaction | null
client.scheduledTransactions.create(input: CreateScheduledTransactionInput): number
client.scheduledTransactions.update(id: number, input: UpdateScheduledTransactionInput): boolean
client.scheduledTransactions.delete(id: number): boolean

MCP Tools

The MCP server provides 35 tools for interacting with Banktivity:

Account Tools

Tool

Description

list_accounts

List all accounts with types and balances

get_account_balance

Get balance for a specific account

create_account

Create a new account

get_spending_by_category

Get spending breakdown by expense category

get_income_by_category

Get income breakdown by income category

get_net_worth

Calculate net worth

get_summary

Get database summary

Transaction Tools

Tool

Description

get_transactions

Get transactions with optional filtering

search_transactions

Search transactions by payee or notes

create_transaction

Create a new transaction with line items

update_transaction

Update transaction details

delete_transaction

Delete a transaction

reconcile_transactions

Mark transactions as cleared

Line Item Tools

Tool

Description

get_line_item

Get a specific line item

update_line_item

Update a line item

delete_line_item

Delete a line item

add_line_item

Add a line item to a transaction

Tag Tools

Tool

Description

get_tags

List all tags

create_tag

Create a new tag

tag_transaction

Add or remove a tag from a transaction

Template Tools

Tool

Description

list_transaction_templates

List all templates

get_transaction_template

Get a specific template

create_transaction_template

Create a new template

update_transaction_template

Update a template

delete_transaction_template

Delete a template

Import Rule Tools

Tool

Description

list_import_rules

List all import rules

get_import_rule

Get a specific import rule

create_import_rule

Create a new import rule

update_import_rule

Update an import rule

delete_import_rule

Delete an import rule

match_import_rules

Test which rules match a description

Scheduled Transaction Tools

Tool

Description

list_scheduled_transactions

List all scheduled transactions

get_scheduled_transaction

Get a specific scheduled transaction

create_scheduled_transaction

Create a new scheduled transaction

update_scheduled_transaction

Update a scheduled transaction

delete_scheduled_transaction

Delete a scheduled transaction

Project Structure

banktivity-mcp/
├── package.json              # Root workspace config
├── tsconfig.base.json        # Shared TypeScript config
├── packages/
│   ├── sdk/                  # @mhriemers/banktivity-sdk package
│   │   ├── src/
│   │   │   ├── index.ts      # Main exports
│   │   │   ├── client.ts     # BanktivityClient class
│   │   │   ├── types.ts      # TypeScript interfaces
│   │   │   ├── constants.ts  # Database constants
│   │   │   ├── errors.ts     # Custom error classes
│   │   │   ├── connection.ts # Database connection
│   │   │   ├── utils/        # Utility functions
│   │   │   └── repositories/ # Data access layer
│   │   └── package.json
│   │
│   └── mcp/                  # @mhriemers/banktivity-mcp package
│       ├── src/
│       │   ├── index.ts      # MCP server entry point
│       │   └── tools/        # Tool implementations
│       └── package.json

Security

This server provides both read and write access to your Banktivity data. Write operations will modify your database directly. Always ensure you have backups before using write operations.

License

MIT

A
license - permissive license
-
quality - not tested
C
maintenance

Maintenance

Maintainers
<1hResponse time
Release cycle
Releases (12mo)
Commit activity
Issues opened vs closed

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/mhriemers/banktivity-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server