Skip to content
Conduit

mcp server

veille-mcp

MCP server for Data, AI and cloud tech watch, with local LLM digests (Ollama)

Kestrall/veille-mcpcommunitylistedunreviewed

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`)
~/Library/Application Support/Claude/claude_desktop_config.json
{
  "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, 2026

veille-mcp

CI

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

KindNamePurpose
Toollatest_newsNewest articles from the last n hours, filtered by category (ia, data, cloud) or source
Toolsearch_newsKeyword search over titles and summaries, title matches ranked first
TooldigestSummary written by the local LLM: key facts with numbered citations, trends, impact for a European cloud provider
Toollist_sourcesFeeds being watched
Resourceveille://sourcesFeed configuration as JSON
Promptcompetitive_watchReady-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."

VariableDefault
OLLAMA_URL(unset)Ollama endpoint; digest is disabled without it
OLLAMA_MODELqwen3:8bAny model pulled in Ollama
VEILLE_ALLOWED_HOSTS(unset)Comma-separated host:port list; enables DNS-rebinding protection
VEILLE_SOURCESbundled listPath to a JSON feed list
VEILLE_CACHE_TTL900Feed 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

↑↓ navigate openesc close