CCM
/MCP
SkillsMCPMarketplacesDigestToolsAdvertise

This week in Claude

Every Monday: Claude Code, Agent SDK, MCP, and the Anthropic platform moves worth your time.

Skills by Category
Frontend DevelopmentBackend & APIsTesting & QASecurityDevOps & CI/CDGit & Pull RequestsDocumentationCode Review & QualityAI & Agent BuildingSkill Development
MCP Servers by Category
Sales & MarketingWeb & Browser AutomationDatabasesAI & LLM ToolsCloud & InfrastructureCommunication & MessagingDeveloper ToolsDesign & CreativeDocuments & KnowledgeSearch & Web Crawling
Marketplaces by Category
AI Agents & OrchestrationLLM IntegrationDevelopment ToolsFrontend & UIBackend & APIsDatabasesTesting & Code QualityDevOps & CloudSecurity & ComplianceGit & Version Control

Claude Code Marketplaces

Discover Claude Code plugins, extensions, and tools. Automatically updated directory of Anthropic Claude AI marketplaces with development tools, productivity plugins, and integrations.

Resources

  • Browse Skills
  • Browse MCP Servers
  • Browse Marketplaces
  • Skill index
  • MCP index
  • Marketplace index
  • Plugins Reference

Community

  • About
  • Tools
  • Feedback
  • Privacy Policy
  • Advertise

Built for the Claude Code community with Claude Code by mertbuilds.com

Independent project, not affiliated with Anthropic
malkreide avatar

Lobbywatch Mcp

malkreide/lobbywatch-mcp
STDIOregistry active
Summary

Connects Claude to Lobbywatch.ch, Switzerland's largest lobby transparency database tracking 245 federal parliamentarians and their 7,800 declared conflicts of interest. You get seven tools: look up MPs by name, filter mandates by industry or commission, fetch lobby group details, rank parliamentarians by number of ties, and check compensation transparency scores. Built dump-first (weekly JSON export cached locally for 24 hours) with live API fallback for lobby groups. Ships with fuzzy name matching, CC BY-SA 4.0 attribution baked into every response, and runs over stdio or HTTP. Designed to pair with parlament-mcp so you can cross-reference what a parliamentarian voted on with who they're connected to in a single conversation.

CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
ego lite browserego lite browser
ego lite browser
Fastest browser for AI agents to run web automation tasks, always free.
Download Free life-time →
Give your AI the whole web as clean markdownGive your AI the whole web as clean markdown
Give your AI the whole web as clean markdown
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
belt - the only tool your agent needs
belt - the only tool your agent needs
belt cli automatically finds the best tools and skills for your agent. image, video, music, tts...
one prompt install →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →
Agent, connect blockchain
Agent, connect blockchain
Connect your Claude agent to live crypto prices and trading routes via 1inch
Get the MCP →
inference shell
inference shell
create and run specialised agents in minutes
build now →
CodeHealth MCP ServerCodeHealth MCP Server
CodeHealth MCP Server
Protect your code quality, stop the AI slop.
Try For Free →
CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
ego lite browserego lite browser
ego lite browser
Fastest browser for AI agents to run web automation tasks, always free.
Download Free life-time →
Give your AI the whole web as clean markdownGive your AI the whole web as clean markdown
Give your AI the whole web as clean markdown
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
belt - the only tool your agent needs
belt - the only tool your agent needs
belt cli automatically finds the best tools and skills for your agent. image, video, music, tts...
one prompt install →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →
Agent, connect blockchain
Agent, connect blockchain
Connect your Claude agent to live crypto prices and trading routes via 1inch
Get the MCP →
inference shell
inference shell
create and run specialised agents in minutes
build now →
CodeHealth MCP ServerCodeHealth MCP Server
CodeHealth MCP Server
Protect your code quality, stop the AI slop.
Try For Free →

🏛️ lobbywatch-mcp

CI PyPI version Python License: MIT Data: CC BY-SA 4.0 Swiss Public Data MCP Portfolio

An MCP server that connects AI models to Lobbywatch.ch, the largest lobby database of the Swiss Federal Parliament — conflicts of interest, lobby groups, access badges, and transparency scores.

🇩🇪 Deutsche Version

Part of the Swiss Public Data MCP Portfolio — connecting AI models to Swiss public data sources.


🎯 Anchor Demo Query

"Welche Mitglieder der WBK-N haben Interessenbindungen zu Bildungsverlagen oder privaten Bildungsträgern, und wie ist ihre Transparenz-Bewertung?"

Which members of the National Council's Education Commission have declared conflicts of interest with educational publishers or private education providers, and how does their compensation transparency score compare?

→ More use cases by audience →

Demo

Demo: Claude using lobbywatch_search_parlamentarier_nach_branche and lobbywatch_get_transparenzquote


Overview

Lobbywatch.ch maintains the largest public database on Swiss federal parliamentarians and their connections to lobby organisations: 245 parliamentarians, ~7'800 interessenbindungen (declared mandates), 139 lobby groups, 368 access-badge holders, updated weekly, licensed CC BY-SA 4.0.

lobbywatch-mcp exposes this data to Large Language Models via the Model Context Protocol. It is designed to be used alongside parlament-mcp (the official Swiss Parliament's Curia Vista data): the pair makes it possible to ask what a parliamentarian did officially and who they are connected to — in a single conversation.

Features

  • Dump-first, API-fallback architecture. The weekly JSON dump is the primary source (stable, verified in production); the live dataIF REST API is used only where it returns reliable data (lobby groups, search).
  • Seven Phase 1 tools — parliamentarian lookup, conflict-of-interest listing, branche search, lobby group fetch, rankings, transparency quota, cache control.
  • CC BY-SA 4.0 attribution baked into every response via Pydantic envelopes.
  • Dual transport — stdio for Claude Desktop, streamable-http / sse for cloud deployments.
  • Fuzzy name matching via rapidfuzz for natural LLM input like "Jositsch" or "Wehrli".
  • No authentication required (Phase 1 — No-Auth-First).

Architecture

                    ┌─────────────────────────────┐
   LLM client       │     LobbywatchClient        │
  (Claude Desktop,  │                             │
   Inspector, …)    │   ┌───────────────────┐     │
        │           │   │  Dump cache       │     │      cms.lobbywatch.ch
        │  MCP      │   │  (24 h TTL,       │     │      ┌──────────────────┐
        ▼  stdio /  │   │   ~80 MB resident)├─────┼─────►│ weekly JSON      │
   ┌─────────┐ HTTP │   └───────────────────┘     │      │ export (~17 MB)  │
   │ FastMCP │◄────►│                             │      └──────────────────┘
   │ server  │      │   ┌───────────────────┐     │      ┌──────────────────┐
   └─────────┘      │   │  dataIF REST      ├─────┼─────►│ /interface/v1/   │
                    │   │  (live fallback)  │     │      │   json/…         │
                    │   └───────────────────┘     │      └──────────────────┘
                    └─────────────────────────────┘

Outbound HTTP runs through a single httpx.AsyncClient with follow_redirects=False, an SSRF guard that blocks RFC1918 / link-local / metadata IPs, and an httpx event hook that re-resolves on every request. The dump path is the primary source of truth for parliamentarian queries; dataIF is only used for lobby group lookups and the search endpoint.

Prerequisites

  • Python 3.11 or newer
  • Internet access to download the weekly Lobbywatch JSON export (~17 MB zipped)

Installation

From PyPI (after first release):

pip install lobbywatch-mcp

From source:

git clone https://github.com/malkreide/lobbywatch-mcp.git
cd lobbywatch-mcp
pip install -e ".[dev]"

Usage

Standalone

lobbywatch-mcp

This starts the server in stdio mode. For HTTP:

LOBBYWATCH_MCP_TRANSPORT=http LOBBYWATCH_MCP_PORT=8000 lobbywatch-mcp

Container

A hardened multi-stage Dockerfile ships with the repo (non-root, read-only-rootfs compatible). See docs/deployment.md and deploy/docker-compose.example.yml for resource limits, sticky-LB guidance and egress hardening.

docker build -t lobbywatch-mcp:0.2.0 .
docker run --rm -p 127.0.0.1:8000:8000 lobbywatch-mcp:0.2.0

Claude Desktop

Add to your claude_desktop_config.json:

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

A full example is provided in claude_desktop_config.json.

Example Queries

Once connected, try prompts such as:

  • "Give me the top 10 parliamentarians by number of interessenbindungen in the SP party."
  • "Which WBK-N members have mandates in the publishing or education industry?"
  • "Look up the lobby group 'economiesuisse' and list its connected parliamentarians."
  • "What is the compensation-transparency score distribution for the finance commission (FK-N)?"

Tools

All tool names use the lobbywatch_ namespace prefix (since 0.2.0) to avoid collisions with sibling portfolio servers.

ToolPurposeSource
lobbywatch_get_parlamentarier(name_or_id)Full profile + all conflicts of interestDump
lobbywatch_list_interessenbindungen(name_or_id, nur_hauptberuflich, nur_aktiv)Filtered mandate listDump
lobbywatch_search_parlamentarier_nach_branche(branche_query, kommission, limit)Cross-filter by industry and commissionDump
lobbywatch_get_lobbygruppe(name_or_id)Lobby group with connected MPs and organisationsLive dataIF
lobbywatch_get_ranking(kriterium, kommission, partei, limit)Top-N by criterionDump
lobbywatch_get_transparenzquote(kommission)Distribution of compensation transparency labelsDump
lobbywatch_refresh_dump() / lobbywatch_dump_status()Cache controlDump

Configuration

All behaviour is controlled via environment variables:

VariableDefaultPurpose
LOBBYWATCH_MCP_TRANSPORTstdioTransport (stdio, http, sse)
LOBBYWATCH_MCP_HOST127.0.0.1HTTP bind host (set to 0.0.0.0 only behind an auth gateway)
LOBBYWATCH_MCP_PORT8000HTTP bind port
LOBBYWATCH_MCP_CACHE_DIR~/.cache/lobbywatch-mcpDump cache location
LOBBYWATCH_MCP_CACHE_TTL86400 (24h)Cache time-to-live in seconds
LOBBYWATCH_MCP_HTTP_TIMEOUT60HTTP timeout in seconds
LOBBYWATCH_MCP_CORS_ORIGINS(unset)Comma-separated origin allow-list for HTTP/SSE; when set, exposes Mcp-Session-Id to browsers
LOBBYWATCH_MCP_LOG_FORMATtexttext (stdlib formatter) or json (structured via structlog)
LOBBYWATCH_MCP_LOG_LEVELINFODEBUG / INFO / WARNING / ERROR
LOBBYWATCH_MCP_OTEL_ENABLED0Set to 1 to enable OpenTelemetry tracing (requires pip install 'lobbywatch-mcp[obs]')
LOBBYWATCH_MCP_OTEL_ENDPOINT(unset)OTLP/HTTP collector endpoint (e.g. http://localhost:4318/v1/traces)

Project Structure

lobbywatch-mcp/
├── src/lobbywatch_mcp/
│   ├── __init__.py
│   ├── __main__.py        # CLI + transport selection
│   ├── config.py          # URLs, cache paths, attribution
│   ├── client.py          # Dump download + dataIF client
│   ├── models.py          # Pydantic v2 response envelopes
│   └── server.py          # FastMCP tool registrations
├── tests/
│   ├── conftest.py        # Fixture parliamentarians
│   ├── test_client.py     # Respx-mocked unit tests
│   ├── test_server.py     # Tool integration tests
│   └── test_live.py       # @pytest.mark.live — excluded from CI
├── .github/workflows/
│   ├── ci.yml             # Test matrix + ruff
│   └── publish.yml        # PyPI OIDC Trusted Publisher
├── claude_desktop_config.json
├── pyproject.toml
└── ...

Data License & Attribution

The code is released under the MIT License.

The data served through this MCP is © Lobbywatch.ch and licensed under CC BY-SA 4.0. Every response envelope includes the attribution string. Downstream users must:

  1. Credit Lobbywatch.ch as the data source.
  2. Share derivative datasets under the same CC BY-SA 4.0 terms.
  3. Understand that Lobbywatch is a community-researched database — not an official register. It is authoritative for transparency research but should not be confused with the Federal Parliament's own declarations.

Known Limitations

  • The upstream /table/parlamentarier/... dataIF REST endpoint currently returns empty result sets. The server works around this by using the weekly JSON dump instead.
  • zutrittsberechtigungen (access badges) are not populated in the "essential" dump variant used here. A future release will add a dedicated tool using the non-essential dump.

Contributing

See CONTRIBUTING.md.

Security

See SECURITY.md for the security posture, accepted-risk decisions, and how to report a vulnerability.

MCP Protocol Version

This server speaks two protocol eras over the same endpoint. The client's first request on a connection decides which one applies; a later claim from the other era is refused.

EraRevisionWho reaches it
initialize handshake2024-11-05 … 2025-11-25What today's clients speak. The server answers with the revision asked for, or with the 2025-11-25 ceiling when the request asks for something newer.
Per-request envelope2026-07-28A request carrying the 2026-07-28 _meta envelope opens a modern connection.

Both revisions are pinned in tests/test_protocol_version.py and asserted against the installed SDK, so a Dependabot bump of mcp cannot move either one silently. This server builds no ASGI app to send an initialize through, so the gate asserts the SDK constants rather than a measured response — the weaker form, named rather than left unsaid.

Note that the SDK's LATEST_PROTOCOL_VERSION is an alias for the modern era, not for the handshake era — pinning against it alone would leave the era that current clients actually negotiate free to drift.

Update policy. When the gate fails, do not edit the constant blindly: read the spec changelog between the two revisions, verify the server still behaves, then move the constant, this section, README.de.md and CHANGELOG.md together.

Changelog

See CHANGELOG.md.

License

MIT License — see LICENSE. Data CC BY-SA 4.0 — see NOTICE.md.

Author

malkreide · GitHub


Part of the Swiss Public Data MCP Portfolio.

Installation

Run via uv's uvx — no clone or manual install needed. Add to your MCP client config (mcpServers for Claude Desktop, Cursor and Windsurf; use a top-level servers key for VS Code in .vscode/mcp.json):

{
  "mcpServers": {
    "lobbywatch-mcp": {
      "command": "uvx",
      "args": [
        "lobbywatch-mcp"
      ]
    }
  }
}
Featured
CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
ego lite browserego lite browser
ego lite browser
Fastest browser for AI agents to run web automation tasks, always free.
Download Free life-time →
Give your AI the whole web as clean markdownGive your AI the whole web as clean markdown
Give your AI the whole web as clean markdown
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
belt - the only tool your agent needs
belt - the only tool your agent needs
belt cli automatically finds the best tools and skills for your agent. image, video, music, tts...
one prompt install →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →
Agent, connect blockchain
Agent, connect blockchain
Connect your Claude agent to live crypto prices and trading routes via 1inch
Get the MCP →
inference shell
inference shell
create and run specialised agents in minutes
build now →
CodeHealth MCP ServerCodeHealth MCP Server
CodeHealth MCP Server
Protect your code quality, stop the AI slop.
Try For Free →
Categories
Data & Analytics
Registryactive
Packagelobbywatch-mcp
TransportSTDIO
UpdatedJun 7, 2026
View on GitHub

More from malkreide

  • Meteoswiss Mcp
  • News Monitor Mcp
  • Openlex Mcp
  • Parlament Mcp
  • Register Mcp
  • Seco Labor Mcp
  • Swiss Courts Mcp
  • Swiss Cultural Heritage Mcp
  • Swiss Electricity Mcp
  • Swiss Energy Mcp
  • Swiss Food Safety Mcp
  • Swiss Road Mobility Mcp
  • Wsl Envidat Mcp
  • Zh Education Mcp
  • Sbb Opendata Mcp1
  • Swiss Ip Mcp
  • Zurich Opendata Mcp7
  • Swisstopo Mcp4
  • Swiss Democracy Mcp2
  • Swiss Statistics Mcp2
  • Swiss Transport Mcp2
  • Eth Library Mcp1
  • Fedlex Mcp1
  • Srgssr Mcp1

Related Data & Analytics MCP Servers

View all →
malkreide avatar
Meteoswiss Mcp

malkreide/meteoswiss-mcp

MeteoSwiss Open Data for weather, climate normals, warnings
malkreide avatar
Swiss Energy Mcp

malkreide/swiss-energy-mcp

Swiss energy data via SFOE/BFE and GeoAdmin REST APIs
malkreide avatar
Swiss Food Safety Mcp

malkreide/swiss-food-safety-mcp

BLV open data for food safety and veterinary inspections
malkreide avatar
Swiss Snb Mcp

malkreide/swiss-snb-mcp

SNB data portal: exchange rates, balance sheet, policy rates, SARON, monetary aggregates
malkreide avatar
Zh Education Mcp

malkreide/zh-education-mcp

Canton and City of Zurich education data: schools, statistics, infrastructure
massanaroger avatar
Extracto Mcp

massanaroger/extracto-mcp

Turn any URL plus a schema into validated, typed JSON via the Extracto API.