Skip to main content
Glama

acumulus-mcp

MCP server for Acumulus — let an AI assistant (Claude Desktop, Claude Code, Cursor, …) read and modify your Acumulus administration through natural language, over the official Acumulus API.

Runs locally over stdio. Your Acumulus credentials stay on your machine; there is no telemetry and no proxy.

Install

pip install acumulus-mcp

Requires Python 3.10+.

Related MCP server: Exact Online MCP Server

Configure credentials

The server authenticates with your Acumulus contract code, username and an API token (generate one in Acumulus under your profile; it travels in the API's <password> field). Provide them as environment variables:

export ACUMULUS_CONTRACT_CODE=123456
export ACUMULUS_USERNAME=your-username
export ACUMULUS_API_TOKEN=your-api-token
# optional: validate writes without persisting them
export ACUMULUS_TESTMODE=1

Register in your MCP client

Claude Code:

claude mcp add acumulus \
  -e ACUMULUS_CONTRACT_CODE=123456 \
  -e ACUMULUS_USERNAME=your-username \
  -e ACUMULUS_API_TOKEN=your-api-token \
  -- acumulus-mcp

Claude Desktop (claude_desktop_config.json):

{
  "mcpServers": {
    "acumulus": {
      "command": "acumulus-mcp",
      "env": {
        "ACUMULUS_CONTRACT_CODE": "123456",
        "ACUMULUS_USERNAME": "your-username",
        "ACUMULUS_API_TOKEN": "your-api-token"
      }
    }
  }
}

Restart your client, then try: "Use the acumulus whoami tool to test the connection."

Tools

Tool

What it does

whoami

Sanity-check the connection (lists the account picklist).

list_picklist(picklist)

Fetch reference data: accounts, contacts, products, vattypes, costcenters, costheadings, companytypes.

create_invoice(customer, lines, invoice=None)

Add an invoice (invoices/invoice_add.php).

acumulus_request(api_path, fields=None)

Escape hatch — call any Acumulus endpoint directly (e.g. invoices/invoice_set_payment_status.php, entry/entry_info.php). Endpoint paths match the docs at siel.nl/acumulus/API.

The acumulus_request tool means every Acumulus function is reachable even before it gets a dedicated wrapper — the credential/envelope is added for you; you only pass the endpoint path and the function-specific fields.

Safety

Set ACUMULUS_TESTMODE=1 to have Acumulus validate write calls without persisting them — do a dry run before pointing it at the live administration.

License

AGPL-3.0-or-later. For a commercial license, contact nick@easeo.nl.

Available Tools

4 tools
acumulus_requestA

Call any Acumulus function endpoint directly.

Use this for endpoints not covered by the dedicated tools below.

Args: api_path: Path below the stable base, matching the Acumulus docs, e.g. "picklists/picklist_vattypes.php", "invoices/invoice_add.php", "invoices/invoice_set_payment_status.php", "entry/entry_info.php". fields: Extra fields merged into the request envelope. Nested dicts become nested elements; a list value repeats its element (e.g. {"customer": {"invoice": {"line": [{...}, {...}]}}}). Do NOT include the contract/credentials block — that is added for you.

Returns: JSON-encoded response from Acumulus.

Inputs: api_path (required), fields. Returns: result

create_invoiceA

Add an invoice to Acumulus (invoices/invoice_add.php).

Args: customer: Customer-block fields. Common ones: type, contactid, companyname1, fullname, address1, postalcode, city, countrycode, vatnumber, email, overwriteifexists. lines: One dict per invoice line. Common fields: product, itemnumber, unitprice (excl. VAT, 4 decimals), vatrate (defaults to 21), quantity (defaults to 1), nature. invoice: Optional invoice-block fields: concept, number, vattype, issuedate, costcenter, accountnumber, paymentstatus, paymentdate, description, template, invoicenotes.

Set ACUMULUS_TESTMODE=1 to validate without persisting.

Inputs: lines (required), customer (required), invoice. Returns: result

list_picklistA

List an Acumulus picklist (reference data for dropdowns/validation).

Args: picklist: The picklist name. Common values: "accounts" (bank/ledger accounts), "contacts", "products", "vattypes", "costcenters", "costheadings", "companytypes". The endpoint called is picklists/picklist_.php.

Returns the parsed response plus the extracted item list under items.

Inputs: picklist (required). Returns: result

whoamiA

Sanity-check the Acumulus connection by listing the account picklist.

Inputs: no named parameters. Returns: result

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.7/5.0

    Scored across 4 tools

    Disambiguation3/5

    whoami and list_picklist with picklist="accounts" perform essentially the same call, creating genuine redundancy. acumulus_request also overlaps with every dedicated tool by design, though its description explicitly steers usage toward uncovered endpoints, which mitigates the fuzziness.

    Naming Consistency3/5

    create_invoice and list_picklist follow a clean verb_noun pattern, but whoami is a bare verb-less word and acumulus_request is a namespaced prefix_noun, so the set mixes three conventions. Still readable but not predictable.

    Tool Count4/5

    Four tools is on the thin side, but for an API wrapper the generic acumulus_request plus two focused helpers and a connection check is defensible. whoami is arguably redundant given list_picklist, keeping it just shy of ideal.

    Completeness4/5

    acumulus_request makes any Acumulus endpoint reachable, so there are no true dead ends. However dedicated coverage is sparse — invoice creation exists but no dedicated get/update/delete invoice or payment-status tools, leaving common lifecycle operations to the generic escape hatch.

    Maintenance

    ActivityMaintained
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • F
      license
      B
      quality
      B
      maintenance
      Enables an AI assistant to read and manage a local project-management database over stdio: listing and creating projects, tasks, expenses, chats and people, and pulling money, margin, deadline and overdue summaries. It runs on the same service layer and SQLite file as the bundled web UI, so figures shown to the assistant and to the human always agree.
      14
      -
    • F
      license
      Not graded
      quality
      C
      maintenance
      Enables connecting AI assistants to Exact Online through its official REST API with OAuth2 authentication and automatic token refresh. Provides curated tools for reading and, optionally, writing common accounting entities such as accounts, contacts, items, journal entries and sales/purchase invoices, plus generic GET/POST/PUT/DELETE tools for any other endpoint, over local stdio or hosted HTTP transports.
      1
      -
    • A
      license
      Not graded
      quality
      C
      maintenance
      Enables AI assistants to query product footprints, inspect transport activity data, and submit events from iLEAP-conformant endpoints through natural language, using MCP tools over Streamable-HTTP or stdio.
      1
      MIT
    • A
      license
      Not graded
      quality
      B
      maintenance
      Lets an AI assistant run locally over stdio to inspect and test the Klap Core API — looking up charges and timelines, listing webhooks and deliveries, checking accepted token/network pairs, querying metrics, and, in test mode, creating charges, re-checking them on-chain, retrying deliveries and driving sandbox payments. Live environments are read-only unless writes are explicitly opted into, and money-moving or endpoint-management operations are never exposed.
      41 npm
      MIT