SIMAP MCP Server

An MCP (Model Context Protocol) server for interacting with SIMAP.ch, Switzerland's public procurement platform.

SIMAP MCP Server

GitHub License NPM Version GitHub Actions Workflow Status NPM Downloads MCP Badge

An MCP (Model Context Protocol) server for interacting with SIMAP.ch, Switzerland's public procurement platform.

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

Developed by Digilac.

Features

ToolDescription
search_tendersSearch tenders with filters (text, dates, types, cantons, CPV)
get_tender_detailsGet full details of a specific tender
search_cpv_codesSearch CPV codes (Common Procurement Vocabulary)
browse_cpv_treeNavigate CPV code hierarchy
list_cantonsList all Swiss cantons
list_institutionsList Swiss public institutions
get_publication_historyGet publication history for a project
search_proc_officesSearch public procurement offices
search_bkp_codesSearch BKP codes (construction)
browse_bkp_treeNavigate BKP code hierarchy
search_npk_codesSearch NPK codes (standardized positions)
browse_npk_treeNavigate NPK code hierarchy
search_oag_codesSearch OAG codes (object types)
browse_oag_treeNavigate 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:

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

Claude Desktop

Add to your Claude Desktop configuration file:

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

Global install

npm install -g @digilac/simap-mcp

Then configure with the direct command:

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

From source

git clone https://github.com/Digilac/simap-mcp.git
cd simap-mcp
npm install
npm run build
{
  "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.

ParameterTypeDescription
searchstringSearch text (min 3 characters)
publicationFromdateStart date (YYYY-MM-DD)
publicationUntildateEnd date (YYYY-MM-DD)
projectSubTypesarrayProject types (see below)
cantonsarrayCanton codes (BE, VD, GE, ZH, etc.)
processTypesarrayProcess types (see below)
pubTypesarrayPublication types (see below)
cpvCodesarrayCPV codes (8 digits, e.g., 72000000)
bkpCodesarrayBKP construction codes (e.g., 211)
issuedByOrganizationsarrayUUIDs of issuing organizations
lastItemstringPagination token for next page
langstringLanguage: de, fr, it, en (default: en)

get_tender_details

Get tender details.

ParameterTypeDescription
projectIduuidProject ID
publicationIduuidPublication ID
langstringPreferred language

search_cpv_codes / search_bkp_codes / search_npk_codes / search_oag_codes

Search nomenclature codes by keyword or number.

ParameterTypeDescription
querystringSearch term (keyword or code prefix)
langstringLanguage: de, fr, it, en (default: en)

browse_cpv_tree / browse_bkp_tree / browse_npk_tree / browse_oag_tree

Navigate code hierarchies.

ParameterTypeDescription
parentCodestringParent code (optional, omit for root categories)
langstringLanguage: de, fr, it, en (default: en)

list_cantons

List all Swiss cantons with their codes. No parameters required.

list_institutions

List Swiss public institutions that publish tenders.

ParameterTypeDescription
searchstringFilter by name (min 3 characters, optional)
langstringLanguage: de, fr, it, en (default: en)

get_publication_history

Get the publication history for a project.

ParameterTypeDescription
publicationIduuidCurrent publication ID
lotIduuidLot ID (optional, to filter by lot)

search_proc_offices

Search public procurement offices.

ParameterTypeDescription
searchstringName to search (min 3 characters)
institutionIduuidFilter by parent institution (optional)

Enums

CodeDescription
constructionConstruction works
serviceServices
supplySupplies
project_competitionProject competitions
idea_competitionIdea competitions
overall_performance_competitionOverall performance competitions
project_studyProject studies
idea_studyIdea studies
overall_performance_studyOverall performance studies
request_for_informationRequests for information
CodeDescription
openOpen procedure
selectiveSelective procedure
invitationInvitation procedure
directDirect award
no_processNo procedure (e.g., RFI)
CodeDescription
advance_noticeAdvance notice
request_for_informationRequest for information
tenderTender
competitionCompetition
study_contractStudy contract
award_tenderAward (tender)
award_study_contractAward (study)
award_competitionAward (competition)
direct_awardDirect award
participant_selectionParticipant selection
selective_offering_phaseSelective offering phase
correctionCorrection
revocationRevocation
abandonmentAbandonment
AG, AI, AR, BE, BL, BS, FR, GE, GL, GR, JU, LU, NE, NW, OW, SG, SH, SO, SZ, TG, TI, UR, VD, VS, ZG, ZH

Development

npm run build          # Compile TypeScript
npm start              # Run the server
npm run dev            # Build + run
npm test               # Run tests
npm run lint           # Lint code
npm run format         # Format code

Project Structure

simap-mcp/
├── src/
│   ├── index.ts                  # Entry point
│   ├── server.ts                 # MCP server configuration
│   ├── api/
│   │   ├── client.ts             # SIMAP HTTP client
│   │   └── endpoints.ts          # Endpoint constants
│   ├── tools/
│   │   ├── search-tenders.ts
│   │   ├── get-tender-details.ts
│   │   ├── codes/                # Nomenclature tools (CPV, BKP, NPK, OAG)
│   │   └── organizations/        # Institution & procurement office tools
│   ├── types/                    # TypeScript interfaces
│   └── utils/                    # Translation & formatting helpers
├── tests/
├── dist/                         # Compiled output
└── package.json

Contributing

Contributions are welcome! See CONTRIBUTING.md to get started.

SIMAP API

This server uses the public API from SIMAP.ch.

License

MIT

Related Servers