lobbywatch-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| LOBBYWATCH_MCP_HOST | No | HTTP bind host (set to 0.0.0.0 only behind an auth gateway) | 127.0.0.1 |
| LOBBYWATCH_MCP_PORT | No | HTTP bind port | 8000 |
| LOBBYWATCH_MCP_CACHE_DIR | No | Dump cache location | ~/.cache/lobbywatch-mcp |
| LOBBYWATCH_MCP_CACHE_TTL | No | Cache time-to-live in seconds | 86400 |
| LOBBYWATCH_MCP_LOG_LEVEL | No | DEBUG / INFO / WARNING / ERROR | INFO |
| LOBBYWATCH_MCP_TRANSPORT | No | Transport (stdio, http, sse) | stdio |
| LOBBYWATCH_MCP_LOG_FORMAT | No | text (stdlib formatter) or json (structured via structlog) | text |
| LOBBYWATCH_MCP_CORS_ORIGINS | No | Comma-separated origin allow-list for HTTP/SSE; when set, exposes Mcp-Session-Id to browsers | |
| LOBBYWATCH_MCP_HTTP_TIMEOUT | No | HTTP timeout in seconds | 60 |
| LOBBYWATCH_MCP_OTEL_ENABLED | No | Set to 1 to enable OpenTelemetry tracing | 0 |
| LOBBYWATCH_MCP_OTEL_ENDPOINT | No | OTLP/HTTP collector endpoint (e.g. http://localhost:4318/v1/traces) |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| lobbywatch_get_parlamentarierA | Look up a Swiss federal parliamentarian and return their full profile, including all declared/researched interessenbindungen. On a fuzzy miss, the response surfaces near-miss candidates so the LLM can prompt the user with "did you mean…?" suggestions instead of treating the empty result as authoritative (audit ARCH-003). Args: name_or_id: Either the numeric Lobbywatch ID (as string) or a name. Name matching is fuzzy — partial last names work. Use cases: - "Show me Anna Mustermann's full lobbying profile" - "What conflicts of interest does parliamentarian #42 declare?" - "Look up Wehrli — give me everything you have" |
| lobbywatch_list_interessenbindungenA | Return the list of interessenbindungen (conflicts of interest) for one parliamentarian, optionally restricted to full-time or currently-active mandates. On a fuzzy miss, near-miss candidates are returned in
Args: name_or_id: ID or name (fuzzy). nur_hauptberuflich: If True, only main-occupation mandates. nur_aktiv: If True, drop mandates with an end date (bis) set. Use cases: - "Which active mandates does Jositsch hold today?" - "List Anna Mustermann's full-time mandates only" - "Give me every IB ever declared by parliamentarian #1" |
| lobbywatch_search_parlamentarier_nach_brancheA | Find parliamentarians with interessenbindungen matching a search term against the linked organisation's name, alias, and (when available) branche field. Optional commission filter. Note: the Lobbywatch "essential" dump does not embed a branche taxonomy on each organisation — branche is referenced by id and resolved via the separate interessengruppe table. Version 0.1 therefore performs a substring match against organisation names and the branche field when present. Version 0.2 will add full cross-reference resolution. Args:
branche_query: Substring match (case-insensitive) against
Use cases: - "Which WBK-N members hold mandates in the publishing industry?" - "Cross-filter Pharma × FK-N to surface health-policy lobbyists" - "List every parliamentarian with a 'Krankenkasse' connection" |
| lobbywatch_get_rankingA | Rank parliamentarians by a criterion. Args: kriterium: One of "anzahl_interessenbindungen", "anzahl_hauptberuflich". kommission: Optional commission abbreviation filter (e.g. "WBK-N"). partei: Optional party filter (e.g. "SP", "SVP", "Mitte"). limit: Top-N to return (1–100). Use cases: - "Top 10 SP MPs by total mandate count" - "Which Mitte-Fraktion members have the most full-time mandates?" - "Rank WBK-N by IB count — who's most involved?" |
| lobbywatch_get_transparenzquoteA | Aggregate the verguetungstransparenz_beurteilung values across all parliamentarians (or a commission subset) and return the distribution. Useful to answer: 'How transparent is the education commission on compensation disclosure?' Use cases: - "How transparent is the FK-N on compensation disclosure?" - "Distribution of transparency labels across the whole parliament" - "Compare WBK-N transparency vs the council average" |
| lobbywatch_get_lobbygruppeA | Fetch a lobby group (interessengruppe) from the live Lobbywatch dataIF, including its connected organisations and parliamentarians. Uses the live REST API since this endpoint returns fresh data. Use cases: - "Look up 'economiesuisse' and list connected MPs" - "Who's affiliated with the lobby group #42?" - "Show me all parliamentarians linked to the pharma lobby" |
| lobbywatch_refresh_dumpA | Force re-download of the weekly Lobbywatch dump. Returns the new cache status. Reports progress via the MCP Context (audit SDK-003) so long-running downloads (~17 MB compressed) surface useful feedback to the calling LLM and operator. Use cases: - "Force a fresh download — the data looks stale" - "I just heard about a new declaration — refresh and re-check" |
| lobbywatch_dump_statusA | Return current dump cache status without forcing a refresh. Use cases: - "How fresh is the cached data right now?" - "When was the dump last loaded?" |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| lobbywatch_anchor_demo | The canonical demo query for the Schulamt / KI-Fachgruppe context, parameterised by branche. Useful as an opening prompt in conversational sessions. |
| lobbywatch_top_lobbyists_by_party | Ranks parliamentarians of a given party by total mandate count. Useful for transparency-research workflows. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| lobbywatch-attribution | The full attribution string mandated by the Lobbywatch.ch data licence. Every tool response embeds this; this resource lets clients display it as standalone metadata. |
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/malkreide/lobbywatch-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server