Simap Mcp Server

Created By
Digilac3 months ago
An MCP (Model Context Protocol) server for interacting with SIMAP.ch, Switzerland's public procurement platform.
Overview

simap MCP Server

GitHub License NPM Version GitHub Actions Workflow Status NPM Downloads Ask DeepWiki

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

Prerequisites

  • Node.js ≥ 22 (LTS or newer).
  • An MCP-compatible client (Claude Code, Claude Desktop, Cursor, VS Code, Windsurf, Cline, Zed, …).
  • No simap account or API key required — the simap API is public and read-only.

Installation & Configuration

The recommended way is npx — no global install needed. Pick your client below and copy the snippet.

Claude Desktop

Edit the Claude Desktop configuration file:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "simap": {
      "command": "npx",
      "args": ["-y", "@digilac/simap-mcp"]
    }
  }
}

Restart Claude Desktop for the change to take effect.

Other clients

Claude Code (CLI)

Add to ~/.claude/settings.json:

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

Global config at ~/.cursor/mcp.json (all projects) or project-level .cursor/mcp.json:

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

Fully quit and reopen Cursor — MCP servers are only loaded at startup.

VS Code (GitHub Copilot)

Workspace config at .vscode/mcp.json (or open the user-level file via the MCP: Open User Configuration command):

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

VS Code uses servers as the top-level key (not mcpServers).

Windsurf

Edit ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "simap": {
      "command": "npx",
      "args": ["-y", "@digilac/simap-mcp"]
    }
  }
}
Cline (VS Code extension)

Open Cline's MCP Servers panel → Configure tab, then paste:

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

Edit the user settings.json (~/.config/zed/settings.json on macOS/Linux, %APPDATA%\Zed\settings.json on Windows) or a project-level .zed/settings.json:

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

Zed uses context_servers as the top-level key.

Alternative: Global install
npm install -g @digilac/simap-mcp

Then configure your client with the direct command:

{
  "mcpServers": {
    "simap": {
      "command": "simap-mcp"
    }
  }
}
Alternative: From source
git clone https://github.com/Digilac/simap-mcp.git
cd simap-mcp
npm install
npm run build

Then configure your client with the absolute path:

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

Usage

Once configured, just ask your AI assistant in natural language. Mention "in simap" to make sure the assistant routes the request through the MCP server:

  • "Show me new tenders published today in simap"
  • "Find construction tenders in canton Vaud in simap"
  • "Give me the details of this tender in simap" (after a search)
  • "Search CPV codes for IT services in simap"

Listed on

Contributing

Contributions are welcome! See CONTRIBUTING.md for development setup and commands, and ARCHITECTURE.md for architecture, internal patterns, and the full tool parameter reference.

simap API

This server uses the public API from simap.ch.

License

MIT

Server Config

{
  "mcpServers": {
    "simap": {
      "command": "npx",
      "args": [
        "-y",
        "@digilac/simap-mcp"
      ]
    }
  }
}
Project Info
Created At
3 months ago
Updated At
a month ago
Author Name
Digilac
Star
-
Language
-
License
-
Category

Recommend Servers

View All
Tavily Mcp
@tavily-ai

JavaScript
a year ago
Bring your real authenticated browser session to AI coding agents. Local-first MCP server + Chrome MV3 extension. No cloud. No telemetry.
@Cubenest

peek records the user's actual logged-in browser (DOM via rrweb, console events, network metadata, optional response bodies via opt-in Deep capture) through a Chrome MV3 extension. The extension ships events through a native-messaging stdio bridge to a local MCP server (peek-mcp), which persists them to a SQLite database at ~/.peek/sessions.db. AI coding agents (Claude Code, Cursor, Cline, Windsurf) read sessions from the database via 10 MCP tools: Tool What it does list_recent_sessions List recently recorded sessions (id, origin, ts, event count). get_session_summary LLM-readable narrative summary of a session. get_session_console_errors Console errors recorded in a session. get_session_network_errors Failed/notable network requests in a session. get_user_action_before_error Last N user actions before a console error. generate_playwright_repro Generate a runnable Playwright test from a session. get_dom_snapshot Reconstruct the DOM at a given timestamp. query_dom_history Timeline of attribute/text changes for a selector. request_authorization Side-panel consent for write actions (Level 3). execute_action Dispatch a UI action (gated by permission level + destructive blocklist). Why local-first matters Every other "browser session for AI" tool ships to a vendor cloud. peek's SQLite + extension live on the user's machine — no remote endpoints, no telemetry. The privacy policy (docs/peek/PRIVACY_POLICY.md) is the source of truth. Install # 1. Add the MCP server to Claude Code claude mcp add peek -- npx -y @peekdev/mcp # 2. Install the Chrome extension from the Chrome Web Store # (link added once the CWS listing is approved)

a day ago