io.github.Digilac/simap-mcp

MCP server for SIMAP.ch - Swiss public procurement platform

2MITdevtools

Install

Config snippet generator goes here (5 client tabs)

README

# SIMAP MCP Server

[![GitHub License](https://img.shields.io/github/license/Digilac/simap-mcp)](./LICENSE)
[![NPM Version](https://img.shields.io/npm/v/%40digilac%2Fsimap-mcp)](https://www.npmjs.com/package/@digilac/simap-mcp)
[![GitHub Actions Workflow Status](https://img.shields.io/github/actions/workflow/status/Digilac/simap-mcp/publish.yml)](https://github.com/Digilac/simap-mcp/actions/workflows/publish.yml)
![NPM Downloads](https://img.shields.io/npm/dw/%40digilac%2Fsimap-mcp)
[![MCP Badge](https://lobehub.com/badge/mcp/digilac-simap-mcp)](https://lobehub.com/mcp/digilac-simap-mcp)
[![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/Digilac/simap-mcp)

An [MCP](https://modelcontextprotocol.io/) (Model Context Protocol) server for interacting with [SIMAP.ch](https://simap.ch), Switzerland's public procurement platform.

Enables Claude and other AI assistants to search and view public tenders in Switzerland.

Developed by [Digilac](https://www.digilac.ch/).

## Features

| Tool | Description |
|------|-------------|
| `search_tenders` | Search tenders with filters (text, dates, types, cantons, CPV) |
| `get_tender_details` | Get full details of a specific tender |
| `search_cpv_codes` | Search CPV codes (Common Procurement Vocabulary) |
| `browse_cpv_tree` | Navigate CPV code hierarchy |
| `list_cantons` | List all Swiss cantons |
| `list_institutions` | List Swiss public institutions |
| `get_publication_history` | Get publication history for a project |
| `search_proc_offices` | Search public procurement offices |
| `search_bkp_codes` | Search BKP codes (construction) |
| `browse_bkp_tree` | Navigate BKP code hierarchy |
| `search_npk_codes` | Search NPK codes (standardized positions) |
| `browse_npk_tree` | Navigate NPK code hierarchy |
| `search_oag_codes` | Search OAG codes (object types) |
| `browse_oag_tree` | Navigate OAG code hierarchy |

## Installation

### Quick start with npx (recommended)

No installation needed — just configure your MCP client to use `npx`:

#### Claude Code (CLI)

Add to `~/.claude/settings.json`:

```json
{
  "mcpServers": {
    "simap": {
      "command": "npx",
      "args": ["-y", "@digilac/simap-mcp"]
    }
  }
}
```

#### Claude Desktop

Add to your Claude Desktop configuration file:

```json
{
  "mcpServers": {
    "simap": {
      "command": "npx",
      "args": ["-y", "@digilac/simap-mcp"]
    }
  }
}
```

### Global install

```bash
npm install -g @digilac/simap-mcp
```

Then configure with the direct command:

```json
{
  "mcpServers": {
    "simap": {
      "command": "simap-mcp"
    }
  }
}
```

### From source

```bash
git clone https://github.com/Digilac/simap-mcp.git
cd simap-mcp
npm install
npm run build
```

```json
{
  "mcpServers": {
    "simap": {
      "command": "node",
      "args": ["/absolute/path/to/simap-mcp/dist/index.js"]
    }
  }
}
```

## Usage

Once configured, simply ask Claude:

**Search today's tenders:**
> "Show me new tenders published today"

**Filter by type and canton:**
> "Find construction tenders in canton Vaud"

**Get details:**
> "Give me the details of this tender" (after a search)

**Keyword search:**
> "Find public contracts related to IT in Geneva"

**Find CPV codes:**
> "Search CPV codes for IT services"

**Browse code hierarchies:**
> "Show root CPV categories"
> "Show subcategories of CPV code 72000000"

**Search construction codes:**
> "Search BKP codes for masonry"

**View project history:**
> "Show me the publication history of this project"

**Search procurement offices:**
> "Find procurement offices in the city of Zurich"

## Reference

### `search_tenders`

Search public tenders.

| Parameter | Type | Description |
|-----------|------|-------------|
| `search` | string | Search text (min 3 characters) |
| `publicationFrom` | date | Start date (YYYY-MM-DD) |
| `publicationUntil` | date | End date (YYYY-MM-DD) |
| `projectSubTypes` | array | Project types (see below) |
| `cantons` | array | Canton codes (BE, VD, GE, ZH, etc.) |
| `processTypes` | array | Process types (see below) |
| `pubTypes` | array | Publication types (see below) |
| `cpvCodes` | array | CPV codes (8 digits, e.g., `72000000`) |
| `bkpCodes` | array | BKP construction codes (e.g., `211`) |
| `issuedByOrganizations` | array | UUIDs of issuing organizations |
| `lastItem` | string | Pagination token for next page |
| `lang` | string | Language: `de`, `fr`, `it`, `en` (default: `en`) |

### `get_tender_details`

Get tender details.

| Parameter | Type | Description |
|-----------|------|-------------|
| `projectId` | uuid | Project ID |
| `publicationId` | uuid | Publication ID |
| `lang` | string | Preferred language |

### `search_cpv_codes` / `search_bkp_codes` / `search_npk_codes` / `search_oag_codes`

Search nomenclature codes by keyword or number.

| Parameter | Type | Description |
|-----------|------|-------------|
| `query` | string | Search term (keyword or code prefix) |
| `lang` | string | Language: `de`, `fr`, `it`,