MCP Server for Swiss Federal Food Safety and Veterinary Office (BLV) open data โ no auth required
Project description
๐จ๐ญ Part of the Swiss Public Data MCP Portfolio
swiss-food-safety-mcp
MCP server connecting AI models to Swiss Federal Food Safety and Veterinary Office (BLV) open data โ food recalls, animal disease surveillance, food control results, antibiotic usage, children's nutrition surveys and the pesticide register. No authentication required.
Overview
swiss-food-safety-mcp gives AI assistants like Claude direct access to official Swiss food safety and veterinary data from the Federal Food Safety and Veterinary Office (BLV / Bundesamt fรผr Lebensmittelsicherheit und Veterinรคrwesen). It provides 11 tools covering food recalls, animal disease surveillance, food control results, antibiotic usage in veterinary medicine, nutrition surveys for children, and the pesticide register.
All data comes from official Swiss federal sources (opendata.swiss, lindas.admin.ch, news.admin.ch). No API keys or authentication are required.
This server follows the No-Auth-First philosophy and is part of a Swiss public sector MCP portfolio.
Anchor demo query: "Are there any current BLV food warnings relevant to Zurich school canteens โ and which notifiable animal diseases are currently reported in the canton?"
Features
- ๐จ Public warnings & recalls โ Live RSS feed of BLV product recalls and health warnings
- ๐ Animal disease surveillance โ Notifiable animal diseases since 1991 (InfoSM) via SPARQL + CSV
- ๐ฆ Avian influenza monitoring โ Wild bird surveillance data with geodata
- ๐ฅฉ Food control results โ Cantonal food inspection results and violation rates
- ๐ Antibiotic usage veterinary โ ISABV data on antibiotic use in animal medicine
- ๐ง Children's nutrition survey โ menuCH-Kids national nutritional survey data
- ๐ฟ Pesticide register โ Swiss approved pesticide products and active ingredients
- ๐ Dataset discovery โ Browse all 28 BLV datasets on opendata.swiss via CKAN API
- ๐ Dual transport โ stdio (Claude Desktop) + Streamable HTTP (cloud/Render.com)
- ๐ฃ๏ธ Bilingual โ German-first documentation, English secondary
Prerequisites
- Python 3.11+
uvoruvx(recommended) โ install uv
Installation
Using uvx (recommended โ no install needed)
uvx swiss-food-safety-mcp
Using uv
uv tool install swiss-food-safety-mcp
swiss-food-safety-mcp
From source
git clone https://github.com/malkreide/swiss-food-safety-mcp
cd swiss-food-safety-mcp
uv sync
uv run swiss-food-safety-mcp
Quickstart
Add to claude_desktop_config.json:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"swiss-food-safety": {
"command": "uvx",
"args": ["swiss-food-safety-mcp"]
}
}
}
Try it immediately in Claude Desktop:
"Which BLV food warnings are currently active?"
"Are there any notifiable animal diseases reported in Zurich canton this year?"
Other MCP Clients (Cursor, Windsurf, VS Code + Continue)
{
"mcpServers": {
"swiss-food-safety": {
"command": "uvx",
"args": ["swiss-food-safety-mcp"]
}
}
}
Cloud Deployment (Streamable HTTP)
For use via claude.ai in the browser (e.g. on managed workstations without local software):
swiss-food-safety-mcp --http
# Server runs on port 8002
Render.com (recommended):
- Push/fork the repository to GitHub
- On render.com: New Web Service โ connect GitHub repo
- Set the start command to:
swiss-food-safety-mcp --http - In claude.ai under Settings โ MCP Servers, add:
https://your-app.onrender.com/mcp
๐ก "stdio for the developer laptop, Streamable HTTP for the browser."
Available Tools
| Tool | Description | Data Source |
|---|---|---|
blv_get_public_warnings |
Current food recalls & health warnings | news.admin.ch RSS |
blv_list_datasets |
Browse all 28 BLV open datasets | opendata.swiss CKAN |
blv_get_dataset_info |
Dataset details & resource URLs | opendata.swiss CKAN |
blv_search_animal_diseases |
Notifiable animal diseases since 1991 | SPARQL / CSV fallback |
blv_get_animal_health_stats |
Annual animal health statistics | opendata.swiss CSV/JSON |
blv_get_food_control_results |
Cantonal food inspection results | opendata.swiss CSV |
blv_get_antibiotic_usage_vet |
Veterinary antibiotic usage (ISABV) | opendata.swiss CSV |
blv_get_avian_influenza |
Wild bird avian influenza surveillance | opendata.swiss JSON/KML |
blv_get_nutrition_data_children |
Children's nutrition survey (menuCH-Kids) | opendata.swiss CSV |
blv_search_pesticide_products |
Swiss approved pesticide register | opendata.swiss XML |
blv_get_meat_inspection_stats |
Slaughterhouse inspection statistics | opendata.swiss CSV/JSON |
Example Queries
| Query | Tool |
|---|---|
| "Which BLV food warnings are currently active?" | blv_get_public_warnings |
| "Are there animal diseases in Zurich canton in 2024?" | blv_search_animal_diseases |
| "What is the avian influenza situation in Switzerland 2024?" | blv_get_avian_influenza |
| "What do Swiss children actually eat?" | blv_get_nutrition_data_children |
| "Which copper-based pesticides are approved in Switzerland?" | blv_search_pesticide_products |
Architecture
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Claude / AI โโโโโโถโ Swiss Food Safety MCP โโโโโโถโ Swiss Federal Open Data โ
โ (MCP Host) โโโโโโโ (MCP Server) โโโโโโโ โ
โโโโโโโโโโโโโโโโโโโ โ โ โ opendata.swiss (CKAN/CSV) โ
โ 11 Tools ยท No Auth โ โ lindas.admin.ch (SPARQL) โ
โ Stdio | Streamable HTTP โ โ news.admin.ch (RSS/XML) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Synergies with Related MCP Servers
| Combination | Use Case |
|---|---|
swiss-food-safety-mcp + zurich-opendata-mcp |
Geo-mapped animal disease risk near school locations |
swiss-food-safety-mcp + fedlex-mcp |
Link recalls to food law (Lebensmittelgesetz) |
swiss-food-safety-mcp + swiss-statistics-mcp |
Nutrition data ร socioeconomics by school district |
swiss-food-safety-mcp + global-education-mcp |
Swiss children's nutrition vs. OECD benchmarks |
Project Structure
swiss-food-safety-mcp/
โโโ src/
โ โโโ swiss_food_safety_mcp/
โ โโโ __init__.py # Package metadata
โ โโโ server.py # All tools, resources, prompts
โโโ tests/
โ โโโ __init__.py
โ โโโ test_server.py # Unit tests (no live API calls)
โโโ .github/
โ โโโ workflows/
โ โโโ ci.yml # Python 3.11โ3.13 matrix
โโโ pyproject.toml # hatchling build, uv-compatible
โโโ CHANGELOG.md
โโโ CONTRIBUTING.md
โโโ LICENSE # MIT
โโโ README.md # This file (English)
โโโ README.de.md # German version
Data Sources
| Source | Description | Format |
|---|---|---|
| opendata.swiss/BLV | 28 open datasets | CSV, JSON, Parquet, SPARQL, XML |
| lindas.admin.ch/sparql | Swiss linked data SPARQL endpoint | RDF/SPARQL |
| news.admin.ch RSS | BLV public warnings & recalls | RSS/XML |
| blv.admin.ch | BLV website (DE/FR/IT/EN) | HTML |
All data is open government data (OGD) under Creative Commons with attribution requirement.
Known Limitations
- SPARQL endpoint: Automatic fallback to CSV if the lindas.admin.ch SPARQL endpoint is unavailable
- RSS feed: Limited to the most recent BLV publications; no historical archive
- Pesticide register: XML parsing may be slow for queries returning large result sets
- CKAN datasets: Opendata.swiss rate limits apply under heavy usage
- Animal disease data: Canton-level filtering depends on data completeness in the source
Testing
# Unit tests (no API access required)
PYTHONPATH=src pytest tests/ -m "not live"
# All tests including live API checks
PYTHONPATH=src pytest tests/
Changelog
See CHANGELOG.md
Contributing
See CONTRIBUTING.md
License
MIT License โ see LICENSE
Author
Hayal Oezkan ยท github.com/malkreide
Credits & Related Projects
- Data: opendata.swiss / BLV โ Federal Food Safety and Veterinary Office (BLV)
- Protocol: Model Context Protocol โ Anthropic / Linux Foundation
- Related: zurich-opendata-mcp โ MCP server for Zurich city open data
- Portfolio: Swiss Public Data MCP Portfolio
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file swiss_food_safety_mcp-1.0.0.tar.gz.
File metadata
- Download URL: swiss_food_safety_mcp-1.0.0.tar.gz
- Upload date:
- Size: 19.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
68ce9e6681539f08f1effb4f0eb5eb76d84e409af40d4e5037a02c852da03e74
|
|
| MD5 |
b5460a3c09b4060215a34e598c9973ce
|
|
| BLAKE2b-256 |
2634a97eea2eadd88a183733090649664653bae4fce4c3790abe4003a870fa11
|
Provenance
The following attestation bundles were made for swiss_food_safety_mcp-1.0.0.tar.gz:
Publisher:
publish.yml on malkreide/swiss-food-safety-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
swiss_food_safety_mcp-1.0.0.tar.gz -
Subject digest:
68ce9e6681539f08f1effb4f0eb5eb76d84e409af40d4e5037a02c852da03e74 - Sigstore transparency entry: 1192137036
- Sigstore integration time:
-
Permalink:
malkreide/swiss-food-safety-mcp@15e7cc79348c1e6ebd1503092eaa6e7169e6889d -
Branch / Tag:
refs/tags/v1.0.0 - Owner: https://github.com/malkreide
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@15e7cc79348c1e6ebd1503092eaa6e7169e6889d -
Trigger Event:
release
-
Statement type:
File details
Details for the file swiss_food_safety_mcp-1.0.0-py3-none-any.whl.
File metadata
- Download URL: swiss_food_safety_mcp-1.0.0-py3-none-any.whl
- Upload date:
- Size: 13.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
027d40c5f567c18e22632777f2865e840055091847be905809f8c7e2a32a1e57
|
|
| MD5 |
8cd04eb3fcf4191961b696eb5c5ded6c
|
|
| BLAKE2b-256 |
825627f00c7c878c66006e273dc83cbe56fcaf57d5aabf92886e6a77dd7ae989
|
Provenance
The following attestation bundles were made for swiss_food_safety_mcp-1.0.0-py3-none-any.whl:
Publisher:
publish.yml on malkreide/swiss-food-safety-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
swiss_food_safety_mcp-1.0.0-py3-none-any.whl -
Subject digest:
027d40c5f567c18e22632777f2865e840055091847be905809f8c7e2a32a1e57 - Sigstore transparency entry: 1192137038
- Sigstore integration time:
-
Permalink:
malkreide/swiss-food-safety-mcp@15e7cc79348c1e6ebd1503092eaa6e7169e6889d -
Branch / Tag:
refs/tags/v1.0.0 - Owner: https://github.com/malkreide
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@15e7cc79348c1e6ebd1503092eaa6e7169e6889d -
Trigger Event:
release
-
Statement type: