mcp-skatteetaten

mcp-skatteetaten

Enables AI assistants to query Norwegian tax data, submit reports, look up population register information, and validate VAT returns through Skatteetaten APIs using Maskinporten authentication.

Category
Visit Server

README

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

Prerequisites

  1. A Norwegian organisation with an organisation number
  2. Access to Maskinporten with a registered client and private key
  3. Rights packages (rettighetspakker) granted by Skatteetaten for the APIs you need
  4. Node.js 20+

Getting Access


Installation

npm install
npm run build

Configuration

Copy .env.example to .env and fill in your credentials:

cp .env.example .env
Variable Required Description
MASKINPORTEN_CLIENT_ID Yes Your Maskinporten client ID
MASKINPORTEN_PRIVATE_KEY_PATH Yes* Path to your RSA private key PEM file
MASKINPORTEN_PRIVATE_KEY_JWK Yes* Or provide the JWK as a JSON string
SKATTEETATEN_ENV No test (default) or production
MASKINPORTEN_ISSUER No Override Maskinporten issuer URL
MASKINPORTEN_TOKEN_ENDPOINT No Override token endpoint URL
FOLKEREGISTERET_AUTH_PACKAGE No offentlig-med-hjemmel (default), offentlig-uten-hjemmel, or privat

*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.js

Or run directly:

MASKINPORTEN_CLIENT_ID=... MASKINPORTEN_PRIVATE_KEY_PATH=... npm start

Available Tools

Income (inntekt)

Tool Description
get_inntekt Income for a person in a specific month
get_inntekt_for_year All income across 12 months for a year

Tax (skatt)

Tool Description
get_beregnet_skatt Calculated tax breakdown
get_summert_skattegrunnlag Aggregated tax basis
get_skattemelding Retrieve tax return document
validate_skattemelding Validate a tax return XML
get_restanse Outstanding tax debts

Property (eiendom)

Tool Description
get_formuesobjekt_fast_eiendom Property assets for a person
get_formuesgrunnlag_eiendomsskatt Property value for tax purposes

Population Register (folkeregisteret)

Tool Description
get_person_folkeregisteret Full person record lookup
search_personer_folkeregisteret Search by criteria
get_folkeregisteret_hendelser Change event feed
get_folkeregisteret_current_sekvens Current event feed position

Wage Reporting (amelding)

Tool Description
submit_amelding Submit monthly A-melding
get_amelding_status Check submission status
get_amelding_tilbakemelding Get feedback on submitted report
list_amelding_for_maaned List submissions for a month

VAT (mva)

Tool Description
validate_mva_melding_xml Validate VAT return XML
validate_mva_melding_json Validate VAT return JSON
get_mva_koder List valid VAT codes

Tax Deduction Cards (skattekort)

Tool Description
get_skattekort Get deduction card for an employee
order_skattekort Bulk order deduction cards
get_skattekort_ordre_status Check order status
get_skattekort_resultat Retrieve completed order results

Claims & Payments (krav-og-betalinger)

Tool Description
get_krav Outstanding claims
get_betalinger Payment history

Third-Party Reporting (tredjepartsopplysninger)

Tool Description
submit_tredjepartsopplysninger Submit third-party data
get_tredjepartsopplysninger_status Check submission status
get_tredjepartsopplysninger_oppgavetyper 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 build

License

MIT

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured