mcpField
S
swissreg

swissreg

Local
github.com/CloudCorpRecordsBusiness & Marketing0Updated 1w ago

About swissreg

swissreg is an MCP server and CLI for querying Swiss public company registers and related datasets. It serves researchers and organizations with structured, read-only results across company records, publications, procurement, finance, LEI and research.

Key features

  1. 01Swiss commercial-register lookup and search
  2. 02Gazette publications and company events
  3. 03Public procurement and vendor profiles
  4. 04FINMA institutions and LEI records
  5. 05Federally funded research projects
  6. 06UID validation and structured JSON output

Use cases

  1. 01Check a Swiss company by UID
  2. 02Find Gazette notices within a date range
  3. 03Review public tenders and vendor status
  4. 04Trace LEI relationships or funded research

MCP support

Exposes nine read-only tools to MCP clients for querying Swiss company and public-register data.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"mcpServers": {
"cloudcorprecords-swissreg": {
"command": "npx",
"args": [
"-y",
"@reneturcios/swissreg"
]
}
}
}
Run commandnpx -y @reneturcios/swissreg

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
npm@reneturcios/swissreg0.1.0
ocighcr.io/cloudcorprecords/swissreg:0.1.0

Tools

9

Saved tool list · updated 1w ago

ParameterTypeRequiredDescription
leibooleanNoAdd LEI fields (lei, lei_status, direct_parent, ultimate_parent). Defaults to false.
uidstringYesThe company's Swiss UID, in the form CHE-XXX.XXX.XXX (spaces, dots and dashes are stripped and the check digit is verified).
finma_licencebooleanNoAdd FINMA licence fields (finma_licence, finma_category, finma_city, finma_flags). Defaults to false.

Details

From the project README

swissreg

Nine read-only questions about Swiss companies, answered from the public registers Switzerland itself publishes — no account needed for the core paths, because the sources are open data: the commercial register via LINDAS, the Swiss Official Gazette of Commerce, the simap procurement platform, FINMA's list of authorised institutions, the GLEIF legal-entity database, and the federal ARAMIS research database.

Every answer comes back in the same envelope: a JSON object with rows (each row carrying exactly the fields documented for that tool, in order), count, and notes explaining the limits of what the source can say — for example that an absent LEI is the normal case (only about 28,000 Swiss entities hold one), or that a company can bid on simap without holding a directory profile.

The nine tools:

  • swissco_lookup — everything the commercial register publishes about one company, by UID; optionally adds its FINMA licence fields and its LEI with consolidating parents.
  • swissco_search — companies whose legal name or statutory purpose contains a term, with canton and legal-form filters on the LINDAS path.
  • swissco_publications — Gazette publications in a date range, filtered client-side by canton, sub-rubric, title text, or event type.
  • swissco_events — one company's registry events, each kept only when the publication's own UID matches the one asked for.
  • swissco_tenders — public-procurement projects published on simap, by date range, canton, and publication type.
  • swissco_vendor — whether a company holds a simap vendor profile, and what that profile says.
  • swissco_finma — institutions on FINMA's authorised banks and securities-firms list, filterable by name, UID, licence type, and supervisory category.
  • swissco_lei — a company's LEI, the entity that consolidates it, the top of that chain, and optionally its consolidated children.
  • swissco_research — federally funded research projects (Innosuisse and SNSF money included) naming a company, by text or by a participant's UID.

Swiss UIDs are taken seriously: a UID is normalised (CHE444420929, CHE-444.420.929 and lower-case variants all work), its modulo-11 check digit is verified before any request is made, and output UIDs are always punctuated CHE-XXX.XXX.XXX. Dates are YYYY-MM-DD; date ranges that the Gazette cannot serve are trimmed to their newest days, with a note saying so.

Configuration

No credential is required. Two things are optional:

export ZEFIX_USER="..."        # Zefix PublicREST account
export ZEFIX_PASSWORD="..."

With those set, swissco_search can run with via: "rest" (a name-prefix search with richer fields); without them that path fails honestly, naming the two variables. Register lookups otherwise run over LINDAS and note what credentials would add: capital, status, former names, and corporate relations.

CLI

Each tool is a subcommand taking one JSON argument string:

npx @reneturcios/swissreg swissco_lookup '{"uid":"CHE-444.420.929","lei":true}'
npx @reneturcios/swissreg swissco_search '{"term":"pharma","canton":"BS"}'
npx @reneturcios/swissreg swissco_tenders '{"pub_types":["award"],"cantons":["ZH"]}'
npx @reneturcios/swissreg --version

Output is the tool's envelope as JSON. Exit codes: 0 on success, 1 on a runtime error (including a validation or upstream failure), 2 on a usage error.

MCP server

npx -y @reneturcios/swissreg mcp

MCP client config:

{
  "mcpServers": {
    "swissreg": {
      "command": "npx",
      "args": ["-y", "@reneturcios/swissreg", "mcp"]
    }
  }
}

Docker

docker run -i ghcr.io/cloudcorprecords/swissreg
docker run --rm ghcr.io/cloudcorprecords/swissreg swissco_finma '{"licence_type":"Bank"}'

Development

npm install
npm run build   # tsc -> dist/
npm test        # tsx --test test/*.test.ts (fake fetch + fake clock, no network)
npm run dev     # run the CLI from source

License

MIT — Copyright (c) 2026 Rene Turcios

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.