Skip to main content
Glama
Zefix MCP Server

Zefix MCP Server

by ishumilin

About Schwaizer

SHAPING SWITZERLAND'S AI FUTURE Empowering Swiss businesses and society through responsible AI adoption. Founded in 2025, Schwaizer is a non-profit organization dedicated to accelerating the responsible adoption of artificial intelligence across Switzerland.

Website: https://www.schwaizer.ch


Zefix MCP Server

MCP (Model Context Protocol) server providing access to Swiss Company Registry data through Zefix REST API and UID Webservice.

Features

Dual API Integration

  • Zefix REST API: Fast company searches and SOGC (Official Gazette) tracking

  • UID Webservice: Rich company data including NOGA codes, VAT details, and commercial register information

Available Tools (9 tools)

Zefix API Tools

  1. zefix_search_companies - Search for Swiss companies using the Zefix API.

  2. zefix_get_company_by_uid - Get detailed company information from Zefix by UID, with optional UID Webservice enrichment.

  3. zefix_get_daily_registrations - Get all company registrations and publications from SOGC for a specific date.

  4. zefix_get_company_publications - Get all SOGC publications for a specific company by UID.

UID Webservice Tools

  1. uid_advanced_search - Advanced company search using the UID Webservice.

  2. uid_validate_uid - Validate a Swiss UID.

  3. uid_validate_vat_number - Validate a Swiss VAT number.

  4. uid_get_company_details - Get detailed company information using only the UID Webservice.

Combined API Tools

  1. generate_due_diligence_report - Generate a comprehensive due diligence report combining data from both Zefix and UID Webservice.

Related MCP server: bexio-mcp

Installation

npm install

Configuration

Copy .env.example to .env and configure:

# Zefix REST API Credentials (required for Zefix tools)
# Note: Credentials must be requested from Federal Registry of Commerce
ZEFIX_USERNAME=your_username
ZEFIX_PASSWORD=your_password

# UID Webservice (no auth needed for Public Services)
UID_PUBLIC_URL=https://www.uid-wse.admin.ch/V5.0/PublicServices.svc?wsdl

# Optional settings
CACHE_ENABLED=true
CACHE_TTL=3600
LOG_LEVEL=info

Usage

Running the Server

npm start

Example Tool Calls

Search for companies (Zefix)

{
  "name": "zefix_search_companies",
  "arguments": {
    "name": "Migros",
    "canton": "ZH",
    "activeOnly": true
  }
}

Get company details (Zefix + UID)

{
  "name": "zefix_get_company_by_uid",
  "arguments": {
    "uid": "CHE-123.456.789",
    "enrichWithUidData": true
  }
}

Validate UID (UID Webservice)

{
  "name": "uid_validate_uid",
  "arguments": {
    "uid": "CHE-123.456.789"
  }
}

Generate due diligence report (Zefix + UID)

{
  "name": "generate_due_diligence_report",
  "arguments": {
    "uid": "CHE-123.456.789",
    "includePublications": true
  }
}

Get daily registrations (Zefix)

{
  "name": "zefix_get_daily_registrations",
  "arguments": {
    "date": "2025-11-15"
  }
}

API Documentation

Zefix REST API

  • Base URL: https://www.zefix.admin.ch/ZefixPublicREST/api/v1

  • Authentication: Basic Auth

  • SOGC publications:

    • Per-company publications are returned via GET /api/v1/company/uid/{uid} in the sogcPub[] field of the company payload (there is no GET /api/v1/sogc/uid/{uid} endpoint).

    • Daily publications are available via GET /api/v1/sogc/bydate/{date}.

UID Webservice

  • Public Services URL: https://www.uid-wse.admin.ch/V5.0/PublicServices.svc?wsdl

  • Protocol: SOAP

  • Authentication: None required for Public Services

Data Sources

  • Zefix: Federal Commercial Register (Handelsregister)

  • UID Register: Federal Business and Enterprise Register

  • SOGC/SHAB: Swiss Official Gazette of Commerce

Caching

The server implements intelligent caching:

  • Search results: 30 minutes

  • Company details: 1 hour

  • SOGC data: 6 hours

  • UID/VAT validation: 1-24 hours

  • Reference data: 24 hours

Error Handling

All tools include comprehensive error handling:

  • Input validation with Zod schemas

  • API error handling with retries

  • Graceful fallbacks when enrichment fails

  • Detailed error messages in responses

Development

Project Structure

zefix-mcp-server/
├── src/
│   ├── index.js              # MCP server entry point
│   ├── config.js             # Configuration
│   ├── api/
│   │   ├── zefix-client.js   # Zefix REST client
│   │   ├── uid-client.js     # UID SOAP client
│   │   └── schemas.js        # Validation schemas
│   ├── tools/
│   │   ├── company-search.js # Search tools
│   │   ├── validation.js     # Validation tools
│   │   ├── sogc.js          # SOGC tools
│   │   └── due-diligence.js # Due diligence tool
│   └── utils/
│       ├── logger.js         # Logging
│       ├── cache.js          # Caching
│       └── formatting.js     # Formatting utilities
├── .env                      # Environment variables
├── package.json
└── README.md

Running Tests

npm test

Linting

npm run lint

Scripts

Helper scripts (for local development and manual checks):

  • scripts/describe-wsdl.mjs — Inspect/describe UID Webservice WSDL structure

  • scripts/test-uid-search.mjs — Exercise UID search endpoints with sample queries

  • scripts/test-uid-search-variants.mjs — Try multiple UID search variants

Run examples:

node scripts/describe-wsdl.mjs
node scripts/test-uid-search.mjs "CHE-123.456.789"
node scripts/test-uid-search-variants.mjs "Migros"

License

MIT

Support

For issues with:

Available Tools

9 tools
generate_due_diligence_reportB

Generate a due diligence report for a Swiss company using Zefix and UID Webservice data.

Inputs: uid (required), includePublications.

get_company_by_uidB

Get detailed company information from Zefix by UID. Optionally enriches data with UID Webservice information.

Inputs: uid (required), enrichWithUidData.

get_company_details_uidB

Get detailed company information using only the UID Webservice. This does not require Zefix authentication.

Inputs: uid (required).

get_company_publicationsB

Get all SOGC publications for a specific company by UID using the Zefix API.

Inputs: uid (required).

get_daily_registrationsB

Get all company registrations and publications from SOGC (Swiss Official Gazette of Commerce) for a specific date using the Zefix API.

Inputs: date (required).

search_companiesB

Search for Swiss companies using the Zefix API. Supports filtering by name, canton, legal form, and active status.

Inputs: name (required), canton, activeOnly, legalFormUid, +1 more.

validate_uidA

Validate a Swiss UID (Unternehmens-Identifikationsnummer) using the UID Webservice. Checks if the UID exists in the official register.

Inputs: uid (required).

validate_vat_numberA

Validate a Swiss VAT (MWST) number using the UID Webservice. Checks if the VAT number is valid and currently active.

Inputs: vatNumber (required).

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3.4/5.0

    Scored across 9 tools

    Disambiguation3/5

    There is notable overlap between 'get_company_by_uid' and 'get_company_details_uid' (both retrieve company details via UID but from different sources), as well as between 'search_companies' and 'advanced_search' (both perform searches with slightly different filter sets). While descriptions clarify differences, an agent could easily select the wrong tool in many scenarios.

    Naming Consistency3/5

    Tool names predominantly follow a verb_noun pattern, but inconsistencies exist: 'advanced_search' uses an adjective prefix instead of a verb, while 'get_company_by_uid' and 'get_company_details_uid' include prepositions in the noun part. The mix of 'search_' and 'get_' verbs is acceptable, but the varying structures reduce predictability.

    Tool Count5/5

    With 9 tools, the set is well-scoped for a Swiss company registry server. Each tool addresses a distinct functional need (search, details, validation, publications, report generation) without unnecessary bloat or missing essential operations for this domain.

    Completeness5/5

    The tool surface covers all typical use cases for a read-only company registry: searching, retrieving detailed company info (via two complementary services), validating identifiers (UID and VAT), fetching publications and daily registrations, and generating due diligence reports. No obvious gaps are present.

    Maintenance

    ActivityInactive
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      B
      maintenance
      Provides access to the Swiss Federal Commercial Register (Zefix) for company search, verification, and reference data, enabling natural language queries for public administration use cases.
      9
      121 PyPI
      MIT
    • A
      license
      A
      quality
      D
      maintenance
      A standalone MCP server for the bexio REST API, enabling interaction with bexio resources like contacts, invoices, and projects through natural language from any MCP client.
      21
      23 npm
      MIT
    • A
      license
      A
      quality
      B
      maintenance
      MCP server for Swiss federal legislation metadata via Fedlex, enabling search and retrieval of act details with ELI URIs, SR numbers, and multilingual support.
      3
      34 PyPI
      Apache 2.0
    • A
      license
      A
      quality
      C
      maintenance
      MCP server for the bexio API, enabling interaction with contacts, sales, accounting, projects, and more through 35 tools. Supports both PAT and OAuth authentication with read-only mode and tool group filtering.
      35
      23 npm
      4
      MIT