Skip to main content
Glama
malkreide

lobbywatch-mcp

by malkreide

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
LOBBYWATCH_MCP_HOSTNoHTTP bind host (set to 0.0.0.0 only behind an auth gateway)127.0.0.1
LOBBYWATCH_MCP_PORTNoHTTP bind port8000
LOBBYWATCH_MCP_CACHE_DIRNoDump cache location~/.cache/lobbywatch-mcp
LOBBYWATCH_MCP_CACHE_TTLNoCache time-to-live in seconds86400
LOBBYWATCH_MCP_LOG_LEVELNoDEBUG / INFO / WARNING / ERRORINFO
LOBBYWATCH_MCP_TRANSPORTNoTransport (stdio, http, sse)stdio
LOBBYWATCH_MCP_LOG_FORMATNotext (stdlib formatter) or json (structured via structlog)text
LOBBYWATCH_MCP_CORS_ORIGINSNoComma-separated origin allow-list for HTTP/SSE; when set, exposes Mcp-Session-Id to browsers
LOBBYWATCH_MCP_HTTP_TIMEOUTNoHTTP timeout in seconds60
LOBBYWATCH_MCP_OTEL_ENABLEDNoSet to 1 to enable OpenTelemetry tracing0
LOBBYWATCH_MCP_OTEL_ENDPOINTNoOTLP/HTTP collector endpoint (e.g. http://localhost:4318/v1/traces)

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
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 suggestions (audit ARCH-003).

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 organisation.anzeige_name, organisation.name, organisation.branche (where present), e.g. "Verlag", "Pharma", "Bank", "Krankenkasse", "Bildung". kommission: Commission abbreviation to restrict the result to, e.g. "WBK-N" for the education commission of the National Council. limit: Max number of {parlamentarier, ib} pairs returned (1–200).

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

NameDescription
lobbywatch_anchor_demoThe canonical demo query for the Schulamt / KI-Fachgruppe context, parameterised by branche. Useful as an opening prompt in conversational sessions.
lobbywatch_top_lobbyists_by_partyRanks parliamentarians of a given party by total mandate count. Useful for transparency-research workflows.

Resources

Contextual data attached and managed by the client

NameDescription
lobbywatch-attributionThe 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