Catalog PyPI
Back to packageRELEASE DETAILS

0.1.0

PyPI

acumulus-mcp

MCP server for Acumulus — let Claude (Desktop, Code, Cursor) read and modify your Acumulus administration via natural language.

acumulusaianthropicautomationboekhoudingclaudefactuurinvoicingmcpmodel-context-protocolnetherlands
Published17 Oct 2026
Direct dependencies7
Transitive dependenciesNot calculated

README

Version 0.1.0 documentation

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+.

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

ToolWhat it does
whoamiSanity-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.

Downloads & popularity

Awaiting observations

No metric observations yet

Download counts and popularity will appear here as the collector receives them.

Declared dependencies 7

Native requirements
7 direct targetsNot calculated transitive count
Package / targetRequirementRelationship
httpx
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
httpx>=0.25runtime
mcp
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
mcp<2,>=1.0runtime
build
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
build>=1.0; extra == "dev"runtime
pytest-asyncio
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
pytest-asyncio>=0.23; extra == "dev"runtime
pytest
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
pytest>=8.0; extra == "dev"runtime
respx
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
respx>=0.21; extra == "dev"runtime
twine
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
twine>=5.0; extra == "dev"runtime

Distribution files

2 collected
acumulus_mcp-0.1.0-py3-none-any.whl

bdist_wheel · 22.12 KB · Python py3

Source file
acumulus_mcp-0.1.0.tar.gz

sdist · 20.38 KB · Python source

Source file

Repository

PENDING
nickaldewereld/acumulus-mcp

Shared repository data · GitHub

License detected in repository
Not collected

Metadata history

Meaningful changes
Current collected state Current

Observed since 20 Oct, 18:43 UTC

No superseded metadata states collected. Unchanged observations do not create new revisions.

Record identity

package_version:2d974c5d63ccc8f51cc5b2ec883b244f2a2d012cd266807ab6da910b3b7188aa

Other collected versions

View all collected versions →