
German Newsfeed MCP Server
io.github.Jakolo121由 GitHub 帳號 Jakolo121 發布v2.0.2更新於 Oct 24, 2026
MCP server for the public news API of tagesschau.de, including regional news from ARD broadcasters
概覽
本機 MCP 伺服器,將 AI 助理連接到 tagesschau.de 的公開新聞 API,可取得頭條、分類與地區新聞、全文搜尋和直播頻道清單。
- 可以做什麼
- 取得頭條新聞,包含文章全文,並可透過清單中的連結或 tagesschau.de 文章網址讀取單篇文章的完整正文(每次呼叫消耗一次上游請求)。
- 適用情境
- 適合讓助理回答有關德國時事的问题,例如目前頭條、經濟等分類新聞、某個邦的地區新聞,或與搜尋詞相符的文章,並附上來源連結。它面向德語新聞資訊,而非一般網頁搜尋。
- 執行需求
- 以 Python 套件形式透過 stdio 在本機執行,需要 Python 3.12+ 與 uv(若使用可選的 HTTP 傳輸,則需要 Docker 24+ 與 Docker Compose v2+)。不需要 API 金鑰或帳號。需要能連線到 tagesschau.de API 的網路。選用環境變數:TRANSPORT、HOST、PORT、LOG_LEVEL、RATE_LIMIT_PER_HOUR、USER_AGENT_CONTACT。
安裝
在 SourceWeft 中
- 開啟 儀表板中的 German Newsfeed MCP Server,將其新增到工作區。
- 為需要使用其工具的對話啟用該服務。
Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。
其他 MCP 客戶端
參照 儲存庫 中的啟動說明。
README
German Newsfeed MCP Server
[pylint] [tests] [python] [license]
Disclaimer: This is a private, unofficial project. It is not an ARD product and is neither operated nor endorsed by ARD, ARD-aktuell, or NDR. It is developed independently of the author's professional employment. "ARD" and "tagesschau" are trademarks of their respective owners and are named here solely to describe the API being accessed.
This project merely connects the public API to an MCP-capable AI assistant. ARD-aktuell is responsible for the API itself, its operation, and its content; this project cannot provide information on any of those. Please raise any concerns about this project, in particular from rights holders, as a GitHub issue. Substantiated concerns will be addressed promptly.
In thirty seconds
This Model Context Protocol (MCP) server
connects your AI assistant (Claude Desktop and others) to the public news
API of tagesschau.de: current headlines, category and regional news, and
full-text search, locally via stdio, no API key required.
Example: asked "Was sind die aktuellen Schlagzeilen?", the assistant answers with the current top stories from tagesschau.de, each with title, date, summary, and a link to the article.
Language:
- 🇩🇪 Deutsch
- 🇬🇧 English
Table of Contents
- What is this?
- Data Source and Terms of Use
- Features
- Project Structure
- Quick Start Local (Claude Desktop)
- Remote / Docker Deployment
- Configuration Reference
- Available Tools
- Available Resources
- Development Guide
- Running the Tests
- Makefile Reference
- Troubleshooting
- When it stops working
- License & Acknowledgements
What is this?
This MCP server connects the public news API of tagesschau.de to your AI assistant (Claude, Open Claw, etc.).
Once connected, your AI can answer questions like:
- "Was sind die aktuellen Schlagzeilen?"
- "Zeig mir die neuesten Wirtschaftsnachrichten."
- "Suche nach Artikeln über Ukraine."
- "Welche Regionalnachrichten gibt es aus Bayern?"
For details on the API and its terms, see Data Source and Terms of Use. No API key required.
Data Source and Terms of Use
This server calls the publicly accessible endpoint
www.tagesschau.de/api2u/, operated by ARD-aktuell. The delivered
content originates from the ARD broadcasters, remains subject to their
rights and to the terms of use of tagesschau.de:
https://www.tagesschau.de/nutzungsbedingungen/
The API is not officially documented. Community documentation is available at bund.dev (https://tagesschau.api.bund.dev). bund.dev is a civil-society documentation project, neither the operator of the API nor a rights holder of the content. Its documentation served as a reference for this project but does not grant any usage rights.
Applicable limits: at most 60 requests per hour, and no republication of the content except for offerings under a CC licence (https://tagesschau.de/creativecommons). Compliance is the responsibility of whoever operates a given instance.
The robots.txt of tagesschau.de additionally declares an express reservation of rights under Section 44b(3) of the German Copyright Act (as of 2026-05-19): text and data mining and the automated use of the content for training or fine-tuning AI models are prohibited without written consent. Expressly exempt is automated access for the sole purpose of retrieval-augmented generation (RAG) or grounding, provided the technical directives of the robots.txt are complied with and the content remains attributed to its original source. This server falls under that exemption: it passes content to the assistant exclusively together with source links. The retrieved content must not be used to train AI models.
Features
Project Structure
Quick Start Local (Claude Desktop)
Also applicable to other AI assistants, edit their respective config instead. This mode uses stdio transport; the server is launched as a child process. No port is needed.
Prerequisites
- macOS / Linux / Windows (WSL2)
- Python 3.12+
- uv:
curl -LsSf https://astral.sh/uv/install.sh | sh - Claude Desktop
Step 1: Clone and install
Step 2: Verify it works
Step 3: Connect Claude Desktop
Open your Claude Desktop config file:
Add the following entry (adjust the path to your clone):
Step 4: Restart Claude Desktop
Quit and reopen the application, or reload its MCP servers, depending on the application.
Step 5: Try it!
Ask your assistant:
"Was sind die aktuellen Nachrichten?"
Remote / Docker Deployment
Self-hosting for your own or team-internal use. The recommended default
is stdio (see Quick Start);
the streamable-http transport is an option you choose deliberately.
Security note: The HTTP transport has no authentication. Do not
expose it publicly without an authentication layer in front (e.g. a
reverse proxy). The Compose setup therefore deliberately binds the port
to 127.0.0.1 only. Whoever makes an instance reachable for third
parties becomes the responsible operator under the
terms of use.
Rate limiter limitations: stateless_http=True refers to MCP
sessions, not to the rate limiter. The token bucket is process-local
in-memory state. Two limitations follow:
- Multiple replicas against the same upstream API multiply the request budget.
- A container restart resets the bucket to full. Combined with
restart: unless-stoppedand a crash loop, this can exceed the limit. Watch the logs.
(The legacy sse transport is still supported.)
Prerequisites
- Docker 24+
- Docker Compose v2+
Step 1: Create your .env file
Step 2: Build and start
Or:
The server starts at http://localhost:8000.
Step 3: Verify health
Or:
Step 4: Connect Claude Desktop (Streamable HTTP)
For external servers: put an authentication layer in front first (see the security note above), then adjust the loopback binding in docker-compose.yml and replace localhost with your proxy's address.
Stop / Update
Configuration Reference
All settings are read from environment variables (or a .env file).
The defaults apply when running directly (uv run german-newsfeed-mcp).
The Compose setup overrides them: it sets HOST=0.0.0.0 and PORT=8000
(see docker-compose.yml).
Available Tools
These tools are callable by your AI assistant.
get_latest_news
Get the top stories.
Returns the full article text for each item (homepage feed). Every item also carries a 🔗 Volltext: link that get_article accepts.
get_article
Get the complete text of a single article.
Takes the 🔗 Volltext: link printed with every item by get_latest_news, get_news_by_ressort and get_regional_news; a plain https://www.tagesschau.de/<path>.html article link works too.
Costs exactly one upstream request per call out of the 60/h budget — call it for the articles that matter, not for every headline in a listing.
search_newsresults carry no article link and cannot be passed toget_article. Locate the article viaget_latest_news,get_news_by_ressortorget_regional_newsfirst.
get_news_by_ressort
Filter news by category.
Returns metadata only — title, topline, date and a teaser sentence — no full article text. Every item carries a 🔗 Volltext: link that get_article resolves into the full text.
Ressort strings are automatically normalised to lowercase:
"Inland","INLAND"and"inland"are all equivalent.
get_regional_news
News from a specific German state.
Returns metadata only — title, topline, date and a teaser sentence — no full article text. Every item carries a 🔗 Volltext: link that get_article resolves into the full text; because regional items originate at an ARD state broadcaster, they additionally carry a 📰 Quelle: line naming that broadcaster.
search_news
Full-text search across all available articles.
Returns metadata only — title, date and article type — no full article text. Search results carry no article link and therefore cannot be passed to get_article.
get_channels
List all live channels with stream URLs.
(No parameters)
Available Resources
Resources are addressable URIs that MCP clients can read directly.
Development Guide
Setup
Start the server:
Or:
Code organisation (SOLID)
Each module has exactly one responsibility:
Adding a new tool
- Add a
tool_<name>()async function intools.py - Register it with
@mcp.tool()inserver.py - Write unit + integration tests in
tests/test_tools.py
Running the Tests
Unit tests (no internet required, fast)
Or:
Live integration tests (requires internet)
Full suite
Or:
Quality gate (lint + tests)
Or:
Expected results
Makefile Reference
Troubleshooting
Claude Desktop shows no MCP tools
- Check that the
claude_desktop_config.jsonpath is absolute - Run
uv run python main.pyin the terminal, it should start without errors - Fully quit and reopen Claude Desktop (Cmd+Q, not just close window)
Docker container exits immediately
Or:
Common causes: wrong TRANSPORT value (must be streamable-http in Docker), port already in use.
API timeouts
The upstream API occasionally rate-limits certain endpoints. This is normal, the server returns a descriptive error message rather than crashing. Retry after a few seconds.
Rate-limit errors
If the server reports "Rate limit exceeded", the local request budget (RATE_LIMIT_PER_HOUR, default 60/h) is exhausted. No request was sent upstream. Try again later.
Import errors in tests
When it stops working
The upstream API is not officially documented and can change without
notice. You can tell by the tools suddenly returning empty lists or
error messages although tagesschau.de is reachable, and by the live
integration tests failing (uv run pytest tests/ -m integration).
All endpoints are defined in a single place: ENDPOINTS in
src/german_newsfeed_mcp/client.py. API changes can be tracked there.
The CI job upstream-check (.github/workflows/ci.yml) runs exactly
these live tests weekly against the real API and fails loudly when the
response format no longer matches.
License & Acknowledgements
Apache License 2.0.
The delivered news items are content of the ARD broadcasters, subject to their rights and the terms of use of tagesschau.de, see Data Source and Terms of Use.
Thanks to AndreasFischer1985, the bund.dev community for documenting the API and above all to the journalists at the ARD broadcasters, whose work this project merely passes along.
來源:README.md,提交 6a6b7b6
工具
0版本歷史
1- v2.0.2最新Sep 16, 2026
評分
已滿足適用檢查項的 50%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
- 近 30 天內可連通25 分
請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。
- 已宣告認證方式10 分
請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。
- 已列出工具15 分
請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。
- 描述必需15 分
- 圖示10 分
- 文件15 分
- 授權條款10 分