Skip to main content

danish-tax-mcp

MCP server for Danish personal income tax. It has the yearly rates and thresholds, each with the official source it came from, calculators for income tax, the skattekort, share income and property tax, and lookups in SKAT's positivliste and Den juridiske vejledning.

The results are estimates for planning. What you actually owe is set by your årsopgørelse from Skattestyrelsen.

Install

You need uv. For Claude Code:

claude mcp add dk-tax -- uvx danish-tax-mcp

Other MCP clients can run the same command over stdio. To pin a version, use uvx danish-tax-mcp@0.4.0.

Tools

Tool
list_figures(year) The figure keys for a year, with name and unit
get_figures(year, keys) Values with source, date checked and status
get_kommune(year, kommune) Kommuneskat, kirkeskat, skatteloftsnedslag and grundskyld
estimate_salary_tax(...) Income tax for an unmarried employee, with take-home pay and marginal rate
estimate_couple_tax(...) Income tax for a married couple living together at year end, with what moves between the spouses (personfradrag, kapitalindkomst, underskud)
estimate_payslip(...) Trækprocent and månedsfradrag from a forskudsopgørelse, monthly payout, share vests and expected restskat, with an optional spouse (2026 onwards)
estimate_property_tax(...) Ejendomsværdiskat and grundskyld for an owner-occupied home, including the years it is bought and sold, with the cap on grundskyld increases (2026 onwards). Enter the valuation for the year before the income year: the 2026 tax uses the 2025 ejendomsværdi and grundværdi
estimate_share_income_tax(...) Skat af aktieindkomst (27 % and 42 %) for one person or a married couple, with withheld udbytteskat, losses on listed and unlisted shares, and amounts carried forward
lookup_abis(query, year) Whether a fund is on SKAT's list of aktiebaserede investeringsselskaber for a year, read live from skat.dk
get_jv_section(section) The current text of a section of Den juridiske vejledning, read live from info.skat.dk

The two lookups fetch public pages from skat.dk and info.skat.dk and cache them in ~/.cache/dk-tax. Your query is matched locally and is not sent anywhere.

Example questions:

  • Hvad er topskattegrænsen i 2027?
  • How much tax do I pay on 900.000 kr. in Aarhus?
  • What happens to my trækprocent if I put my bonus and RSUs in the forskudsopgørelse?
  • Hvad bliver ejendomsværdiskatten på en lejlighed vurderet til 4 mio. kr. i Aarhus?
  • How much tax do I pay if I sell shares with a gain of 120.000 kr.?
  • My spouse is on unpaid parental leave. How much of their personfradrag can I use?
  • Is IE00B4L5Y983 on the positivliste, and how is it taxed?

Coverage

Income years 2025 to 2027, and all 98 kommuner. 2023 is included only because the official worked example is from that year. Foreign withholding tax on dividends and business income are not covered yet.

Testing

The salary calculator reproduces svmn.dk's worked example for 2023 to the øre, and the skatteloft reduction matches svmn.dk's table for every kommune in 2025 to 2027. The skattekort formulas reproduce SKAT's examples. Where the law doesn't settle something (mostly rounding), the assumption is written down in the module docstring in calc/. The aktieindkomst split is checked against the 2026 examples in Den juridiske vejledning (C.E.3.2.4.1.2).

uv run pytest
uv run dk-tax     # start the server

Data

One YAML file per year in src/dk_tax/figures/:

bundskat:
  name: Bundskatteprocent     # term used in the source
  value: 12.01                # as printed: 12.01 means 12,01 %
  unit: percent               # percent or DKK
  source: https://svmn.dk/...
  verified: 2026-11-01
  status: verified            # verified, secondary, unverified or proposed
  note: PSL § 6.

Keys are the Danish terms with æ, ø, å written as ae, oe, aa. They follow the law of each year, so 2025 has the old 15 % topskat and no mellemskat.

New figures come out every autumn. CONTRIBUTING.md describes how to add a year.

License

MIT

Metadata

Release files for danish-tax-mcp 0.4.0

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

Source distribution (sdist)

Source distribution for danish-tax-mcp 0.4.0
File Size Uploaded Provenance Actions
danish_tax_mcp-0.4.0.tar.gz 45.1 kB Without provenance Details for danish_tax_mcp-0.4.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for danish-tax-mcp 0.4.0
File Interpreter ABI Platform Actions
danish_tax_mcp-0.4.0-py3-none-any.whl Python 3 none any Details for danish_tax_mcp-0.4.0-py3-none-any.whl

Total release size: 104.9 kB

Release files / danish_tax_mcp-0.4.0.tar.gz

Download URL danish_tax_mcp-0.4.0.tar.gz
Size 45.1 kB
Tags Source
SHA-256 checksum
How to use checksums
2e46963c04ca9f4802c2c63cfc890c4e38747a3df5d0dc51d76ce67c5f1813f4
BLAKE2b-256 checksum
How to use checksums
59f0c877ab89dac4655162bbe3cf487c3aadad1ee2a39d5137ef410e365ebe4b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.7 {"installer":{"name":"uv","version":"0.13.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / danish_tax_mcp-0.4.0-py3-none-any.whl

Download URL danish_tax_mcp-0.4.0-py3-none-any.whl
Size 59.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
36ca8024b5408a8d17e6a41279cff11a9232310357162d1446ee264286552b1d
BLAKE2b-256 checksum
How to use checksums
06aed63e7623ca678fab7075d150e9ff58ea2794923cccafdee410b0d44053b4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.7 {"installer":{"name":"uv","version":"0.13.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Security for danish-tax-mcp 0.4.0

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.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.4.0 This release

2 release files No provenance

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