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)

Capabilities

Features and capabilities supported by this server

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