Koskamo

NormAPI MCP

Official MCP server by NormAPI for validating and generating German e-invoices (XRechnung, ZUGFeRD) against KoSIT rules. It provides tools to check invoice compliance, generate valid XML/PDF invoices from JSON data, and explain specific regulatory rules, supporting both hosted HTTP and local stdio connections.

Endpoint and access

No sign-in: your client connects and lists tools immediately, with no account or key.

NormAPI MCP logo, by NormAPINo sign-inEndpoint checked 2026-10-18Operated by NormAPI
MCP endpoint (Streamable HTTP)
https://normapi.com/mcp
Vendor documentation

What you can do with it

  • Validate XRechnung or ZUGFeRD invoices against official KoSIT rules
  • Generate valid XRechnung or ZUGFeRD PDFs from invoice data
  • Explain specific regulatory rule codes and their requirements
Tools advertised by the last live check:
  • validate_invoice
  • generate_invoice
  • explain_rule

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers a Streamable HTTP server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http normapi-mcp https://normapi.com/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add normapi-mcp --url https://normapi.com/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable normapi-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "normapi-mcp": {
      "url": "https://normapi.com/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure). The type must be streamableHttp for a remote HTTP server.
Cline configuration
{
  "mcpServers": {
    "normapi-mcp": {
      "type": "streamableHttp",
      "url": "https://normapi.com/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start normapi-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "normapi-mcp": {
      "type": "http",
      "url": "https://normapi.com/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http normapi-mcp https://normapi.com/mcp

Claude Desktop

Merge this into claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then restart Claude Desktop.
Claude Desktop configuration
{
  "mcpServers": {
    "normapi-mcp": {
      "url": "https://normapi.com/mcp"
    }
  }
}

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "normapi-mcp": {
      "serverUrl": "https://normapi.com/mcp"
    }
  }
}

Do you run NormAPI MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing