Skip to main content

MCP server for querying the Swiss Zefix company register (Handelsregister)

Project description

mcp-server-zefix

Look up any Swiss company directly from Claude.

PyPI License: MIT Tests

An MCP server that connects Claude to Zefix, Switzerland's official company register (Handelsregister). Zefix is operated by the Federal Office of Justice and provides authoritative data from all 26 cantonal commercial registers -- company details, legal forms, audit firms, corporate history, and official gazette publications.

What you can ask

  • "Search for Novartis on Zefix"
  • "Find all foundations in Basel"
  • "Who audits Novartis AG?"
  • "What companies has Novartis taken over?"
  • "Show me the corporate history of Huber Baustoffe AG"
  • "What capital changes has cohaga AG had recently?"
  • "Find all GmbHs in Zurich"
  • "List all Swiss legal forms in English"

Quick Start

Claude Code

claude mcp add zefix -- uvx mcp-server-zefix

Claude Desktop

Add to your claude_desktop_config.json (~/Library/Application Support/Claude/claude_desktop_config.json on macOS, %APPDATA%\Claude\claude_desktop_config.json on Windows):

{
  "mcpServers": {
    "zefix": {
      "command": "uvx",
      "args": ["mcp-server-zefix"]
    }
  }
}

No API key or credentials needed. Works out of the box.

Tools

Tool Description
search_companies Search by name (wildcards supported), filter by canton and legal form
get_company_by_uid Full company profile: address, purpose, audit firm, takeover history, branch offices, previous names
get_company_by_chid Same as above, using the CH-ID identifier
get_company_publications SHAB timeline: board changes, capital changes, mergers, address changes, and more
list_legal_forms All Swiss legal forms (AG, GmbH, Stiftung, etc.) with IDs for filtering

What you get

A company lookup returns:

  • Identifiers -- name, UID, CH-ID, status, legal form
  • Location -- registered office, full address
  • Purpose -- the company's stated business purpose
  • Audit firm -- name and UID of the auditor
  • Corporate history -- companies absorbed, acquisitions, previous names
  • Branch offices -- all registered branch locations
  • SHAB publications -- timeline of legally significant events from the Swiss Official Gazette (board changes, capital changes, mergers, purpose changes)
  • Cantonal register link -- direct link to the full excerpt with board members and signatories

Configuration

Works with zero configuration using the public Zefix API. For the official authenticated API, set these environment variables:

Variable Default Description
ZEFIX_BASE_URL https://www.zefix.ch/ZefixREST/api/v1 API base URL
ZEFIX_USERNAME (none) Username for ZefixPublicREST API
ZEFIX_PASSWORD (none) Password for ZefixPublicREST API

To use the official API, request credentials from zefix@bj.admin.ch, then:

{
  "mcpServers": {
    "zefix": {
      "command": "uvx",
      "args": ["mcp-server-zefix"],
      "env": {
        "ZEFIX_BASE_URL": "https://www.zefix.admin.ch/ZefixPublicREST/api/v1",
        "ZEFIX_USERNAME": "your-username",
        "ZEFIX_PASSWORD": "your-password"
      }
    }
  }
}

Development

git clone https://github.com/johnphilipp/mcp-server-zefix.git
cd mcp-server-zefix
uv sync --all-extras

uv run ruff check .           # lint
uv run pytest tests/ -v       # test (50 tests, all use fakes, no network)
npx @modelcontextprotocol/inspector uv --directory . run mcp-server-zefix  # interactive

Architecture

Follows Architecture Patterns with Python (Percival & Gregory):

  • Domain models (models.py) -- frozen dataclasses (Company, LegalForm, ShabPublication), domain exceptions, no infrastructure imports
  • Port + adapter (zefix_client.py) -- AbstractZefixClient protocol; HttpZefixClient translates HTTP to domain objects and httpx exceptions to domain exceptions
  • Service layer (server.py) -- handle_* functions accept the abstract client, never import httpx
  • Fakes over mocks -- tests use FakeZefixClient, a working in-memory implementation; test files never import httpx

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mcp_server_zefix-0.3.2.tar.gz (22.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mcp_server_zefix-0.3.2-py3-none-any.whl (19.1 kB view details)

Uploaded Python 3

File details

Details for the file mcp_server_zefix-0.3.2.tar.gz.

File metadata

  • Download URL: mcp_server_zefix-0.3.2.tar.gz
  • Upload date:
  • Size: 22.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for mcp_server_zefix-0.3.2.tar.gz
Algorithm Hash digest
SHA256 8f9d454594ffbd47a12ac34a1b01f0da953ab5d169f18b96bb49594cdf3683f5
MD5 758f97b3d0e1db0342bea91902530989
BLAKE2b-256 ef1915246ab1119983b1467b9d0ce8220dd78a2cdaec242bcb6229ff37c5a1ce

See more details on using hashes here.

Provenance

The following attestation bundles were made for mcp_server_zefix-0.3.2.tar.gz:

Publisher: publish.yml on johnphilipp/mcp-server-zefix

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mcp_server_zefix-0.3.2-py3-none-any.whl.

File metadata

File hashes

Hashes for mcp_server_zefix-0.3.2-py3-none-any.whl
Algorithm Hash digest
SHA256 59815e9751306ce4fb6b350bf9c3769773b8368ae1a8be0e53029ce86685eb41
MD5 f985d2d73cdcd303c29f5ea98ebf7546
BLAKE2b-256 18434faf86c373d4b1bdbda5748370378ae8ef5d46d1f1906880cbb835a92996

See more details on using hashes here.

Provenance

The following attestation bundles were made for mcp_server_zefix-0.3.2-py3-none-any.whl:

Publisher: publish.yml on johnphilipp/mcp-server-zefix

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page