zdf-mcp
# zdf-mcp ๐บ
mcp-name: io.github.mohammad-abbasi-sh/zdf-mcp
Unofficial **read-only** MCP server for **[zdfheute.de](https://www.zdfheute.de)** โ ZDF heute news from zdfheute.de (free, no key, no login): latest headlines, news by topic, keyword search and full article text. No key, no login.
> Built by Mohammad Abbasi as part of the "Germany MCP factory". Not affiliated with zdfheute.de.
## For AI agents
Add to your MCP client config (stdio):
```json
{
"mcpServers": {
"zdf": {
"command": "uvx",
"args": ["zdf-mcp==0.1.0"]
}
}
}
```
Or run locally: `python -m zdf_mcp.server` (needs `mcp<2`, `httpx`).
## Tools
| Tool | Description |
|------|-------------|
| `zdf_headlines` | Latest headlines from the ZDF heute RSS feed โ `limit` 1..50 |
| `zdf_news_by_topic` | News by topic โ `topic`: politik, sport, wissen, kultur; `limit` 1..50 |
| `zdf_search_news` | Keyword search over the latest headlines โ `query`, `limit` 1..50 |
| `zdf_get_article` | Full article text โ `article` (zdfheute.de URL or slug) |
| `zdf_health` | Reachability probe (ok / blocked / error) โ one polite request |
## Development
```bash
python3 -m venv .venv && .venv/bin/pip install "mcp<2" httpx pytest
.venv/bin/pip install -e .
.venv/bin/python -m pytest tests/ -q
```
## License
MIT
---
Built by [Mohammad Abbasi](https://github.com/mohammad-abbasi-sh) โ [Almanibama](https://almanibama.ir) ยท [mabbasi.ir](https://mabbasi.ir)
TDQS
Scored across 5 tools
Each tool has a distinct role: listing headlines, topic filtering, keyword search, article fetch, and a health probe. The only mild overlap is between zdf_headlines and zdf_search_news, but the descriptions clearly explain that search operates over the same latest-headlines feed, making the boundary understandable.
The zdf_ prefix is applied uniformly, which is good, but the suffixes mix conventions: verb_noun (search_news, get_article) versus bare nouns (headlines, health) and a noun phrase (news_by_topic). It remains readable, but the pattern is not predictable enough to be called consistent.
Five tools is well-scoped for a news-reading server, and each one earns its place: discovery via headlines/topic/search, retrieval via get_article, and diagnostics via health. Nothing feels redundant or missing at the surface level.
The read-only lifecycle (browse, filter, search, fetch full text, connectivity check) is covered, which fits the stated scope. Minor gaps exist: only three topics are exposed (politik, wissen, kultur) and there is no way to page beyond the RSS window, though agents can work around these.