Skip to main content

OpenAccountants MCP Server

A read-only Model Context Protocol server that gives Claude, Cursor, and any MCP client on-demand access to 134 countries of open-source tax skills — no manual file uploads.

Why this exists

Without MCP, using OpenAccountants means downloading a country folder and dragging .md files into your LLM by hand, every conversation. With MCP, your AI assistant discovers and fetches the right skills automatically:

You:    "Help me with my Malta taxes. Here's my bank statement."
          ↓
Claude: calls list_jurisdictions → sees "malta"
Claude: calls list_files("malta") → foundation.md, malta-vat.md, …
Claude: calls get_file("malta", "foundation.md") → full skill in context
Claude: calls get_file("malta", "malta-vat.md") → VAT rules loaded
          ↓
Claude: now processes your bank statement with the right tax rules

Install once, configure once — skills are available in every conversation from that point on.

Tools

Tool Description
list_jurisdictions Returns every country slug that has at least one .md skill file under packages/.
list_files Given a jurisdiction slug (e.g. malta), returns the .md / .json filenames in that package.
get_file Given a jurisdiction + filename, returns the full UTF-8 text of that skill file (capped at 2 MB).

All access is read-only and path-sandboxed to the packages/ directory.

Quick start

1. Clone and install

Requires Python 3.10+.

git clone https://github.com/openaccountants/openaccountants.git
cd openaccountants
pip install ./mcp

Or with uv (recommended):

uv pip install ./mcp

2. Connect to your AI client

Pick one of the following.

Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS):

{
  "mcpServers": {
    "openaccountants": {
      "command": "openaccountants-mcp"
    }
  }
}

If installed in a virtualenv or with uv:

{
  "mcpServers": {
    "openaccountants": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/openaccountants/mcp", "openaccountants-mcp"]
    }
  }
}

Cursor

Add to .cursor/mcp.json in the project (or via Cursor Settings > MCP):

{
  "mcpServers": {
    "openaccountants": {
      "command": "openaccountants-mcp"
    }
  }
}

Any other MCP client

Run openaccountants-mcp (or python -m openaccountants_mcp) as a stdio transport server.

3. Start chatting

Help me with my 2025 taxes. Here's my bank statement.

The AI will call the MCP tools behind the scenes to load the right country skills, then classify transactions and produce a working paper — all without you uploading a single file.

Environment variables

Variable Default Description
OPENACCOUNTANTS_ROOT Auto-detected repo root (parent of mcp/) Path to your OpenAccountants checkout. The server reads $OPENACCOUNTANTS_ROOT/packages/.

What changes vs manual upload

Before (manual) After (MCP)
Download folder, upload files by hand One-time install, always available
Pick the right files yourself Model discovers what's available
Repeat for every new conversation Persistent — server always running
Can't easily switch countries mid-chat Model calls list_jurisdictions and pivots

Smoke test

Run from the repo root to verify everything works:

python mcp/smoke_test.py

All 14 checks should pass (path safety, tool outputs, jurisdiction count).

Disclaimer

All skills and outputs are for informational and computational purposes only. Not tax advice. Not a replacement for professional judgment. Content quality is tiered (Q1-Q5) — most skills are not practitioner battle-tested. Always have a qualified professional review before filing.

Metadata

Release files for openaccountants-mcp 0.1.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 openaccountants-mcp 0.1.1
File Size Uploaded
openaccountants_mcp-0.1.1.tar.gz 4.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for openaccountants-mcp 0.1.1
File Interpreter ABI Platform
openaccountants_mcp-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 10.1 kB

Release files / openaccountants_mcp-0.1.1.tar.gz

Download URL openaccountants_mcp-0.1.1.tar.gz
Size 4.9 kB
Tags Source
SHA-256 checksum
How to use checksums
8da77e4b2f16e7e5c82aacc0fa6a7191851c4a258d3ffc2bcfc42fc074b7928b
BLAKE2b-256 checksum
How to use checksums
77770c72988e9dc3d035aa23443b8a739a260f78d52b8e7cde93f633c827b68d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.13

Release files / openaccountants_mcp-0.1.1-py3-none-any.whl

Download URL openaccountants_mcp-0.1.1-py3-none-any.whl
Size 5.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
281ff9948cc0684215a223d33270a7d5dcc96d017ba657ac3303f30841dfbeda
BLAKE2b-256 checksum
How to use checksums
e9ffe85204e69770dcf880dc25383848bcde916e524bbcb52d57f0688ea646d3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.13

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files

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