Skip to main content

Moneybird MCP

Language: English · Nederlands

PyPI Python CI

Unofficial community integration. This project is not developed, endorsed, supported, or audited by Moneybird B.V.

Beta 0.8.1. The supported setup is a local MCP server over stdio. It starts mechanically read-only. Experimental writes require an explicit local opt-in and supervised approval.

Use Claude, ChatGPT, Cursor, or another MCP client to search and work with a Moneybird administration. The server can read contacts, invoices, documents, bank mutations, reports, and locally indexed bookkeeping data.

Get started

You need Python 3.11 or newer, an MCP client, and a fresh Moneybird API token.

Recommended: run with uvx

Add this server configuration to your MCP client:

{
  "mcpServers": {
    "moneybird": {
      "command": "uvx",
      "args": ["moneybird-mcp"],
      "env": {
        "MONEYBIRD_ACCESS_TOKEN": "your-token-here",
        "MONEYBIRD_ADMINISTRATION_ID": "optional"
      }
    }
  }
}

Restart the client and ask it to list your Moneybird administrations.

MONEYBIRD_ADMINISTRATION_ID is optional when the token can access only one administration. Never paste a real Moneybird token into a chat, issue, log, or committed file.

A personal API token is the simple, supported way to run this locally: it is one credential you already control, with no application registration involved.

Optional: OAuth with your own registered application

For development, or for self-hosters who want refresh tokens and scoped access, the server can connect through Moneybird's OAuth flow using an OAuth application you register yourself:

moneybird-mcp auth login --env-file /absolute/path/moneybird-mcp.env
moneybird-mcp auth status
moneybird-mcp auth logout

This is not the default public setup, and there is no shared application credential in the package. An OAuth Client Secret authenticates the application rather than the user, so it cannot be shipped inside an installable package — anything distributed to every user is not a secret. Running OAuth locally therefore means bringing your own Client ID and Client Secret.

When both a personal token and an OAuth connection exist, the personal token wins; moneybird-mcp auth status says which one is active. Full detail: Moneybird OAuth.

Claude Code registrations are scoped. Its default local scope is available only in the current project; use --scope user when Moneybird should be available from every project. If claude mcp list says connected but a different project shows no tools, check claude mcp get moneybird and re-add the configuration at user scope. Do not use project scope for a configuration containing a personal token, because project scope writes a shared .mcp.json file.

Install with pip

python -m pip install --upgrade moneybird-mcp
moneybird-mcp

For PDF attachment reading:

python -m pip install --upgrade "moneybird-mcp[pdf]"

Package page: moneybird-mcp on PyPI

On Windows, quit every MCP client that is running moneybird-mcp before installing or upgrading with pip; Windows cannot replace the locked console executable. If pip reports WinError 32, keep the client closed and run the install command again to repair the partial installation. The recommended uvx setup avoids upgrading that in-use console script.

Upgrade

With pip:

python -m pip install --upgrade moneybird-mcp

On Windows, close the MCP client first. If an earlier attempt failed with WinError 32, rerun the same command while the client remains closed.

To force uvx to refresh its cached package metadata:

uvx --refresh-package moneybird-mcp moneybird-mcp

Check the installed command and available options:

moneybird-mcp --help

What it can do

  • Search contacts, sales invoices, purchase invoices, receipts, general journals, and bank mutations.
  • Match unprocessed bank transactions to the open invoices they settle, with the evidence for each candidate, and say so plainly when two candidates fit equally well.
  • Read Moneybird reports, including profit and loss, balance sheet, general ledger, VAT, debtor, and creditor reports.
  • Review purchase invoices, invoice-delivery settings, bank mutations, and bookkeeping inconsistencies.
  • Settle one purchase invoice from an exact group of bank mutations with one preview and approval, including final invoice processing and verification.
  • Audit product data and calculate guarded bulk price changes with exact decimal previews.
  • Read PDF attachments locally when the optional PDF dependency is installed.
  • Build a local search index for faster ranked search.
  • Read the Dutch bookkeeping playbook per topic (VAT, VAT settlement, bank matching, categorisation, consistency) as a tool, not only as an MCP resource.
  • Prepare guarded write previews when writes have been explicitly enabled.

The server advertises its full tool catalogue by default: tool schemas live in the client's cached prompt prefix, so listing them is cheap, while discovering them on demand costs an extra model round trip on every task. Clients that cannot take the full list can run --tool-discovery search for compact Tool Search. See the tool reference and Moneybird API coverage.

Use list_supported_workflows to discover the small set of outcomes that are integrated and tested end to end. The generated workflow catalogue records their risk, mode, version, prerequisites, verification, and limitations. Product tools perform their concrete administration and record preflight themselves.

Read-only and write modes

The server starts mechanically read-only. This is the default and needs no flag:

MONEYBIRD_CAPABILITY_MODE=read_only

Experimental writes are available only in local or authenticated single-user deployments:

MONEYBIRD_CAPABILITY_MODE=write_enabled

Writes use durable prepare/execute approvals and action-specific verification. This is safety machinery, not independent proof that a human approved the action. Keep destructive-tool confirmation enabled in the MCP client and review every preview.

Configuration

The most useful settings are:

Setting Default Purpose
MONEYBIRD_ACCESS_TOKEN none Moneybird personal API token; takes precedence over an OAuth connection
MONEYBIRD_ADMINISTRATION_ID the one chosen at OAuth login, else automatic when unambiguous Administration to use
MONEYBIRD_OAUTH_CLIENT_ID / _SECRET none Your own registered OAuth application, for auth login
MONEYBIRD_OAUTH_SCOPES full Scope profile or explicit list requested at login
MONEYBIRD_OAUTH_PROFILE default Which stored OAuth connection this server uses; auth login --profile writes it
MONEYBIRD_CAPABILITY_MODE read_only read_only or write_enabled
MONEYBIRD_MCP_DATA_DIR ~/.moneybird-mcp for the installed command Local approvals, audit, OAuth, and search state
MCP_TOOL_DISCOVERY search Compact discovery; use full for older clients
MCP_TRANSPORT stdio stdio, http, or legacy sse

The package never discovers .env files automatically. Use an MCP-client environment block or an explicitly selected file:

moneybird-mcp --env-file /absolute/path/moneybird-mcp.env

See Getting started for complete setup examples.

Deployment boundary

Mode Intended use Status
Local stdio One user on one machine Supported default
Authenticated HTTP/SSE One trusted user behind authentication and TLS Experimental

Every HTTP/SSE listener requires MCP_AUTH_TOKEN, including loopback. Non-loopback listeners are refused unless a trusted TLS proxy is explicitly configured. The network transport is intended for one trusted user and does not provide multi-user identity or tenant isolation.

See Deployment and safety, Security policy, and the threat model.

Local data

Installed stdio runs store local state in ~/.moneybird-mcp unless MONEYBIRD_MCP_DATA_DIR is set. This can include:

  • OAuth access and refresh tokens;
  • the approvals SQLite database;
  • per-administration audit logs;
  • search indexes and caches;
  • privacy-safe local telemetry.

These files are not encrypted by this project. Restrict access to the directory and read Local data lifecycle before backing up or deleting it.

Documentation

Support and status

This is a pre-1.0 community project. There is no guaranteed response time, uptime, data recovery, bookkeeping correctness, or tax advice.

Use GitHub Issues for reproducible bugs and feature requests without secrets or customer data. Report vulnerabilities privately as described in SECURITY.md.

Licence

This project is source-available, not OSI-approved open source. It is distributed under the MIT License with the Commons Clause License Condition v1.0.

Personal use, internal organisational use, inspection, and modification are permitted. Selling the software, commercially providing its functionality as a service, or commercially repackaging it requires a separate commercial licence. For commercial licensing, contact the repository owner through GitHub Issues. The complete terms in LICENSE govern.

Release files for moneybird-mcp 0.8.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for moneybird-mcp 0.8.1
File Size Uploaded
moneybird_mcp-0.8.1.tar.gz 498.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for moneybird-mcp 0.8.1
File Interpreter ABI Platform
moneybird_mcp-0.8.1-py3-none-any.whl Python 3 none any Details

Total release size: 796.9 kB

Release files / moneybird_mcp-0.8.1.tar.gz

Download URL moneybird_mcp-0.8.1.tar.gz
Size 498.0 kB
Tags Source
SHA-256 checksum
How to use checksums
a4504f79350b99cbd3f41e4f9bacec3755818345e02a9114a31e411a52edefcf
BLAKE2b-256 checksum
How to use checksums
7c9edc9bd59ca1d7d5e423b1b5122d2044e755622e16380d83be88c1c4c5c2e6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 4, 2026.

Transparency log

Release files / moneybird_mcp-0.8.1-py3-none-any.whl

Download URL moneybird_mcp-0.8.1-py3-none-any.whl
Size 298.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6ac9eb9c5d04bf3c8843d72b394d0cc4874891ebead2542a1b1c4322f526101c
BLAKE2b-256 checksum
How to use checksums
74663cf92e387d55c0e2eb498592a3f61b311ad07260011b3daae1241936750e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 4, 2026.

Transparency log

Release history Release notifications | RSS feed

0.8.2

2 release files

This release

0.8.1 This release

2 release files

0.8.0

2 release files

0.7.0

2 release files

0.6.1

2 release files

0.5.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page