tavily_mcp_server_for_all_tools
Tavily Web Search MCP Server
Веб-поисковый MCP-сервис, разработанный на основе официального Python SDK Tavily, реализованный с использованием стандартного MCP Python SDK, работающий по транспортному протоколу Streamable HTTP и предоставляющий услуги через FastAPI + uvicorn.
Возможности
Сервис предоставляет 8 инструментов MCP, охватывающих основные возможности официального SDK Tavily:
Имя инструмента | Описание | Базовый интерфейс Tavily |
| Выполняет веб-поиск по ключевым словам, возвращает заголовки, ссылки, выдержки, оценки релевантности и опционально генерирует сводный ответ |
|
| Извлекает веб-страницу по указанному URL, возвращает текстовое содержимое (markdown / text) |
|
| Начиная с корневого URL, обходит весь сайт, массово извлекает содержимое нескольких страниц, подходит для систематического сбора контента сайта |
|
| Обходит структуру сайта, обнаруживает только URL-адреса страниц без извлечения содержимого, подходит для предварительного изучения масштаба сайта |
|
| Возвращает краткий ответ на конкретный вопрос |
|
| Возвращает сжатый контекст поиска, подходящий для непосредственной подачи в LLM / RAG (с автоматическим ограничением и обрезкой токенов) |
|
| Отправляет задачу глубокого исследования (Tavily автоматически выполняет многоэтапный поиск + генерирует сводный отчёт), задача выполняется асинхронно, немедленно возвращается |
|
| Опрашивает статус и окончательный результат задачи глубокого исследования по |
|
Задачи исследования, соответствующие
deep_research_start/deep_research_result, выполняются асинхронно на стороне сервера Tavily и могут занять несколько минут. Сначала вызовитеdeep_research_start, чтобы получитьrequest_id, затем опрашивайтеdeep_research_result, покаstatusне станетcompleted(илиfailed).
Related MCP server: tavily-pool-mcp
Структура каталогов
tavily-mcp-server/
├── app/
│ ├── config.py # 环境变量配置加载(.env)
│ ├── tavily_tools.py # TavilyToolkit:封装 web_search / web_fetch
│ ├── server.py # FastMCP 实例与工具注册
│ └── main.py # FastAPI 应用 + uvicorn 入口,挂载 Streamable HTTP
├── client/
│ └── test_client.py # 本地测试客户端(连接 MCP 服务并调用工具)
├── deploy/
│ ├── deploy.sh # 一键同步 + 部署到远程服务器
│ └── tavily-mcp.service # systemd 服务单元
├── requirements.txt
├── .env.example
└── .gitignoreТребования к окружению
Python 3.12 (локальная разработка в conda-среде
llm_factory_envs, на удалённом сервере используетсяllm_env)Tavily API Key (получить на app.tavily.com)
Локальная разработка и тестирование
1. Настройка переменных окружения
cp .env.example .env
# 编辑 .env,填入 TAVILY_API_KEY;本地测试保持 MCP_HOST=127.0.0.12. Установка зависимостей (conda-среда llm_factory_envs)
conda activate llm_factory_envs
pip install -r requirements.txt3. Запуск MCP-сервиса
python -m app.main
# 服务启动后监听 http://127.0.0.1:20260/mcp
# 健康检查: curl http://127.0.0.1:20260/health4. Проверка с помощью тестового клиента
Откройте ещё один терминал:
conda activate llm_factory_envs
python -m client.test_client --url http://127.0.0.1:20260/mcpТестовый клиент последовательно: подключится к сервису → выведет список доступных инструментов → вызовет web_search / web_fetch / web_crawl / web_map / qna_search / search_context и выведет результаты.
Задачи глубокого исследования занимают много времени (возможно, несколько минут), по умолчанию не тестируются. Чтобы также проверить deep_research_start / deep_research_result:
python -m client.test_client --url http://127.0.0.1:20260/mcp --deep-research
# 也可自定义研究任务描述:
python -m client.test_client --url http://127.0.0.1:20260/mcp --deep-research "近期国产大模型有哪些重要发布"В этом режиме после отправки задачи каждые 10 секунд будет опрашиваться deep_research_result, пока статус не станет completed / failed.
Развёртывание на удалённом сервере
Информация об удалённом сервере: 101.47.67.15, развёртывание по SSH (настроен вход по ключу), используется удалённая conda-среда llm_env, порт сервиса зафиксирован как 20260.
1. Настройка удалённого .env
В локальном .env измените MCP_HOST на 0.0.0.0 (прослушивание на всех интерфейсах), MCP_PORT оставьте 20260, затем запустите скрипт развёртывания, который автоматически синхронизирует .env через scp (если для удалённого и локального окружения нужны разные ключи, можно вручную поддерживать /opt/tavily-mcp-server/.env на сервере).
2. Развёртывание одной командой
bash deploy/deploy.shЭтот скрипт:
Синхронизирует файлы проекта через
rsyncвroot@101.47.67.15:/opt/tavily-mcp-server(исключая.git,__pycache__и т.д.)Синхронизирует
.env(если существует локально)Устанавливает зависимости в удалённой среде
llm_envУстанавливает/обновляет службу
systemdи перезапускает её
3. Брандмауэр / группа безопасности сервера
Убедитесь, что правила группы безопасности в консоли облачного провайдера разрешают TCP-порт 20260 (deploy.sh не изменяет группу безопасности автоматически, его нужно открыть вручную в консоли провайдера). Если на сервере включён firewalld/ufw, также необходимо разрешить этот порт, например:
# firewalld
ssh root@101.47.67.15 "firewall-cmd --permanent --add-port=20260/tcp && firewall-cmd --reload"4. Проверка удалённого развёртывания
curl http://101.47.67.15:20260/health
python -m client.test_client --url http://101.47.67.15:20260/mcpЧасто используемые команды администрирования
ssh root@101.47.67.15 "systemctl status tavily-mcp.service --no-pager"
ssh root@101.47.67.15 "journalctl -u tavily-mcp.service -f"
ssh root@101.47.67.15 "systemctl restart tavily-mcp.service"Настройка MCP-клиента
После завершения развёртывания вы можете подключиться к сервису в любом MCP-клиенте, поддерживающем Streamable HTTP, с помощью следующей JSON-конфигурации:
{
"mcpServers": {
"tavily-web-search": {
"type": "streamable_http",
"url": "http://101.47.67.15:20260/mcp"
}
}
}Для локальной отладки замените url на http://127.0.0.1:20260/mcp.
Описание переменных окружения
Переменная | Описание | Значение по умолчанию |
| Официальный API-ключ Tavily (обязательно) | Нет |
| Адрес прослушивания сервиса |
|
| Порт прослушивания сервиса |
|
| Имя MCP-сервера |
|
| Путь монтирования Streamable HTTP |
|
| Включить режим HTTP без состояния |
|
| Принудительный JSON-ответ (вместо SSE-потока) |
|
| Тайм-аут вызова API Tavily search/extract/qna/context/research (в секундах) |
|
| Тайм-аут вызова API Tavily crawl/map (в секундах), обход сайта обычно занимает больше времени |
|
| Уровень журналирования |
|
Меры безопасности
Файл
.envисключён в.gitignore, не загружайте его в репозиторий GitHub.Не жёстко задавайте ключи в коде, все конфиденциальные данные передаются через переменные окружения (динамическая загрузка через
python-dotenv).Перед коммитом убедитесь, что
git statusне содержит.envили других файлов с ключами.
This server cannot be deployed
Maintenance
Related MCP Connectors
MCP server for Firecrawl — web search, scraping, and biomedical/arXiv paper search.
AI Reasoning Cache & Consensus Layer with 11 MCP tools via Streamable HTTP.
Related MCP Servers
- FlicenseAqualityDmaintenanceEnables web search capabilities through the Tavily API and serves as a demonstration platform for building custom MCP tools. Designed for educational purposes to showcase MCP server development and LangGraph integration.6-
- AlicenseBqualityDmaintenanceA local MCP server that exposes Tavily search as a tool and rotates across multiple API keys for reliability.1MIT
- AlicenseAqualityCmaintenanceMCP server for web page fetching (converting to Markdown/text with automatic fallback between Tavily and Firecrawl) and web search via Tavily.2MIT
- AlicenseBqualityDmaintenanceMCP server providing search, extract, map, and crawl tools powered by Tavily for real-time web data access.421 npmMIT