npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@digilac/simap-mcp

v1.0.4

Published

MCP server for SIMAP.ch - Swiss public procurement platform

Readme

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

| 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:

{
  "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.

| 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, en (default: en) |

browse_cpv_tree / browse_bkp_tree / browse_npk_tree / browse_oag_tree

Navigate code hierarchies.

| Parameter | Type | Description | |-----------|------|-------------| | parentCode | string | Parent code (optional, omit for root categories) | | lang | string | Language: 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.

| Parameter | Type | Description | |-----------|------|-------------| | search | string | Filter by name (min 3 characters, optional) | | lang | string | Language: de, fr, it, en (default: en) |

get_publication_history

Get the publication history for a project.

| Parameter | Type | Description | |-----------|------|-------------| | publicationId | uuid | Current publication ID | | lotId | uuid | Lot ID (optional, to filter by lot) |

search_proc_offices

Search public procurement offices.

| Parameter | Type | Description | |-----------|------|-------------| | search | string | Name to search (min 3 characters) | | institutionId | uuid | Filter by parent institution (optional) |

Enums

| Code | Description | |------|-------------| | construction | Construction works | | service | Services | | supply | Supplies | | project_competition | Project competitions | | idea_competition | Idea competitions | | overall_performance_competition | Overall performance competitions | | project_study | Project studies | | idea_study | Idea studies | | overall_performance_study | Overall performance studies | | request_for_information | Requests for information |

| Code | Description | |------|-------------| | open | Open procedure | | selective | Selective procedure | | invitation | Invitation procedure | | direct | Direct award | | no_process | No procedure (e.g., RFI) |

| Code | Description | |------|-------------| | advance_notice | Advance notice | | request_for_information | Request for information | | tender | Tender | | competition | Competition | | study_contract | Study contract | | award_tender | Award (tender) | | award_study_contract | Award (study) | | award_competition | Award (competition) | | direct_award | Direct award | | participant_selection | Participant selection | | selective_offering_phase | Selective offering phase | | correction | Correction | | revocation | Revocation | | abandonment | Abandonment |

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