mcp server
veille-mcp
MCP server for Data, AI and cloud tech watch, with local LLM digests (Ollama)
Set up
Runs on your computer. Pick your agent and operating system.
Before you start
- uv (`curl -LsSf https://astral.sh/uv/install.sh | sh`)
{
"mcpServers": {
"veille-mcp": {
"command": "uvx",
"args": [
"veille-mcp"
]
}
}
}same format Cursor, GitHub Copilot CLI, Junie, JetBrains AI Assistant, Augment (Auggie CLI), Factory Droid, Kiro, Devin CLI +12
Values in angle brackets are placeholders. Restart Claude Desktop after editing its config.Claude Desktop docs
README
synced Oct 26, 2026veille-mcp
An MCP server that turns a curated set of RSS feeds into a Data, AI and cloud tech watch any MCP client can use (Claude Code, Claude Desktop, Cursor…), with digests written by a local LLM served by Ollama: no article leaves the network to be summarised.
It runs in my home lab, in a Proxmox LXC container, next to the Ollama server.
Claude Code ──MCP / Streamable HTTP──▶ veille-mcp (LXC) ──▶ 16 RSS feeds
│
└──▶ Ollama qwen3:8b (LXC, local LLM)
What it exposes
| Kind | Name | Purpose |
|---|---|---|
| Tool | latest_news | Newest articles from the last n hours, filtered by category (ia, data, cloud) or source |
| Tool | search_news | Keyword search over titles and summaries, title matches ranked first |
| Tool | digest | Summary written by the local LLM: key facts with numbered citations, trends, impact for a European cloud provider |
| Tool | list_sources | Feeds being watched |
| Resource | veille://sources | Feed configuration as JSON |
| Prompt | competitive_watch | Ready-made competitive brief on a vendor (AWS, Scaleway, Google Cloud…) |
Tools return typed, structured output (Pydantic models) and are annotated read-only. Feeds are fetched concurrently and cached for 15 minutes; a failing feed is reported in unavailable_sources instead of breaking the call.
Default feeds cover AI labs and research (Hugging Face, OpenAI, Google AI, Simon Willison, The Decoder, MIT Technology Review…), data engineering (InfoQ, Databricks) and cloud vendors (OVHcloud, Scaleway, AWS, Google Cloud, Azure). Point VEILLE_SOURCES at your own JSON file to change them.
Use it
pip install -e .
veille-mcp # stdio, for a local client
OLLAMA_URL=http://localhost:11434 veille-mcp --transport streamable-http --host 0.0.0.0
Add it to Claude Code:
claude mcp add --transport http veille http://<host>:8000/mcp
Then just ask: "What happened in AI this week? Give me a digest focused on European cloud providers."
| Variable | Default | |
|---|---|---|
OLLAMA_URL | (unset) | Ollama endpoint; digest is disabled without it |
OLLAMA_MODEL | qwen3:8b | Any model pulled in Ollama |
VEILLE_ALLOWED_HOSTS | (unset) | Comma-separated host:port list; enables DNS-rebinding protection |
VEILLE_SOURCES | bundled list | Path to a JSON feed list |
VEILLE_CACHE_TTL | 900 | Feed cache, in seconds |
digest runs on CPU in my lab and takes a few minutes; raise the client timeout if needed (MCP_TOOL_TIMEOUT=600000 for Claude Code).
Deploy (Proxmox LXC)
tar --exclude=.venv --exclude=.git -czf - . | ssh root@<ct> 'mkdir -p /opt/veille-mcp && tar -xzf - -C /opt/veille-mcp && /opt/veille-mcp/deploy/install.sh'
deploy/install.sh creates a dedicated system user, a virtualenv and a hardened systemd unit (ProtectSystem=strict, NoNewPrivileges). Settings live in /etc/veille-mcp.env.
Develop
pip install -e ".[dev]"
ruff check . && pytest --cov
Tests run the server in-process through the MCP client, with mocked HTTP for feeds and Ollama. CI runs lint and tests on Python 3.12 and 3.13.
License
MIT