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) |
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
| 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
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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