# Swiss company data

Gives your coding agent the Swiss commercial register, gazette notices, simap tenders, FINMA licences and a few more open datasets. Useful when you need to vet a counterparty or pull a list of firms.

- MCP server · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI
- Author: prospex-ch
- License: MIT · policy=link-only · description only; the file stays with the author
- Source: https://github.com/prospex-ch/swissco-cli
- Updated: 2026-09-29
- HTML: https://affpapa.org/en/nevibecode/mcp/swiss-company-data

## What it does

Six public sources sit behind the server: Zefix on LINDAS for the commercial register, Amtsblattportal for trade notices, simap.ch for public procurement, FINMA for banks and securities firms, GLEIF for LEI records and group structure, ARAMIS for federally funded research. None of them asks for a login. You can search firms by name or by the purpose written in the register, read one company's registry history, page through tenders for a canton, or follow a list of firms over time.

Installation runs `npx -y swissco-mcp`; Cursor and GitHub Copilot take an `mcpServers` config block instead. `ZEFIX_USER` and `ZEFIX_PASSWORD` stay optional — calls work without them. `SWISSCO_STATE` sets the state directory, `SWISSCO_INTERVAL` controls the check interval. If Zefix starts demanding authentication for some endpoints, those calls break without the two credentials.

Watching a list compares a fingerprint built from name, address and purpose. When a UID drops out of the LINDAS dataset, the server reports it as missing from the dataset rather than deleted, since only active entities are published there; a re-registration or a correction produces the same outcome. Check before you tell anyone a company was struck off.

## Requirements
- Needs: Node.js (commands run via npx)
- Environment variables: `ZEFIX_USER`, `ZEFIX_PASSWORD`, `SWISSCO_STATE`, `SWISSCO_INTERVAL` — keys and tokens: ask the human for the values, never commit them or put them in shared files.

## Install

### Claude Code (native platform)

**Platform CLI**
```bash
claude mcp add --env ZEFIX_USER=<ZEFIX_USER> --env ZEFIX_PASSWORD=<ZEFIX_PASSWORD> --env SWISSCO_STATE=<SWISSCO_STATE> --env SWISSCO_INTERVAL=<SWISSCO_INTERVAL> --transport stdio swiss-company-data -- npx -y swissco-mcp
```
Replace <…> with your own values

### Codex

**Platform CLI**
```bash
codex mcp add swiss-company-data --env ZEFIX_USER=<ZEFIX_USER> --env ZEFIX_PASSWORD=<ZEFIX_PASSWORD> --env SWISSCO_STATE=<SWISSCO_STATE> --env SWISSCO_INTERVAL=<SWISSCO_INTERVAL> -- npx -y swissco-mcp
```
Replace <…> with your own values

### Cursor

**Config file**
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "swiss-company-data": {
            "command": "npx",
            "args": [
                "-y",
                "swissco-mcp"
            ],
            "env": {
                "ZEFIX_USER": "<ZEFIX_USER>",
                "ZEFIX_PASSWORD": "<ZEFIX_PASSWORD>",
                "SWISSCO_STATE": "<SWISSCO_STATE>",
                "SWISSCO_INTERVAL": "<SWISSCO_INTERVAL>"
            }
        }
    }
}
```
Replace <…> with your own values

### GitHub Copilot

**Config file**
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "swiss-company-data": {
            "type": "stdio",
            "command": "npx",
            "args": [
                "-y",
                "swissco-mcp"
            ],
            "env": {
                "ZEFIX_USER": "<ZEFIX_USER>",
                "ZEFIX_PASSWORD": "<ZEFIX_PASSWORD>",
                "SWISSCO_STATE": "<SWISSCO_STATE>",
                "SWISSCO_INTERVAL": "<SWISSCO_INTERVAL>"
            }
        }
    }
}
```
Replace <…> with your own values

### Gemini CLI

**Platform CLI**
```bash
gemini mcp add -e ZEFIX_USER=<ZEFIX_USER> -e ZEFIX_PASSWORD=<ZEFIX_PASSWORD> -e SWISSCO_STATE=<SWISSCO_STATE> -e SWISSCO_INTERVAL=<SWISSCO_INTERVAL> swiss-company-data npx -y swissco-mcp
```
Replace <…> with your own values

## When to use it
- look up a counterparty by UID and read its register record
- search firms by the business purpose stated in the register
- pull gazette notices for one canton over a date range
- list simap tenders filtered by canton
- track changes across a file of company UIDs

## Example prompts
- Search the Swiss register for firms whose purpose mentions metalworking in canton VD.
- Show the registry history for UID `CHE-444.420.929` since 2024.
- List the tenders published in canton ZG as a table.

## Similar
- [Norwegian Company Data](https://affpapa.org/en/nevibecode/mcp/norwegian-company-data.md) — MCP server
- [Enrich — Company Domain Intelligence](https://affpapa.org/en/nevibecode/mcp/enrich-company-domain-intelligence.md) — MCP server · ★ 6
- [simap-mcp](https://affpapa.org/en/nevibecode/mcp/simap-mcp.md) — MCP server · ★ 8
- [brreg](https://affpapa.org/en/nevibecode/skills/brreg.md) — skill · 1400 installs
- [nordic-registry-mcp-server](https://affpapa.org/en/nevibecode/mcp/nordic-registry-mcp-server.md) — MCP server · ★ 14

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
