bakom-mcp
bakom-mcp is a read-only MCP server connecting AI assistants to Swiss BAKOM open data, enabling natural-language queries about broadband, mobile coverage, antennas, media, and telecom statistics — no API keys required.
Broadband & Fibre: Check fixed-line coverage at a location (30–1000 Mbit/s, 250m grid), query FTTB/FTTH fibre availability, and compare connectivity for up to 20 locations simultaneously (5G and fibre status side-by-side).
Mobile Coverage: Retrieve 5G/4G/3G outdoor coverage at a coordinate, showing how many providers cover that spot (100m grid).
Antenna Search: Locate mobile and broadcast transmitters within a configurable radius (100–5000m), including FM/TV transmitter sites with frequency and operator details.
Radio/TV Database: Search licensed Swiss broadcasters by name, type (radio/TV), and canton; access media landscape reports and dataset metadata.
Media & News: Retrieve current BAKOM news and regulatory topics on 5G, media, AI, postal services, frequency allocation, and broadband.
Telecom Statistics: Browse fixed-line, mobile, broadband market data, market shares, and household access statistics via opendata.swiss.
Broadband Atlas Catalogue: List all available BAKOM dataset layers with layer IDs and direct API links.
Health Check: Verify the status of all configured data sources (geo.admin.ch, opendata.swiss, rtvdb.ofcomnet.ch).
All data is public, read-only, and requires no authentication.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@bakom-mcpCheck 5G coverage in Bern"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
🇨🇭 Part of the Swiss Public Data MCP Portfolio
📡 bakom-mcp
MCP server for BAKOM open data – broadband, mobile coverage, media and Swiss telecom statistics.
Overview
bakom-mcp connects AI assistants like Claude to the Swiss Federal Office of Communications (BAKOM) open data infrastructure. It enables natural-language queries about broadband availability, 5G/4G coverage, mobile antenna locations, licensed broadcasters (RTV database), and telecommunications statistics — all without API keys.
All data is published as Open Government Data (OGD) on opendata.swiss / geo.admin.ch under CC BY 4.0 — see the Data Licence section below for attribution requirements.
Anchor demo query: "Which school buildings in district 7 do not yet have fibre optic connectivity?"
bakom_multi_standort_konnektivitaetdelivers the comparison table automatically.
→ More use cases by audience →
Related MCP server: srgssr-mcp
Scope
What this server does
✓ Read-only queries against three public BAKOM/Confederation APIs:
api3.geo.admin.ch/wms.geo.admin.ch(broadband, mobile coverage, antennas)ckan.opendata.swiss(telecom statistics, dataset metadata)rtvdb.ofcomnet.ch(licensed radio/TV broadcasters)
✓ Returns aggregated, anonymous data — no personal data, no household-level identification.
✓ Bound to Swiss WGS84 coordinates (lat 45.8–47.9, lon 5.9–10.6) via Pydantic input validation.
✓ Egress is locked to a code-layer allow-list of the six known data-source hosts.
What this server does not
✗ Send data anywhere (read-only, no write tools).
✗ Access the local filesystem (no path-traversal surface).
✗ Use authentication tokens (none required — all sources are public OGD).
✗ Cache or persist user inputs across calls.
✗ Execute shell commands or arbitrary code (no subprocess/os.system/eval).
Features
📶 Broadband availability – Fixed-line coverage at 30/100/300/500/1000 Mbit/s (250×250m grid)
🔌 Fibre status – FTTB/FTTH availability per location
📍 Multi-location comparison – Connectivity check for up to 20 locations simultaneously
📱 Mobile coverage – 5G/4G/3G outdoor coverage (100×100m grid)
📡 Antenna search – Mobile and broadcast transmitters within a configurable radius
📺 RTV database – Search licensed radio and TV broadcasters by name, type, canton
🗞️ Media landscape – BAKOM media structure reports and datasets
📊 Telecom statistics – Fixed-line, mobile, broadband market data via opendata.swiss
🗂️ Broadband Atlas catalogue – All BAKOM dataset layers with direct API links
🔓 No authentication required – All data is Open Government Data (OGD)
Prerequisites
Python 3.11+
uvorpipfor installationInternet connection (live APIs: geo.admin.ch, opendata.swiss, rtvdb.ofcomnet.ch)
Installation
# Recommended: uvx (no permanent installation required)
uvx bakom-mcp
# Or install with pip
pip install bakom-mcp
# Development install
git clone https://github.com/malkreide/bakom-mcp
cd bakom-mcp
pip install -e ".[dev]"Quickstart
Claude Desktop
Add to claude_desktop_config.json:
{
"mcpServers": {
"bakom": {
"command": "uvx",
"args": ["bakom-mcp"]
}
}
}Config file locations:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
Cloud / HTTP Transport
python -m bakom_mcp.server --http
# Server running at http://localhost:8050/mcpConfiguration via environment variables (see .env.example):
Variable | Default | Purpose |
|
| Bind address. Set to |
|
| TCP port. |
| (empty) | Comma-separated allowed origins for browser clients. Empty = CORS disabled. |
Docker
A hardened container image is provided. Suitable for cloud deployments behind a reverse proxy (Caddy, Traefik, nginx).
# Build & run via compose (recommended)
docker compose up --build
# Or via docker run
docker build -t bakom-mcp:latest .
docker run --rm \
--read-only \
--cap-drop=ALL \
--security-opt=no-new-privileges \
--tmpfs /tmp:rw,size=16M \
-p 127.0.0.1:8050:8050 \
bakom-mcp:latestThe image runs as non-root (UID 10001), uses a read-only filesystem, drops all Linux capabilities and refuses privilege escalation. Resource limits are configured in docker-compose.yml (256 MB memory, 0.5 CPU, 64 PIDs). The default port mapping binds to 127.0.0.1 only — for public exposure, terminate TLS and CORS at a reverse proxy.
Cursor / VS Code / LibreChat
{
"bakom": {
"command": "uvx",
"args": ["bakom-mcp"],
"transport": "stdio"
}
}💡 "stdio for the developer laptop, HTTP/SSE for the browser."
Available Tools (12)
Broadband & Connectivity
Tool | Description |
| Fixed-line coverage at a coordinate (30–1000 Mbit/s) |
| FTTB/FTTH fibre availability |
| Connectivity comparison for up to 20 locations |
Mobile & Transmitters
Tool | Description |
| 5G/4G/3G outdoor coverage |
| Mobile antennas within a configurable radius |
| Radio/TV transmitter sites near a location |
Media & RTV
Tool | Description |
| Search licensed broadcasters (RTV database) |
| Swiss media landscape datasets |
| Current BAKOM topics (5G, media, AI, postal) |
Statistics & Catalogue
Tool | Description |
| Telecom statistics from opendata.swiss |
| Full catalogue of Broadband Atlas layers |
| 🔍 Health check for all configured data sources |
Example Prompts
What is the broadband situation at Schulhaus Leutschenbach (47.4148, 8.5654)?
Compare 5G and fibre coverage for these three school buildings: [coordinates]
Which radio stations are licensed in canton Zurich?
Show me the current BAKOM position on 5G frequency allocation.
List all Broadband Atlas datasets available via geo.admin.ch.Safety & Limits
Aspect | Details |
Access | Read-only ( |
Personal data | No personal data — all sources are aggregated, public open data |
Rate limits | Built-in per-query caps (max 50 antennas, max 20 locations, max 50 RTV results) |
Timeout | 20 seconds per API call |
Authentication | No API keys required — all 3 APIs are publicly accessible |
Licences | All data under CC0 / open licences (Open Government Data) |
Terms of Service | Subject to ToS of the respective data sources: geo.admin.ch, opendata.swiss, rtvdb.ofcomnet.ch |
Data Sources
Source | Data | Authentication |
Broadband Atlas, mobile coverage, antenna locations | None | |
BAKOM datasets, telecom statistics | None | |
Licensed radio/TV broadcasters | None |
All data is published under open licences (CC0 / OGD).
Synergies with the MCP Portfolio
bakom-mcp can be combined with other servers in the portfolio for multi-dimensional queries:
zurich-opendata-mcp → school building addresses
+
bakom-mcp → fibre and 5G status
=
"Digital equity" dashboard for all school districtsFurther combinations:
srgssr-mcp+bakom-mcp→ Media coverage and broadcast networkswiss-statistics-mcp+bakom-mcp→ Telecom market developmentfedlex-mcp+bakom-mcp→ Regulatory context (RTVG, FMG)
Project Structure
bakom-mcp/
├── src/bakom_mcp/
│ ├── __init__.py # Package
│ ├── server.py # MCP server (12 tools, 2 resources)
│ └── py.typed # PEP 561 type marker
├── tests/
│ └── test_integration.py # Integration tests (live APIs)
├── assets/
│ └── demo.svg # Demo flow diagram
├── .github/workflows/
│ ├── ci.yml # CI: lint, syntax, import, tests
│ └── publish.yml # PyPI publish on release
├── .gitignore
├── pyproject.toml # Build config (hatchling)
├── CHANGELOG.md
├── CONTRIBUTING.md # Contribution guide (English)
├── CONTRIBUTING.de.md # Contribution guide (German)
├── SECURITY.md # Security policy (English)
├── SECURITY.de.md # Security policy (German)
├── LICENSE # MIT License
├── README.md # This file (English)
└── README.de.md # German versionTesting
# Unit tests (no network required)
PYTHONPATH=src pytest tests/ -m "not live"
# Integration tests (live APIs, internet required)
PYTHONPATH=src pytest tests/ -m "live"Changelog
See CHANGELOG.md
Contributing
Contributions are welcome! See CONTRIBUTING.md (🇩🇪 Deutsch) for guidelines on reporting bugs, suggesting features, and submitting pull requests.
Security
To report a vulnerability, see the Security Policy (🇩🇪 Deutsch). Please report security issues privately via GitHub Security Advisories rather than public issues.
Software Licence
MIT License — see LICENSE.
Data Licence
The BAKOM open data delivered through this server is published under CC BY 4.0. When using or redistributing tool outputs, attribute the source as:
Source: Federal Office of Communications (BAKOM) via opendata.swiss / geo.admin.ch · Licence: CC BY 4.0
Tool outputs already include this footer automatically. The Markdown response format ends with the attribution line; downstream applications that consume the JSON format should propagate the source/licence metadata to their end users.
Author
Hayal Oezkan · github.com/malkreide
Credits & Related Projects
Data: BAKOM Open Data – Federal Office of Communications (OFCOM/BAKOM)
Geodata: geo.admin.ch – swisstopo / Federal Geodata Infrastructure
Protocol: Model Context Protocol – Anthropic / Linux Foundation
Related: zurich-opendata-mcp – MCP server for Zurich city open data
Related: swiss-transport-mcp – Swiss public transport MCP server
Portfolio: Swiss Public Data MCP Portfolio
Part of the Swiss Open Data MCP portfolio — public data deserves public interfaces.
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": {
"bakom-mcp": {
"command": "uvx",
"args": [
"bakom-mcp"
]
}
}
}Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityDmaintenanceSwiss open data MCP server — transport, weather, geodata, companies, etc,. Zero API keys.7647622MIT
- AlicenseAqualityBmaintenanceMCP server connecting AI models to SRG SSR public APIs – weather, TV/radio metadata, program guide and Swiss votations/elections since 1900.151MIT
- AlicenseAqualityAmaintenanceMCP server connecting AI models to Swiss Federal Food Safety and Veterinary Office open data, enabling queries about food recalls, animal disease surveillance, food control results, and more.11MIT
- AlicenseBqualityAmaintenanceAn MCP server providing AI-powered access to Open Data from the City of Zurich, enabling queries to 900+ datasets, real-time environmental and mobility data, geodata, parliamentary proceedings, and more.268MIT
Related MCP Connectors
opendata.swiss MCP — Switzerland's federal open-data portal (CKAN catalogue).
MCP server for Statistics Sweden (SCB) - 1200+ tables with population, economy, environment data
simap MCP — Swiss public procurement tenders and awards (keyless).
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/bakom-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server