Raw HTML, images and image descriptions can each be larger than the results themselves, so having them opt-in keeps an ordinary search cheap and lets you turn them on for the one query that needs them. `include_answer` is the exception worth trying: a short generated answer alongside the sources gives the model something to check rather than something to trust. For news, prefer `days` over a general search — it is the difference between what is true now and what ranked well.
An MCP server over the Tavily Search API, which is built for retrieval rather than for humans reading a results page: it extracts the relevant content from each result and returns it in a form a model can use directly.
- A web search with a choice of depth — `basic` or `advanced` — and a result cap defaulting to 5 — `tavily_search`
- A news mode: set `topic` to `news` and `days` to how far back to look, defaulting to 3, or use `time_range` for a day, week, month or year window
- Domain control with `include_domains` and `exclude_domains`, so results come only from sources you accept
- Optional extras, all off by default: related images, descriptions for those images, a short generated answer alongside the results, and the raw HTML content of each page
A Tavily API key — sign up on their site, a free tier exists — supplied as `TAVILY_API_KEY`, ideally in the client's `env` block rather than in a command. The npm package name is `tavily-search-mcp-server` (0.1.0); build from a clone with `npm install` and `npm run build`, or run the Docker image, or install through Smithery. Stdio is the default; running `dist/sse.js`, or setting `TRANSPORT` to `sse` in Docker with port 3001 published, serves it over SSE instead.
One command plus a key — npx -y @smithery/cli install @apappascs/tavily-search-mcp-server --client claude, then supply credentials
