Swiss MCP Server

Swiss public procurement (simap.ch): tenders, awards, CPV codes, all cantons + federal, read-only

Local serverstdioPython

What is the Swiss MCP server?

Connect Swiss to Claude, Cursor or any other MCP client and it stops being a tab you switch to. Swiss public procurement (simap.ch): tenders, awards, CPV codes, all cantons + federal, read-only. The swiss mcp server is what makes that connection.

What the server does

MCP server for Swiss public procurement — read access to the official simap.ch API, covering all cantons and the Confederation, updated intraday.

Available tools

The toolset is worth reading before you wire it up, because it tells you what the integration is really for:

  • search_procurements — Search projects by canton, CPV, process type, date, text
  • search_procurements_detailed — Search + full detail for the top n hits in one call (aggregated)
  • search_awards — Awarded contracts only (all four award types at once)
  • get_procurement_details — Full record for one publication
  • get_publication_history — Earlier publications of the same project (tender → award)
  • search_cpv_codes — Resolve keywords to CPV classification codes
  • search_construction_codes — Swiss construction codes (BKP, NPK, eBKP, OAG, CPC)
  • find_procurement_office — Public procurement offices by partial name
  • source_status — Reachability and latency of the simap.ch API
  • Candidate — Why it stays a tool
  • Demo — The Demo tool exposed by this server
  • Container — The image is multi-stage and runs as a non-root system user. compose.yaml adds a read-only root filesystem, drops all capabilities, sets

Installation

The server ships on PyPI as swiss-procurement-mcp, so your MCP client can launch it on demand — there is no separate build step. Add the server block to your client's configuration, restart it, and the tools register themselves.

Where it fits

Plenty of file and storage access servers cover similar ground. The differences that matter in practice are scope of access and how much setup stands between you and a working tool call. Swiss's toolset — search_procurements, search_procurements_detailed, search_awards and 10 more — is a fair guide to whether it matches your workflow. It is maintained by malkreide; worth a glance at recent repository activity before you build anything load-bearing on it.

We check each listing at SyncDev against the project's documentation before it goes live — if something here drifts out of date, it is a bug worth reporting.

Worth knowing first

  • It runs with your machine's permissions. That is convenient and also the reason to think about what you point it at before you approve a tool call.
  • With 13 tools registered it takes up a noticeable share of the context window; turn it off in projects that never touch Swiss.
  • Keep per-call confirmation enabled while you learn its behaviour; it is the cheapest safeguard you have.

Available tools

ToolWhat it does
search_procurementsSearch projects by canton, CPV, process type, date, text
search_procurements_detailedSearch + full detail for the top *n* hits in one call (aggregated)
search_awardsAwarded contracts only (all four award types at once)
get_procurement_detailsFull record for one publication
get_publication_historyEarlier publications of the same project (tender → award)
search_cpv_codesResolve keywords to CPV classification codes
search_construction_codesSwiss construction codes (BKP, NPK, eBKP, OAG, CPC)
find_procurement_officePublic procurement offices by partial name
source_statusReachability and latency of the simap.ch API
CandidateWhy it stays a tool
DemoThe Demo tool exposed by this server.
ContainerThe image is multi-stage and runs as a non-root system user. compose.yaml adds a read-only root filesystem, drops all capabilities, sets no-new-privileges, and caps memory, CPU and PIDs. No secret is needed at runtime —
ConfigurationNo API keys — the wrapped simap.ch read endpoints are fully public.

How to install the Swiss MCP server

### Claude Desktop

```json
{
  "mcpServers": {
    "swiss-procurement": {
      "command": "uvx",
      "args": ["swiss-procurement-mcp"]
    }
  }
}

Configuration as documented by the project. Restart the client after saving.

Example prompts to try

  • Use Swiss to search procurements.
  • Use Swiss to search procurements detailed.
  • Use Swiss to search awards.

Frequently asked questions

It connects Swiss to MCP-compatible AI assistants such as Claude and Cursor, exposing 13 tools (search_procurements, search_procurements_detailed, search_awards, and more) that the assistant can call on your behalf. Instead of copying data back and forth by hand, the assistant works with Swiss directly.