mcp-skatteetaten
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-skatteetaten get income for person 12345678901 in January 2024"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
mcp-skatteetaten
A comprehensive Model Context Protocol (MCP) server for Skatteetaten — the Norwegian Tax Administration.
Exposes 35+ tools covering all major Skatteetaten APIs so that LLM agents and AI assistants can query tax data, submit reports, look up population register information, validate VAT returns, and more — all authenticated via Maskinporten.
Covered APIs
API | Description |
Inntekt | Employer-reported income (monthly/yearly) |
Beregnet Skatt | Calculated tax: trinnskatt, trygdeavgift, fellesskatt |
Summert Skattegrunnlag | Aggregated tax basis (income, assets, deductions) |
Skattemelding | Tax return retrieval and validation |
Restanse | Outstanding tax debts and arrears |
Formuesobjekt Fast Eiendom | Property ownership and classification |
Formuesgrunnlag Eiendomsskatt | Property value basis for property tax |
Folkeregisteret | Population register: lookup, search, event feed |
A-Melding | Wage/personnel reporting (replaces Altinn A02) |
A-Melding Tilbakemelding | Feedback for submitted A-meldinger |
MVA-Melding | VAT return validation |
Skattekorttilarbeidsgiver | Tax deduction cards for employers |
Krav og Betalinger | Claims and payment history (Fremtidens innkreving) |
Tredjepartsopplysninger | Third-party data reporting (banks, brokers, etc.) |
Related MCP server: goodvat
Prerequisites
A Norwegian organisation with an organisation number
Access to Maskinporten with a registered client and private key
Rights packages (rettighetspakker) granted by Skatteetaten for the APIs you need
Node.js 20+
Getting Access
Register your Maskinporten client at Samarbeidsportalen
Request the relevant scopes from Skatteetaten at skatteetaten.no/deling
For test environments, use Tenor test data to get synthetic identifiers
Installation
npm install
npm run buildConfiguration
Copy .env.example to .env and fill in your credentials:
cp .env.example .envVariable | Required | Description |
| Yes | Your Maskinporten client ID |
| Yes* | Path to your RSA private key PEM file |
| Yes* | Or provide the JWK as a JSON string |
| No |
|
| No | Override Maskinporten issuer URL |
| No | Override token endpoint URL |
| No |
|
*Either MASKINPORTEN_PRIVATE_KEY_PATH or MASKINPORTEN_PRIVATE_KEY_JWK is required.
Usage
With Claude Desktop
Add to your claude_desktop_config.json:
{
"mcpServers": {
"skatteetaten": {
"command": "node",
"args": ["/path/to/mcp-skatteetaten/dist/index.js"],
"env": {
"MASKINPORTEN_CLIENT_ID": "your-client-id",
"MASKINPORTEN_PRIVATE_KEY_PATH": "/path/to/private-key.pem",
"SKATTEETATEN_ENV": "test"
}
}
}
}With Claude Code
claude mcp add skatteetaten -- node /path/to/mcp-skatteetaten/dist/index.jsOr run directly:
MASKINPORTEN_CLIENT_ID=... MASKINPORTEN_PRIVATE_KEY_PATH=... npm startAvailable Tools
Income (inntekt)
Tool | Description |
| Income for a person in a specific month |
| All income across 12 months for a year |
Tax (skatt)
Tool | Description |
| Calculated tax breakdown |
| Aggregated tax basis |
| Retrieve tax return document |
| Validate a tax return XML |
| Outstanding tax debts |
Property (eiendom)
Tool | Description |
| Property assets for a person |
| Property value for tax purposes |
Population Register (folkeregisteret)
Tool | Description |
| Full person record lookup |
| Search by criteria |
| Change event feed |
| Current event feed position |
Wage Reporting (amelding)
Tool | Description |
| Submit monthly A-melding |
| Check submission status |
| Get feedback on submitted report |
| List submissions for a month |
VAT (mva)
Tool | Description |
| Validate VAT return XML |
| Validate VAT return JSON |
| List valid VAT codes |
Tax Deduction Cards (skattekort)
Tool | Description |
| Get deduction card for an employee |
| Bulk order deduction cards |
| Check order status |
| Retrieve completed order results |
Claims & Payments (krav-og-betalinger)
Tool | Description |
| Outstanding claims |
| Payment history |
Third-Party Reporting (tredjepartsopplysninger)
Tool | Description |
| Submit third-party data |
| Check submission status |
| List valid report types |
Authentication
All APIs use Maskinporten for server-to-server OAuth2 authentication with enterprise certificates.
The client automatically:
Creates signed JWT grants using your RSA private key
Exchanges them for Maskinporten access tokens
Caches tokens until 30 seconds before expiry
Fetches per-scope tokens (different scopes for different APIs)
Test environment: https://test.maskinporten.no/
Production: https://maskinporten.no/
API Documentation
Development
# Run in development mode
npm run dev
# Type check
npm run typecheck
# Build
npm run buildLicense
MIT
Available Tools
52 toolsget_amelding_statusB
Check the status of a submitted A-melding by its innsendingId.
Inputs: innsendingId (required).
get_amelding_tilbakemeldingB
Get feedback (tilbakemelding) for a processed A-melding. Contains errors and deviations found by Skatteetaten.
Inputs: innsendingId (required).
get_arbeidsgiveravgiftA
Get employer social security contribution (arbeidsgiveravgift) rates by geographic zone. No authentication required.
Inputs: no named parameters.
get_avskrivningssatserA
Get depreciation rates (avskrivningssatser) for different classes of business assets (machinery, buildings, vehicles, etc.). No authentication required.
Inputs: no named parameters.
get_beregnet_skattB
Get calculated tax details for a person. Returns income, deductions, assets, debt, and final calculated tax (trinnskatt, trygdeavgift, fellesskatt, etc.).
Inputs: inntektsaar (required), rettighetspakke (required), norskIdentifikator (required), stadie.
get_betalingerB
Get payment history for a person or organisation.
Inputs: identifikator (required), fraDate, tilDate.
get_bilgodtgjorelseA
Get car mileage reimbursement rates (kilometergodtgjørelse / bilgodtgjørelse) — tax-free rates per km. No authentication required.
Inputs: no named parameters.
get_bsu_fradragA
Get BSU (Boligsparing for Ungdom) deduction limits — home savings scheme for young people. No authentication required.
Inputs: no named parameters.
get_fagforeningsfradragB
Get union membership deduction (fagforeningsfradrag) — maximum deductible union fee. No authentication required.
Inputs: no named parameters.
get_folkeregisteret_current_sekvensA
Get the current (latest) sequence number for the population register event feed.
Inputs: no named parameters.
get_folkeregisteret_hendelserA
Get population register change events (hendelsesliste). Use to track changes to person records.
Inputs: fraSekvens (required), antall.
get_formuesgrunnlag_eiendomsskattA
Get property value basis for property tax (eiendomsskatt). Returns market value and calculated tax basis.
Inputs: bruksnummer (required), inntektsaar (required), gaardsnummer (required), kommunenummer (required), +3 more.
get_formuesobjekt_fast_eiendomB
Get property assets (fast eiendom) for a person. Returns classification and ownership of real properties.
Inputs: inntektsaar (required), rettighetspakke (required), norskIdentifikator (required).
get_formuesskattA
Get formuesskatt (wealth tax) rates and net wealth thresholds. No authentication required.
Inputs: no named parameters.
get_frikortgrenseA
Get the frikortgrense — the income threshold below which no tax is withheld. Employees earning less than this get a frikort. No authentication required.
Inputs: no named parameters.
get_hjemmekontor_fradragA
Get rules and rates for the home office deduction (hjemmekontorfradrag). No authentication required.
Inputs: no named parameters.
get_inntektA
Get income information for a person in a given month. Returns employer-reported income, deductions, and withholding tax (forskuddstrekk).
Inputs: inntektsaar (required), inntektsmåned (required), rettighetspakke (required), norskIdentifikator (required).
get_inntekt_for_yearA
Get all income for a person across all 12 months in a given year. Aggregates monthly data.
Inputs: inntektsaar (required), rettighetspakke (required), norskIdentifikator (required).
get_kravC
Get outstanding tax claims (krav) for a person or organisation. Part of Fremtidens innkreving.
Inputs: identifikator (required), kravtype, kravStatus, forfallsdatoFra, +1 more.
get_minstefradragA
Get minstefradrag (standard employment deduction) rates and maximum amounts. Applied automatically to wage income. No authentication required.
Inputs: no named parameters.
get_mva_koderA
Get the list of valid VAT codes (MVA-koder) for reporting.
Inputs: no named parameters.
get_mva_satserA
Get Norwegian VAT (merverdiavgift) rates: standard 25%, reduced 15% (food), 12% (transport/hotel/culture). No authentication required.
Inputs: no named parameters.
get_person_folkeregisteretB
Look up a person in the Norwegian Population Register (Folkeregisteret). Returns name, birth date, address, civil status, citizenship, and more.
Inputs: norskIdentifikator (required), part.
get_personfradragA
Get personfradrag (personal allowance) — the standard deduction applied to all taxpayers before income tax is calculated. No authentication required.
Inputs: no named parameters.
get_reisefradragA
Get rules for commuter/travel deduction (reisefradrag / pendlerfradrag) — deduction for work travel above the minimum threshold. No authentication required.
Inputs: no named parameters.
get_rentefradragA
Get rules and limits for interest deduction (rentefradrag / gjeldsrentefradrag) on mortgage and other loans. No authentication required.
Inputs: no named parameters.
get_restanseA
Get outstanding tax debts (restanse) for a person. Returns unpaid claims held by Skatteetaten.
Inputs: rettighetspakke (required), norskIdentifikator (required).
get_selskapsskattA
Get corporate income tax (selskapsskatt) rates for limited companies and other entities. No authentication required.
Inputs: no named parameters.
get_skatteetaten_pageA
Fetch any public page from skatteetaten.no by its path. Use this for topics not covered by specific tools. No authentication required.
Inputs: path (required).
get_skatteetaten_renterA
Get Skatteetaten's current interest rates for underpayment, overpayment, and late payment of taxes. No authentication required.
Inputs: no named parameters.
get_skattefradrag_pensjonB
Get pension income tax credit (skattefradrag for pensjonsinntekt) amounts. No authentication required.
Inputs: no named parameters.
get_skattekortA
Get the tax deduction card (skattekort) for an employee. Returns table number, percentage rate, or frikort status.
Inputs: trekkaar (required), arbeidsgiveridentifikator (required), arbeidstakeridentifikator (required).
get_skattekort_ordre_statusB
Check the status of a skattekort order.
Inputs: ordreId (required).
get_skattekort_resultatA
Retrieve skattekort results for a completed order.
Inputs: ordreId (required).
get_skattemeldingA
Retrieve the tax return (skattemelding) for a person in a given year.
Inputs: inntektsaar (required), norskIdentifikator (required).
get_skattemelding_fristerA
Get tax return (skattemelding) deadlines and key dates for the tax year. No authentication required.
Inputs: no named parameters.
get_skattesatserA
Get current Norwegian tax rates from skatteetaten.no. Covers income tax, bracket tax (trinnskatt), and social security (trygdeavgift). No authentication required.
Inputs: no named parameters.
get_skattesatser_indexA
Get the full index of all rate pages on skatteetaten.no/satser/ — useful for discovering what topics are available. No authentication required.
Inputs: no named parameters.
get_summert_skattegrunnlagA
Get aggregated tax basis (summert skattegrunnlag) for a person. Returns total income, assets, and deductions without item-level detail.
Inputs: inntektsaar (required), rettighetspakke (required), norskIdentifikator (required), stadie.
get_tredjepartsopplysninger_oppgavetyperA
Get the list of valid oppgavetyper (report types) for third-party data reporting.
Inputs: no named parameters.
get_tredjepartsopplysninger_statusB
Check the processing status of a submitted tredjepartsopplysninger report.
Inputs: innsendingId (required).
get_trinnskatt_satserA
Get trinnskatt (bracket/step tax) rates and income thresholds for each bracket. No authentication required.
Inputs: no named parameters.
get_trygdeavgiftA
Get social security contribution (trygdeavgift) rates by income type (wage, self-employed, pension). No authentication required.
Inputs: no named parameters.
list_amelding_for_maanedA
List all A-meldinger submitted for a given calendar month.
Inputs: kalendermaaned (required), organisasjonsnummer (required).
order_skattekortB
Order tax deduction cards (skattekort) for multiple employees at once.
Inputs: requests (required), trekkaar (required).
search_personer_folkeregisteretB
Search for persons in the Population Register by criteria such as gender, birth date range, municipality, citizenship, or civil status.
Inputs: antall, kjoenn, status, sivilstand, +4 more.
search_skatteetatenA
Search skatteetaten.no for any tax-related topic. Returns content from the most relevant public page. No authentication required.
Inputs: query (required).
submit_ameldingA
Submit an A-melding (wage and personnel report) to Skatteetaten. Required for all employers monthly.
Inputs: amelding (required).
submit_tredjepartsopplysningerA
Submit third-party information (tredjepartsopplysninger) to Skatteetaten. Used by banks, insurance companies, and brokers to report taxpayer data.
Inputs: data (required).
validate_mva_melding_jsonB
Validate a VAT return (MVA-melding) provided as JSON. Returns validation result.
Inputs: melding (required).
validate_mva_melding_xmlA
Validate a VAT return (MVA-melding) XML document. Returns validation errors, warnings, and deviations.
Inputs: xmlContent (required), meldingstype (required).
validate_skattemeldingA
Validate a tax return XML document before submission. Returns errors, warnings, and deviations.
Inputs: xmlContent (required), inntektsaar (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 52 tools
Most tools have distinct purposes, but some near-overlaps exist: get_restanse and get_krav both relate to outstanding tax claims, and get_trinnskatt_satser overlaps with get_skattesatser. Descriptions are specific enough to guide selection, so agents are unlikely to misselect if they read carefully.
All tools follow a consistent verb_noun pattern using lowercase with underscores, primarily get_*, with a few action verbs like submit_, validate_, order_, search_, and list_. No mixing of conventions such as camelCase, so the naming is highly predictable.
At 52 tools, this server is excessively large, exceeding the 50-tool threshold for an extreme mismatch. While the Norwegian tax domain is broad, this many tools creates navigation overhead and suggests unnecessary granularity; many rate/deduction tools could be consolidated.
The server covers a wide range of tax-related operations: fetching rates, retrieving income/tax data, submitting A-melding and third-party reports, managing skattekort, and accessing the population register. However, there are notable gaps, such as no tool to submit a skattemelding (only validate) and no update/delete operations for several entity types.
Maintenance
Related MCP Connectors
Norwegian public data for AI agents: companies, tenders, addresses, laws, exchange rates.
Validate EU, UK, AU VAT numbers for AI agents. EU ViDA e-invoicing compliance.
Pay-per-call EU & Nordic data for AI agents: VAT/VIES, MiCA, ECB FX, holidays, DK power. x402.
Norway's company register (Enhetsregisteret) for AI: lookup, search, name resolution, key financials
Related MCP Servers
- AlicenseBqualityDmaintenanceEnables AI assistants to interact with the Tripletex accounting API to manage time tracking, projects, and timesheet approvals through natural language. It also supports searching and managing outgoing invoices and processing supplier invoice approvals.312ISC
- AlicenseBqualityDmaintenanceEnables AI assistants to answer tax compliance questions (VAT, sales tax, GST) and validate EU VAT numbers in real time via the VIES registry.28 npmMIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to interact with the Tripletex accounting system via 56 tools and 18 skills for orders, invoices, bookkeeping, reports, projects, and travel expenses.23MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI assistants to read and write accounting data in PowerOffice Go, including bookkeeping, sales, purchases, payroll, time tracking, and read-only bank access, with support for multiple companies and strict isolation.MIT