Tavily Search
Búsqueda web impulsada por IA utilizando la API de Tavily Search.
Documentación
########################################################
Aviso de descontinuación
Construí este servidor MCP a principios de marzo de 2025, cuando el protocolo MCP era completamente nuevo y no existían formas consistentes de realizar búsquedas en chatbots, anticipándome a otras implementaciones.
Desde entonces, los buenos amigos de Tavily han lanzado su servidor MCP oficial de Tavily, que está bien mantenido y sincronizado con sus últimas capacidades. Por lo tanto, ahora estoy descontinuando este servidor en favor del suyo.
########################################################
Servidor MCP de Tavily
Un servidor de Protocolo de Contexto de Modelo que proporciona capacidades de búsqueda web impulsadas por IA utilizando la API de búsqueda de Tavily. Este servidor permite a los LLM realizar búsquedas web sofisticadas, obtener respuestas directas a preguntas y buscar artículos de noticias recientes con contenido relevante extraído por IA.
Características
Herramientas disponibles
-
tavily_web_search- Realiza búsquedas web exhaustivas con extracción de contenido impulsada por IA.query(cadena, obligatorio): Consulta de búsquedamax_results(entero, opcional): Número máximo de resultados a devolver (predeterminado: 5, máximo: 20)search_depth(cadena, opcional): Profundidad de búsqueda "básica" o "avanzada" (predeterminado: "básica")include_domains(lista o cadena, opcional): Lista de dominios a incluir específicamente en los resultadosexclude_domains(lista o cadena, opcional): Lista de dominios a excluir de los resultados
-
tavily_answer_search- Realiza búsquedas web y genera respuestas directas con evidencia de respaldo.query(cadena, obligatorio): Consulta de búsquedamax_results(entero, opcional): Número máximo de resultados a devolver (predeterminado: 5, máximo: 20)search_depth(cadena, opcional): Profundidad de búsqueda "básica" o "avanzada" (predeterminado: "avanzada")include_domains(lista o cadena, opcional): Lista de dominios a incluir específicamente en los resultadosexclude_domains(lista o cadena, opcional): Lista de dominios a excluir de los resultados
-
tavily_news_search- Busca artículos de noticias recientes con fechas de publicación.query(cadena, obligatorio): Consulta de búsquedamax_results(entero, opcional): Número máximo de resultados a devolver (predeterminado: 5, máximo: 20)days(entero, opcional): Número de días hacia atrás para buscar (predeterminado: 3)include_domains(lista o cadena, opcional): Lista de dominios a incluir específicamente en los resultadosexclude_domains(lista o cadena, opcional): Lista de dominios a excluir de los resultados
Prompts
El servidor también proporciona plantillas de prompts para cada tipo de búsqueda:
- tavily_web_search - Busca en la web usando el motor de búsqueda impulsado por IA de Tavily
- tavily_answer_search - Busca en la web y obtén una respuesta generada por IA con evidencia de respaldo
- tavily_news_search - Busca artículos de noticias recientes con la búsqueda de noticias de Tavily
Requisitos previos
- Python 3.11 o posterior
- Una clave de API de Tavily (obtenerla en el sitio web de Tavily)
uvadministrador de paquetes de Python (recomendado)
Instalación
Opción 1: Usando pip o uv
# With pip
pip install mcp-tavily
# Or with uv (recommended)
uv add mcp-tavily
Deberías ver una salida similar a:
Resolved packages: mcp-tavily, mcp, pydantic, python-dotenv, tavily-python [...]
Successfully installed mcp-tavily-0.1.4 mcp-1.0.0 [...]
Opción 2: Desde el código fuente
# Clone the repository
git clone https://github.com/RamXX/mcp-tavily.git
cd mcp-tavily
# Create a virtual environment (optional but recommended)
python -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
# Install dependencies and build
uv sync # Or: pip install -r requirements.txt
uv build # Or: pip install -e .
# To install with test dependencies:
uv sync --dev # Or: pip install -r requirements-dev.txt
Durante la instalación, deberías ver el paquete compilándose e instalándose con sus dependencias.
Uso con VS Code
Para una instalación rápida, usa uno de los botones de instalación con un clic a continuación:
Para instalación manual, agrega el siguiente bloque JSON a tu archivo de Configuración de Usuario (JSON) en VS Code. Puedes hacer esto presionando Ctrl + Shift + P y escribiendo Preferences: Open User Settings (JSON).
Opcionalmente, puedes agregarlo a un archivo llamado .vscode/mcp.json en tu espacio de trabajo. Esto te permitirá compartir la configuración con otros.
Ten en cuenta que la clave
mcpno es necesaria en el archivo.vscode/mcp.json.
{
"mcp": {
"inputs": [
{
"type": "promptString",
"id": "apiKey",
"description": "Tavily API Key",
"password": true
}
],
"servers": {
"tavily": {
"command": "uvx",
"args": ["mcp-tavily"],
"env": {
"TAVILY_API_KEY": "${input:apiKey}"
}
}
}
}
}
Configuración
Configuración de la clave de API
El servidor requiere una clave de API de Tavily, que se puede proporcionar de tres maneras:
-
A través de un archivo
.enven el directorio de tu proyecto:TAVILY_API_KEY=your_api_key_here -
Como variable de entorno:
export TAVILY_API_KEY=your_api_key_here -
Como argumento de línea de comandos:
python -m mcp_server_tavily --api-key=your_api_key_here
Configurar para Claude.app
Agrega a la configuración de Claude:
"mcpServers": {
"tavily": {
"command": "python",
"args": ["-m", "mcp_server_tavily"]
},
"env": {
"TAVILY_API_KEY": "your_api_key_here"
}
}
Si encuentras problemas, es posible que debas especificar la ruta completa a tu intérprete de Python. Ejecuta which python para encontrar la ruta exacta.
Ejemplos de uso
Para una búsqueda web regular:
Tell me about Anthropic's newly released MCP protocol
Para generar un informe con filtrado de dominios:
Tell me about redwood trees. Please use MLA format in markdown syntax and include the URLs in the citations. Exclude Wikipedia sources.
Para usar el modo de búsqueda de respuestas para respuestas directas:
I want a concrete answer backed by current web sources: What is the average lifespan of redwood trees?
Para búsqueda de noticias:
Give me the top 10 AI-related news in the last 5 days
Pruebas
El proyecto incluye un conjunto completo de pruebas con pruebas automatizadas de compatibilidad de dependencias.
Ejecutar pruebas
-
Instala las dependencias de prueba:
source .venv/bin/activate # If using a virtual environment uv sync --dev # Or: pip install -r requirements-dev.txt -
Ejecuta el conjunto de pruebas estándar:
./tests/run_tests.sh # Or using Make make test
Pruebas de compatibilidad de dependencias
Para asegurar que el proyecto funcione con las últimas versiones de dependencias, usa estos comandos:
# Test with latest dependencies using Make
make test-deps
# Full compatibility test with verbose output
make test-compatibility
# Or use the standalone script
./scripts/test-compatibility.sh
Estos comandos:
- Actualizarán todas las dependencias a sus últimas versiones
- Ejecutarán el conjunto completo de pruebas con cobertura
- Informarán cualquier problema de compatibilidad
- Mostrarán los cambios de versión para transparencia
Pruebas automatizadas
El proyecto incluye pruebas automatizadas de compatibilidad de dependencias a través de GitHub Actions:
- Pruebas semanales: Se ejecutan cada lunes a las 8 AM UTC
- Soporte multi-Python: Pruebas contra Python 3.11, 3.12 y 3.13
- Creación de issues: Crea automáticamente issues de GitHub cuando fallan las pruebas
- Activación manual: Se puede activar manualmente desde la pestaña de GitHub Actions
Comprender los resultados de las pruebas
Cuando las pruebas pasan: Tu proyecto es compatible con las últimas versiones de dependencias. Puedes actualizar tus archivos de requisitos de manera segura.
Cuando las pruebas fallan: Revisa la salida de las pruebas para identificar cambios importantes, actualiza tu código para manejar cambios de API, actualiza las pruebas si es necesario, o considera fijar versiones problemáticas de dependencias.
Ejemplo de salida de prueba
Deberías ver una salida similar a:
======================================================= test session starts ========================================================
platform darwin -- Python 3.13.3, pytest-8.3.5, pluggy-1.5.0
rootdir: /Users/ramirosalas/workspace/mcp-tavily
configfile: pyproject.toml
plugins: cov-6.0.0, asyncio-0.25.3, anyio-4.8.0, mock-3.14.0
asyncio: mode=Mode.STRICT, asyncio_default_fixture_loop_scope=function
collected 50 items
tests/test_docker.py .. [ 4%]
tests/test_integration.py ..... [ 14%]
tests/test_models.py ................. [ 48%]
tests/test_server_api.py ..................... [ 90%]
tests/test_utils.py ..... [100%]
---------- coverage: platform darwin, python 3.13.3-final-0 ----------
Name Stmts Miss Cover
-------------------------------------------------------
src/mcp_server_tavily/__init__.py 16 2 88%
src/mcp_server_tavily/__main__.py 2 2 0%
src/mcp_server_tavily/server.py 149 16 89%
-------------------------------------------------------
TOTAL 167 20 88%
El conjunto de pruebas incluye pruebas para modelos de datos, funciones de utilidad, pruebas de integración, manejo de errores y validación de parámetros. Se enfoca en verificar que todas las capacidades de la API funcionen correctamente, incluido el manejo de filtros de dominios y varios formatos de entrada.
Gestión de versiones
El proyecto incluye herramientas para compilar y publicar con las últimas versiones de dependencias:
Compilar con las últimas dependencias
# Build package with latest dependency versions
make build-latest
# Complete release workflow: test, build, and check with latest deps
make release-all
# Prepare a release with version management
./scripts/prepare-release.sh [new_version]
Flujo de trabajo de publicación
Enfoque recomendado para publicaciones con las últimas dependencias:
- Completar la preparación de la publicación:
make release-all - Subir sin degradaciones:
make upload-latest
Enfoque alternativo paso a paso:
- Probar con las últimas dependencias:
make test-compatibility - Compilar para publicación:
make release-build - Subir sin recompilar:
make upload-latest
Publicación y lanzamiento con un solo comando:
make release-publish
Importante: Usa make upload-latest en lugar de make upload para evitar degradaciones de dependencias durante el proceso de subida. El comando upload-latest usa archivos de distribución existentes sin reinstalar dependencias.
Los comandos de publicación aseguran que tu paquete se compile y pruebe con las versiones de dependencias compatibles más recientes, evitando las degradaciones que pueden ocurrir con cadenas de compilación tradicionales.
Docker
Compila la imagen de Docker:
make docker-build
Alternativamente, compila directamente con Docker:
docker build -t mcp_tavily .
Ejecuta un contenedor de Docker en segundo plano (nombre predeterminado mcp_tavily_container, puerto 8000 → 8000):
make docker-run
O manualmente:
docker run -d --name mcp_tavily_container \
-e TAVILY_API_KEY=your_api_key_here \
-p 8000:8000 mcp_tavily
Detén y elimina el contenedor:
make docker-stop
Sigue los registros del contenedor:
make docker-logs
Puedes anular los valores predeterminados configurando variables de entorno:
- DOCKER_IMAGE: nombre de la imagen (predeterminado
mcp_tavily) - DOCKER_CONTAINER: nombre del contenedor (predeterminado
mcp_tavily_container) - HOST_PORT: puerto del host a vincular (predeterminado
8000) - CONTAINER_PORT: puerto del contenedor (predeterminado
8000)
Depuración
Puedes usar el inspector de MCP para depurar el servidor:
# Using npx
npx @modelcontextprotocol/inspector python -m mcp_server_tavily
# For development
cd path/to/mcp-tavily
npx @modelcontextprotocol/inspector python -m mcp_server_tavily
Contribuciones
¡Damos la bienvenida a contribuciones para mejorar mcp-tavily! Así es como puedes ayudar:
- Haz un fork del repositorio
- Crea una rama de características (
git checkout -b feature/amazing-feature) - Realiza tus cambios
- Ejecuta las pruebas para asegurarte de que pasen
- Confirma tus cambios (
git commit -m 'Add amazing feature') - Sube a la rama (
git push origin feature/amazing-feature) - Abre una Solicitud de Extracción
Para ejemplos de otros servidores MCP y patrones de implementación, consulta: https://github.com/modelcontextprotocol/servers
Licencia
mcp-tavily está licenciado bajo la Licencia MIT. Consulta el archivo LICENCIA para más detalles.