{"_id":"@ansvar/ch-food-safety-mcp","_rev":"2-88ad279dfbd00d6a983501286da2a619","name":"@ansvar/ch-food-safety-mcp","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@ansvar/ch-food-safety-mcp","version":"0.1.0","keywords":["mcp","agriculture","food-safety","haccp","aop","igp","swissness","switzerland"],"author":{"name":"Ansvar Systems","email":"info@ansvar.eu"},"license":"Apache-2.0","_id":"@ansvar/ch-food-safety-mcp@0.1.0","maintainers":[{"name":"ansvar","email":"jeffrey.von.rotz@ansvar.eu"}],"homepage":"https://ansvar.eu/open-agriculture","bugs":{"url":"https://github.com/Ansvar-Systems/ch-food-safety-mcp/issues"},"bin":{"ch-food-safety-mcp":"dist/server.js"},"dist":{"shasum":"77b051a20371a9ae7f4dae2c58dda6469cddf0e5","tarball":"https://registry.npmjs.org/@ansvar/ch-food-safety-mcp/-/ch-food-safety-mcp-0.1.0.tgz","fileCount":109,"integrity":"sha512-TuIBctgWzoLARsSWqfB1xFDR7jDWkO2Gcj/1Gj/1D6IYAj04RGR7gOn/SNNqMKUaozVgt1ORGR1NxQphDi+4wA==","signatures":[{"sig":"MEQCIHb7PhC0ilWj2ofUeYk+P5PttrNNz2hLB+EPx0St4oFiAiAtQ3WCy6Un6mTPmcSKCxMSb75wS+Wq7AchLJhcVWx9Sg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ansvar%2fch-food-safety-mcp@0.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":414604},"main":"dist/server.js","type":"module","types":"./dist/server.d.ts","engines":{"node":">=20"},"gitHead":"40fd9e95910f3e242d0bbbdb54358699da9a4478","mcpName":"io.github.ansvar-systems/ch-food-safety","scripts":{"dev":"tsx watch src/server.ts","lint":"eslint src/ tests/","test":"vitest run","build":"tsc","start":"node dist/server.js","ingest":"tsx scripts/ingest.ts","build:db":"tsx scripts/build-db.ts","typecheck":"tsc --noEmit","start:http":"node dist/http-server.js","test:watch":"vitest","ingest:diff":"tsx scripts/ingest.ts --diff-only","ingest:full":"tsx scripts/ingest.ts --force","ingest:fetch":"tsx scripts/ingest.ts --fetch-only","coverage:update":"tsx scripts/update-coverage.ts","freshness:check":"tsx scripts/check-freshness.ts"},"_npmUser":{"name":"ansvar","email":"jeffrey.von.rotz@ansvar.eu"},"repository":{"url":"git+https://github.com/Ansvar-Systems/ch-food-safety-mcp.git","type":"git"},"_npmVersion":"10.8.2","description":"Swiss food safety regulations via MCP -- LMG, HyV, HACCP, Selbstkontrolle, AOC/AOP/IGP, Swissness, labelling, temperature requirements","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.0","better-sqlite3":"^11.0.0","@modelcontextprotocol/sdk":"^1.12.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","eslint":"^9.0.0","vitest":"^2.0.0","typescript":"^5.5.0","@types/node":"^20.0.0","@types/better-sqlite3":"^7.6.0","@typescript-eslint/parser":"^8.0.0","@typescript-eslint/eslint-plugin":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ch-food-safety-mcp_0.1.0_1775385465575_0.1258401325291063","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Ansvar MCP servers are now distributed as source from github.com/Ansvar-Systems/ch-food-safety-mcp under Apache 2.0. Self-hosting instructions: see the repo README. Hosted gateway: ansvar.eu"}},"time":{"created":"2026-04-05T10:37:45.492Z","modified":"2026-05-02T05:45:49.771Z","0.1.0":"2026-04-05T10:37:45.732Z"},"bugs":{"url":"https://github.com/Ansvar-Systems/ch-food-safety-mcp/issues"},"author":{"name":"Ansvar Systems","email":"info@ansvar.eu"},"license":"Apache-2.0","homepage":"https://ansvar.eu/open-agriculture","keywords":["mcp","agriculture","food-safety","haccp","aop","igp","swissness","switzerland"],"repository":{"url":"git+https://github.com/Ansvar-Systems/ch-food-safety-mcp.git","type":"git"},"description":"Swiss food safety regulations via MCP -- LMG, HyV, HACCP, Selbstkontrolle, AOC/AOP/IGP, Swissness, labelling, temperature requirements","maintainers":[{"name":"ansvar","email":"jeffrey.von.rotz@ansvar.eu"}],"readme":"# Switzerland Food Safety MCP\n\n[![CI](https://github.com/Ansvar-Systems/ch-food-safety-mcp/actions/workflows/ci.yml/badge.svg)](https://github.com/Ansvar-Systems/ch-food-safety-mcp/actions/workflows/ci.yml)\n[![GHCR](https://github.com/Ansvar-Systems/ch-food-safety-mcp/actions/workflows/ghcr-build.yml/badge.svg)](https://github.com/Ansvar-Systems/ch-food-safety-mcp/actions/workflows/ghcr-build.yml)\n[![License: Apache-2.0](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)\n\nSwiss food safety regulations via the [Model Context Protocol](https://modelcontextprotocol.io). Query Lebensmittelgesetz (LMG), Selbstkontrolle/HACCP requirements, labelling rules, Swissness origin marking, AOC/AOP/IGP protected designations, temperature requirements, and Direktvermarktung (direct sales) rules -- all from your AI assistant.\n\nPart of [Ansvar Open Agriculture](https://ansvar.eu/open-agriculture).\n\n## Why This Exists\n\nSwiss food businesses must comply with the Lebensmittelgesetz (LMG, SR 817.0), the Hygieneverordnung (HyV), GHP guidelines from industry organisations, and cantonal enforcement rules. Requirements vary by business type (Baeckerei, Metzgerei, Kaeserei, Gastronomiebetrieb) and product category. The BLV publishes guidance across Fedlex, official circulars, and industry-specific GHP standards. This MCP server consolidates those requirements into a queryable database so AI assistants can give accurate, sourced answers about Swiss food safety obligations.\n\n## Quick Start\n\n### Claude Desktop\n\nAdd to `claude_desktop_config.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"ch-food-safety\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@ansvar/ch-food-safety-mcp\"]\n    }\n  }\n}\n```\n\n### Claude Code\n\n```bash\nclaude mcp add ch-food-safety npx @ansvar/ch-food-safety-mcp\n```\n\n### Streamable HTTP (remote)\n\n```\nhttps://mcp.ansvar.eu/ch-food-safety/mcp\n```\n\n### Docker (self-hosted)\n\n```bash\ndocker run -p 3000:3000 ghcr.io/ansvar-systems/ch-food-safety-mcp:latest\n```\n\n### npm (stdio)\n\n```bash\nnpx @ansvar/ch-food-safety-mcp\n```\n\n## Example Queries\n\nAsk your AI assistant:\n\n- \"Welche HACCP-Anforderungen gelten fuer eine Baeckerei?\"\n- \"Braucht mein Hofladen eine BLV-Bewilligung oder reicht die kantonale Meldung?\"\n- \"Welche Allergene muessen auf vorverpackten Lebensmitteln deklariert werden?\"\n- \"Bei welcher Temperatur muss Frischfleisch gelagert werden?\"\n- \"Ist Gruyere AOP oder IGP geschuetzt?\"\n- \"Darf ich Rohmilch ab Hof verkaufen und welche Bedingungen gelten?\"\n- \"What Swissness rules apply to food labelling?\"\n\n## Stats\n\n| Metric | Value |\n|--------|-------|\n| Tools | 10 (3 meta + 7 domain) |\n| Jurisdiction | CH |\n| Data sources | LMG (SR 817.0), HyV, LGV, BLV guidelines, AOC/AOP/IGP Register, Swissness (MSchG) |\n| License (data) | Swiss Federal Administration -- free reuse |\n| License (code) | Apache-2.0 |\n| Transport | stdio + Streamable HTTP |\n\n## Tools\n\n| Tool | Description |\n|------|-------------|\n| `about` | Server metadata and links |\n| `list_sources` | Data sources with freshness info |\n| `check_data_freshness` | Staleness status and refresh command |\n| `search_food_safety` | FTS5 search across all food safety rules |\n| `get_self_monitoring_requirements` | Selbstkontrolle/HACCP requirements by business type |\n| `get_registration_requirements` | BLV vs. cantonal registration requirements |\n| `get_labelling_rules` | Mandatory labelling, allergen, and Swissness rules |\n| `get_temperature_requirements` | Storage and transport temperatures per food category |\n| `search_direct_sales_rules` | Direktvermarktung rules (Hofladen, Ab-Hof, Wochenmarkt) |\n| `get_origin_protection` | AOC/AOP and IGP protected designations |\n\nSee [TOOLS.md](TOOLS.md) for full parameter documentation.\n\n## Security Scanning\n\nThis repository runs security checks on every push:\n\n- **CodeQL** -- static analysis for JavaScript/TypeScript\n- **Gitleaks** -- secret detection across full history\n- **Dependency review** -- via Dependabot\n- **Container scanning** -- via GHCR build pipeline\n\nSee [SECURITY.md](SECURITY.md) for reporting policy.\n\n## Disclaimer\n\nDieses Tool stellt Referenzdaten ausschliesslich zu Informationszwecken bereit. Es ersetzt keine Rechtsberatung oder die Konsultation der zustaendigen kantonalen Lebensmittelkontrolle bzw. des BLV. Siehe [DISCLAIMER.md](DISCLAIMER.md).\n\nThis tool provides reference data for informational purposes only. Always consult the responsible cantonal food safety authority or BLV. See [DISCLAIMER.md](DISCLAIMER.md).\n\n## Contributing\n\nIssues and pull requests welcome. For security vulnerabilities, email security@ansvar.eu (do not open a public issue).\n\n## License\n\nApache-2.0. Data sourced from Swiss Federal Administration publications under free reuse terms.\n","readmeFilename":"README.md"}