Prototyp · Vorschau: alle Server aus der offiziellen Registry, alle 30 Minuten synchronisiert. Bewertungen und Benutzerkonten folgen in einem späteren Schritt.
PopNx MCPMCP-Server für alle, die KI nutzen · in einfachen Worten erklärt

Amtsblatt MCP

von malkreideVersion 0.23.0i★ –iLäuft auf deinem Computer
Name in der Registryio.github.malkreide/amtsblatt-mcp

Installieren

Überblick

Beschreibung vom Entwickler (englisches Original)

Swiss official gazettes (SHAB + cantonal) — procurement & notices, person-data rubrics excluded

Die drei Säulen von PopNx MCP

Diese drei werden nie zu einer Punktzahl zusammengefasst: Meinungen, Messungen und Beliebtheit sind verschiedene Dinge.

Was du damit machen kannst

Für diesen Server haben wir noch keine Zusammenfassung in einfacher Sprache geschrieben. Unten stehen die Fakten, die wir aus der Registry gelesen haben.

  • Verbindung: Läuft auf deinem Computer
  • Transport: stdio
  • Kategorie: Sonstiges

Installation

Wähle die KI-App, die du nutzt, und kopiere die Einstellungen.

Bevor du installierst

  • Basischecks: 1 von 1 bestanden
  • Läuft auf deinem Computer mit den Rechten deines Benutzerkontos (Dateien, Netzwerk, Apps).
  • Die Registry nennt keinen Schlüssel zum Eintragen.

Du brauchst

  • PyPIuv für Python installiert (für den Befehl uvx)

Welche App nutzt du?

Wähle oben deine App. Wir merken sie uns, damit der Button beim nächsten Mal „In … installieren“ anzeigt.

Öffne Claude Desktop → Settings → Developer → Edit Config und füge dies in claude_desktop_config.json ein

{
  "mcpServers": {
    "amtsblatt": {
      "command": "uvx",
      "args": [
        "amtsblatt-mcp"
      ]
    }
  }
}

Führe das in deinem Terminal aus

claude mcp add amtsblatt -- uvx amtsblatt-mcp

In Cursor öffnen

Oder kopier die Einstellungen selbst

In .cursor/mcp.json in deinem Projekt oder in ~/.cursor/mcp.json einfügen

{
  "mcpServers": {
    "amtsblatt": {
      "command": "uvx",
      "args": [
        "amtsblatt-mcp"
      ]
    }
  }
}

Dein Browser fragt, ob er die App öffnen darf, dann zeigt die App die Einstellungen und bittet dich um Bestätigung. Schlüsselwerte bleiben leer, damit du sie selbst einträgst.

In VS Code öffnen

Oder kopier die Einstellungen selbst

In .vscode/mcp.json in deinem Projekt einfügen

{
  "servers": {
    "amtsblatt": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "amtsblatt-mcp"
      ]
    }
  }
}

Dein Browser fragt, ob er die App öffnen darf, dann zeigt die App die Einstellungen und bittet dich um Bestätigung. Schlüsselwerte bleiben leer, damit du sie selbst einträgst.

Dieser Server läuft auf deinem Computer, und ChatGPT kann sich nur mit Servern im Internet verbinden. Wähle eine andere App.

Deine Auswahl bleibt in einem Cookie auf diesem Gerät; kein Konto nötig.

Diese Einstellungen werden aus dem Registry-Eintrag des Entwicklers erzeugt. Wenn in der README etwas anderes steht, folge der README.

Was er kann

Läuft auf deinem Computer; die Tool-Liste erscheint nach der Installation in deiner KI-App.

Basischecksi

Wir prüfen Informationen, die jeder sehen kann; den Code haben wir nicht gelesen. Checks, die nicht zutreffen, werden nicht mitgezählt. · Geprüft am 8. Nov. 2026

  • ✓ Bestanden

    Entwickler passt zum Repo

    Der Registry-Name wurde mit dem GitHub-Konto malkreide bestätigt, dem das Repo gehört

  • … Noch nicht geprüft

    Wird noch gepflegt

    Dieses Repo haben wir noch nicht von GitHub gelesen

  • … Noch nicht geprüft

    Hat eine Lizenz

    Dieses Repo haben wir noch nicht von GitHub gelesen

  • – Nicht zutreffend

    Endpunkt antwortet

    Dieser Server läuft auf deinem Computer; es gibt keinen Endpunkt im Internet

  • – Nicht zutreffend

    Anmeldung mit OAuth

    Läuft auf deinem Computer und nutzt stattdessen lokale Einstellungen

  • … Noch nicht geprüft

    Keine versteckten Anweisungen in Tool-Beschreibungen

    Läuft auf deinem Computer; Tool-Listen können wir nur von Endpunkten im Internet lesen

Im Vergleich mit anderen in Sonstigesi

  • Mehr Sterne als 0 % der anderen 18437 Server in dieser Kategorie
  • Neuer in der Registry veröffentlicht als 53 % der anderen 18437 Server in dieser Kategorie
  • Basischecks gleich gut wie oder besser als bei 100 % der anderen 18437 Server in dieser Kategorie

Verglichen mit allen aktiven Servern dieser Kategorie in der Registry. Sterne zählen nur, wenn dem Herausgeber das Repo gehört.

Häufige Fragen

Ist Amtsblatt MCP sicher?

Er hat 1 von 1 zutreffenden Basischecks bestanden. Den Code haben wir nicht gelesen. Bevor du einen Schlüssel oder Token hinzufügst, sieh nach, welche Zugriffe der Server verlangt, und nutze einen Schlüssel, der nur die Berechtigungen hat, die du brauchst.

Welche Schlüssel oder Codes braucht er?

Die Registry nennt keinen erforderlichen Schlüssel, manche Server bitten dich aber bei der ersten Nutzung, dich anzumelden.

Läuft er auf meinem Computer oder in der Cloud?

Er läuft auf deinem Computer. Deine KI-App startet ihn bei Bedarf, und die Daten laufen nicht über die Server des Entwicklers (außer der Server ruft selbst einen Onlinedienst auf).

Wird er noch gepflegt?

Das GitHub-Repo wurde zuletzt – geändert, und die neueste Version (0.23.0) kam vor 41 Tagen in die Registry.

Welche Apps können ihn nutzen?

Apps, die MCP unterstützen, etwa Claude Desktop, Claude Code, Cursor und VS Code. Außerdem brauchst du Python (uv) auf deinem Computer.

Was kann ich stattdessen nutzen?

In derselben Kategorie: Spec Driven Development, Remote Desktop Commander, ProAgentStore

Alternativen

Server derselben Kategorie von anderen Entwicklern, sortiert nach Sternen.

So liest du eine Karte:★ GitHub-SterneiDrei Säulen: Bewertungen · Checks · NutzungiAktualisiert = neueste Version in der Registry veröffentlichti

Spec Driven Development

von formulahendry

MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.

Läuft auf deinem Computer★ 440MITAktualisiert vor 14 Monaten
Installieren

Remote Desktop Commander

von desktop-commander

Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.

Läuft in der Cloud★ 211Aktualisiert vor 3 Tagen
Installieren

ProAgentStore

von ProAgentStore

MCP-first control plane for ProAgentStore agents and private instances.

Läuft in der CloudAktualisiert heute
Installieren

README vom Entwickler

README öffnen

Unverändert aus dem Repo des Entwicklers übernommen. PopNx MCP hat den Inhalt weder geprüft noch empfiehlt es ihn. HTML, Bilder und Skripte wurden entfernt. Links führen von dieser Website weg.

🇨🇭 Part of the [Swiss Public Data MCP Portfolio](https://github.com/malkreide)

📰 amtsblatt-mcp

MCP server for amtsblattportal.ch — the Swiss official gazette portal

(SHAB + 27 cantonal gazettes). Public procurement and official notices,

person-data rubrics excluded by design.

🇩🇪 Deutsche Version

Overview

The Amtsblattportal publishes roughly 2.79 million official notices: public procurement, cantonal and communal announcements, enactments, spatial planning — and also bankruptcies, debt collection, inheritance calls and civil-status records naming natural persons.

This server exposes only the first group. Rubrics carrying systematic natural-person data are not queryable, and no tool accepts a person's name, birth date or address. That is a deliberate data-protection decision, explained in Data Protection & Scope.

Anchor demo query: *"Which public tenders did canton Ticino publish this month?"*

Demo

→ gazette_search_procurement(canton="TI", only_language=True, language="it") → gazette_get_publication(id=…)

For procurement in any other canton — including Zürich, Bern and Basel-Stadt — use swiss-procurement-mcp; see Boundary with swiss-procurement-mcp.

Features

  • Fail-closed green allow-list — 49 released rubrics out of 152; everything else is blocked by default, including rubrics the upstream adds later
  • Explanatory refusals — a blocked rubric returns *why*, never a silent empty result and never a workaround hint
  • Procurement-aware — knows that only AR and TI still publish tenders here, that BS wound down during 2024 and BL/VS are historical archives, that OB-ZG was never filled after the simap switch, and that ZH routes everything through simap.ch — so it explains instead of returning nothing. Activity is measured, not read off the rubric label
  • Deadline arithmetic in Europe/Zurich, the legally relevant timezone
  • Honest multilingual counts — the portal publishes one record per language with a *different* publication number each; identical editions are collapsed, translated ones are reported via language_mix rather than guessed at, and only_language=True gives a single-language view
  • Defensive XML parsing — the schema is per-sub-rubric; no rubric-specific path is hard-coded, and entity-escaped HTML bodies are unescaped and stripped
  • Egress allow-list, retry with backoff, structured JSON logging
  • Markdown or JSON output with per-response attribution + provenance

Prerequisites

  • Python 3.11+
  • No API key. The read API of amtsblattportal.ch is freely accessible.

Installation

pip install amtsblatt-mcp

or, without installing:

uvx amtsblatt-mcp

From source:

git clone https://github.com/malkreide/amtsblatt-mcp

cd amtsblatt-mcp pip install -e ".[dev]"

Configuration

Claude Desktop
{

"mcpServers": { "amtsblatt": { "command": "uvx", "args": ["amtsblatt-mcp"] } } }

Cloud deployment (streamable-http)
export MCP_TRANSPORT=streamable-http

export MCP_API_KEY="$(openssl rand -hex 32)" # mandatory — fails loud if unset export PORT=8000 amtsblatt-mcp

The endpoint is `/mcp`.

Migrating from SSE. Until 0.18.0 this server spoke SSE only, on

/sse + /messages. MCP spec 2026-07-28 reclassifies HTTP+SSE as

deprecated with a twelve-month removal window and removes protocol-level

sessions, so streamable-http is now the default. MCP_TRANSPORT=sse still

works and still carries the full bearer-auth, rate-limit and CORS stack — it

logs a warning at startup naming the deadline. **Update the client URL when

you switch**: the path change is the part that breaks silently.

VariableDefaultPurpose
MCP_TRANSPORTstdiostdio, streamable-http (alias http), or the deprecated sse
MCP_HOST127.0.0.1HTTP bind address. Defaults to loopback; set 0.0.0.0 to expose on all interfaces (the Docker image does this deliberately).
MCP_STATELESS_(on)_streamable-http runs with no session tracking at all — the native mode of spec 2026-07-28, which has no protocol-level sessions. Removes session hijacking and session affinity as questions rather than answering them (SEC-009, SCALE-002). 0 / false / no restores sessions for handshake-era clients; any other value keeps the default. Ignored on sse, which has no stateless mode.
MCP_CORS_ORIGINS_(unset)_Comma-separated origins allowed to call the endpoint from a browser. Unset means no cross-origin browser access at all — stdio and non-browser clients are unaffected. Mcp-Session-Id is exposed and accepted for the listed origins, so a browser client can hold a session. * is honoured but logs a warning and disables credentials, because browsers reject a wildcard origin together with credentials.
MCP_API_KEY—Bearer token; required on every HTTP transport
MCP_RATE_LIMIT / MCP_RATE_WINDOW60 / 60Sliding-window rate limit
RUBRICS_TTL86400Taxonomy cache TTL (seconds)
LOG_LEVELINFODEBUG \INFO \WARNING \ERROR. Structured JSON, one object per line, always on stderr — stdout carries the MCP protocol on a stdio transport.
Logging

Built on structlog. Every event emitted during a tool call carries that call's correlation_id, bound via contextvars — so a retry or an egress denial logged deep in the HTTP path can be joined to the request that caused it, without threading context through every signature.

LevelEmitted when
DEBUGa tool call was entered (tool_call_started) — tells you whether a hung call ever started
INFOa tool call finished cleanly, with latency
WARNINGupstream retry, egress denied, auth failure, rate limit
ERRORa tool call raised

Records carry the exception *type* only — never its message and never an upstream response body.

{"event":"tool_call_started","tool":"gazette_search_procurement","correlation_id":"23221af26ae640c7","level":"debug","timestamp":"2026-07-27T22:20:07.494276Z"}

{"status":"ok","latency_ms":312,"event":"tool_call","tool":"gazette_search_procurement","correlation_id":"23221af26ae640c7","level":"info","timestamp":"2026-07-27T22:20:07.806Z"}

Ship these to your SIEM and alert on auth_failed, rate_limited, egress_denied, green_gate_violation and blocked_publication_requested — the last two mean something tried to reach a rubric this server does not serve.

Available Tools

ToolSignatureNotes
gazette_search_publications(keyword?, rubric?, sub_rubric?, canton?, date_start?, date_end?, limit=20, page=0, language='de', only_language=False)Green rubrics enforced. Without rubric, all green rubrics are injected — a keyword-only query can never reach a blocked one.
gazette_search_detailedsame filters + `top_n=3`Aggregated. Search *and* full text for the top top_n hits in one call, fetched in parallel. Same green gate on every expanded document; blocked ones are withheld and counted, never rendered.
gazette_search_procurement(keyword?, canton?, date_start?, date_end?, include_inactive=False, limit=20, page=0, language='de', only_language=False)OB-* rubrics plus the gazette-native sub-rubrics AR-VS40, AR-OW40, BA-SH40. A canton with neither gets a simap.ch explainer and no HTTP call. No CPV — the source has none.
gazette_get_publication(id, response_format='markdown')Full official text from XML. Re-checks the rubric after fetching; content from a blocked rubric is discarded.
gazette_list_rubrics(language='de', rubric_class='green', response_format='markdown')rubric_class='all' shows the full taxonomy with traffic-light classes and reasons — listed ≠ queryable.
gazette_source_status(response_format='markdown')Reachability, latency, cache age, scope metrics.

All tools are readOnlyHint=True.

Example use cases
QuestionTool chain
Tenders in Ticino this quartergazette_search_procurement(canton="TI", only_language=True, language="it")
Procurement simap.ch does not havegazette_search_procurement(canton="VS") — 150 Valais awards, none on simap
Tenders in any other canton→ use swiss-procurement-mcp
What is even queryable here?gazette_list_rubrics()
Why can't I search bankruptcies?gazette_list_rubrics(rubric_class="all")
Zoning changes in Zurichgazette_search_publications(rubric="RP-ZH")
Full text of a noticegazette_get_publication(id="fbf0ff9e-…")
Everything published about one company→ use register-mcp

Data Protection & Scope

The Amtsblattportal systematically publishes personal data of natural persons. Those publications are public — but making them *systematically queryable by name* through an AI agent is a repurposing the publication never intended, and a profiling instrument under the revised Swiss FADP (revDSG).

Four rules follow, and they are enforced in code, not in documentation:

  1. Allow-list, never block-list. Not explicitly green ⇒ not queryable. New upstream rubrics are closed by default.
  2. No person-based search entry in any tool signature.
  3. No persistence. Publications have statutory deletion periods; a cache outliving them would actively undermine them. Only the *taxonomy* is cached.
  4. Blocked ⇒ explained. Never a silent empty result, never a hint at circumvention.
What is excluded

🔴 Konkurse (KK), Schuldbetreibungen (SB), Schuldenrufe (LS, SR), Nachlass (NA), Erbschaft/Testament/Ableben (ES, TE-*, VA-*), Familie & Zivilstand (FZ-*, BV-*, BU-*), gerichtliche Vorladungen (UV, GB-*, GE-*, SJ-BE), Baugesuche (BP-*), Grundbuch (GR-*), Meldungskatalog GR (AA-GR).

🟡 Deferred: Steuerwesen, Anzeigen, Bewilligungen, Bildungs- und Kirchenwesen and the general catch-all rubrics.

The full audit trail — including three documented extensions to the source specification — is in docs/rubric-classification.md.

How much each decision covers is measured, not estimated. docs/coverage-matrix.md enumerates the source's own rubric axis and marks this server's reach into it: 84.2 % of 2 804 063 publications are reachable, 12.6 % blocked by decision, 3.3 % still unclassified. The insolvency group alone is 321 704 publications — present in the source, out of reach here on purpose. Without that figure, "out of scope" and "not in the source" read the same in a review, and this repository made exactly that mistake once (see ARCH-003 in SECURITY.md).

The boundary with register-mcp

For publications about a specific company, use [register-mcp](https://github.com/malkreide/re

Nur der Anfang wird gezeigt; den Rest findest du im Repo

PopNx fragen