tavily-mcp-server


Nametavily-mcp-server JSON
Version 1.1.2 PyPI version JSON
download
home_pagehttps://github.com/mcp-team/tavily-mcp-server
SummaryTavily搜索MCP服务智能体 - 为AI智能体提供强大的网络搜索能力
upload_time2025-08-13 05:34:44
maintainerNone
docs_urlNone
authorMCP Team
requires_python>=3.8
licenseMIT
keywords tavily search mcp ai agent fastapi web-search
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Tavily MCP Server

🚀 **Tavily搜索MCP服务智能体** - 为AI智能体提供强大的网络搜索能力

## 📖 简介

Tavily MCP Server是一个基于FastAPI和FastMCP构建的智能搜索服务,集成了Tavily AI搜索引擎,为AI智能体提供高质量的网络搜索功能。支持综合搜索、答案生成和新闻搜索等多种搜索模式。

## ✨ 特性

- 🔍 **综合网络搜索** - 使用Tavily AI引擎进行全面的网络搜索
- 🤖 **智能答案生成** - 基于搜索结果生成直接答案
- 📰 **新闻搜索** - 专门的新闻内容搜索功能
- 🎯 **域名过滤** - 支持包含/排除特定域名
- 📅 **时间范围控制** - 可指定搜索的时间范围
- 🌍 **地区限制** - 支持按国家/地区进行搜索
- 📊 **多种输出格式** - 支持文本、JSON、Markdown格式输出
- 🔐 **API密钥验证** - 安全的API访问控制
- 📝 **完整日志记录** - 详细的操作日志

## 🚀 快速开始

### 安装方式1:直接安装

```bash
pip install tavily-mcp-server
```

### 安装方式2:通过uvx安装(推荐)

```bash
uvx tavily-mcp-server
```

使用uvx命令会自动下载并安装tavily-mcp-server包及其依赖,然后启动服务器。这是在Claude、Trae等平台上使用的推荐方式。

### 在其他平台集成

要在Claude、Trae等平台上配置MCP,可以使用以下配置:

```json
{
  "mcpServers": {
    "tavily-search": {
      "command": "uvx",
      "args": [
        "tavily-mcp-server"
      ],
      "env": {
        "TAVILY_API_KEY": "${TAVILY_API_KEY}",
        "MCP_API_KEY": "${MCP_API_KEY}",
        "LOG_LEVEL": "INFO"
      }
    }
  }
}
```

### 环境配置

创建 `.env` 文件并配置必要的环境变量:

```env
# Tavily API密钥 (必需)
TAVILY_API_KEY=your_tavily_api_key_here

# MCP API密钥 (必需)
MCP_API_KEY=your_mcp_api_key_here
```

### 启动服务

```bash
# 使用命令行工具启动
tavily-mcp

# 或者直接运行Python模块
python -m tavily_mcp_server.server
```

服务将在 `http://localhost:8083` 启动。

## 📚 API文档

启动服务后,可以访问以下地址查看API文档:

- **Swagger UI**: http://localhost:8083/docs
- **ReDoc**: http://localhost:8083/redoc

## 🔧 使用方法

### 1. 综合网络搜索

```python
import requests

response = requests.post(
    "http://localhost:8083/tavily_web_search",
    headers={"X-API-Key": "your_mcp_api_key"},
    json={
        "query": "人工智能最新发展",
        "max_results": 5,
        "search_depth": "advanced",
        "format_type": "markdown"
    }
)

result = response.json()
print(result["text"])
```

### 2. 智能答案搜索

```python
response = requests.post(
    "http://localhost:8083/tavily_answer_search",
    headers={"X-API-Key": "your_mcp_api_key"},
    json={
        "query": "什么是大语言模型?",
        "max_results": 3,
        "format_type": "text"
    }
)

result = response.json()
print(result["text"])
```

### 3. 新闻搜索

```python
response = requests.post(
    "http://localhost:8083/tavily_news_search",
    headers={"X-API-Key": "your_mcp_api_key"},
    json={
        "query": "科技新闻",
        "max_results": 10,
        "days": 7,
        "format_type": "json"
    }
)

result = response.json()
print(result["data"])
```

## 🛠️ 高级配置

### 域名过滤

```python
# 只搜索特定域名
response = requests.post(
    "http://localhost:8083/tavily_web_search",
    headers={"X-API-Key": "your_mcp_api_key"},
    json={
        "query": "Python教程",
        "include_domains": ["python.org", "docs.python.org"],
        "max_results": 5
    }
)

# 排除特定域名
response = requests.post(
    "http://localhost:8083/tavily_web_search",
    headers={"X-API-Key": "your_mcp_api_key"},
    json={
        "query": "编程学习",
        "exclude_domains": ["spam-site.com"],
        "max_results": 5
    }
)
```

### 地区和时间限制

```python
response = requests.post(
    "http://localhost:8083/tavily_web_search",
    headers={"X-API-Key": "your_mcp_api_key"},
    json={
        "query": "本地新闻",
        "country": "CN",
        "days": 30,
        "max_results": 10
    }
)
```

## 🔐 安全性

- 所有API端点都需要有效的API密钥验证
- 支持CORS配置,可根据需要调整
- 详细的错误处理和日志记录
- 输入参数验证和清理

## 🧪 开发

### 本地开发环境设置

```bash
# 克隆项目
git clone https://github.com/mcp-team/tavily-mcp-server.git
cd tavily-mcp-server

# 安装开发依赖
pip install -e ".[dev]"

# 运行测试
pytest

# 代码格式化
black .

# 类型检查
mypy tavily_mcp_server
```

## 📄 许可证

本项目采用 MIT 许可证。详见 [LICENSE](LICENSE) 文件。

## 🤝 贡献

欢迎提交Issue和Pull Request!

## 📞 支持

如有问题或建议,请通过以下方式联系:

- 提交 [GitHub Issue](https://github.com/mcp-team/tavily-mcp-server/issues)
- 发送邮件至 support@mcp.dev

## 🔗 相关链接

- [Tavily API文档](https://docs.tavily.com/)
- [FastMCP文档](https://github.com/jlowin/fastmcp)
- [FastAPI文档](https://fastapi.tiangolo.com/)

---

**让AI智能体拥有强大的搜索能力!** 🚀

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/mcp-team/tavily-mcp-server",
    "name": "tavily-mcp-server",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": null,
    "keywords": "tavily, search, mcp, ai, agent, fastapi, web-search",
    "author": "MCP Team",
    "author_email": "MCP Team <support@mcp.dev>",
    "download_url": "https://files.pythonhosted.org/packages/62/7f/bf293cda98ad5c06f0fc4f5ad302c239e7267dd0858aca7ea6de303779d0/tavily_mcp_server-1.1.2.tar.gz",
    "platform": null,
    "description": "# Tavily MCP Server\r\n\r\n\ud83d\ude80 **Tavily\u641c\u7d22MCP\u670d\u52a1\u667a\u80fd\u4f53** - \u4e3aAI\u667a\u80fd\u4f53\u63d0\u4f9b\u5f3a\u5927\u7684\u7f51\u7edc\u641c\u7d22\u80fd\u529b\r\n\r\n## \ud83d\udcd6 \u7b80\u4ecb\r\n\r\nTavily MCP Server\u662f\u4e00\u4e2a\u57fa\u4e8eFastAPI\u548cFastMCP\u6784\u5efa\u7684\u667a\u80fd\u641c\u7d22\u670d\u52a1\uff0c\u96c6\u6210\u4e86Tavily AI\u641c\u7d22\u5f15\u64ce\uff0c\u4e3aAI\u667a\u80fd\u4f53\u63d0\u4f9b\u9ad8\u8d28\u91cf\u7684\u7f51\u7edc\u641c\u7d22\u529f\u80fd\u3002\u652f\u6301\u7efc\u5408\u641c\u7d22\u3001\u7b54\u6848\u751f\u6210\u548c\u65b0\u95fb\u641c\u7d22\u7b49\u591a\u79cd\u641c\u7d22\u6a21\u5f0f\u3002\r\n\r\n## \u2728 \u7279\u6027\r\n\r\n- \ud83d\udd0d **\u7efc\u5408\u7f51\u7edc\u641c\u7d22** - \u4f7f\u7528Tavily AI\u5f15\u64ce\u8fdb\u884c\u5168\u9762\u7684\u7f51\u7edc\u641c\u7d22\r\n- \ud83e\udd16 **\u667a\u80fd\u7b54\u6848\u751f\u6210** - \u57fa\u4e8e\u641c\u7d22\u7ed3\u679c\u751f\u6210\u76f4\u63a5\u7b54\u6848\r\n- \ud83d\udcf0 **\u65b0\u95fb\u641c\u7d22** - \u4e13\u95e8\u7684\u65b0\u95fb\u5185\u5bb9\u641c\u7d22\u529f\u80fd\r\n- \ud83c\udfaf **\u57df\u540d\u8fc7\u6ee4** - \u652f\u6301\u5305\u542b/\u6392\u9664\u7279\u5b9a\u57df\u540d\r\n- \ud83d\udcc5 **\u65f6\u95f4\u8303\u56f4\u63a7\u5236** - \u53ef\u6307\u5b9a\u641c\u7d22\u7684\u65f6\u95f4\u8303\u56f4\r\n- \ud83c\udf0d **\u5730\u533a\u9650\u5236** - \u652f\u6301\u6309\u56fd\u5bb6/\u5730\u533a\u8fdb\u884c\u641c\u7d22\r\n- \ud83d\udcca **\u591a\u79cd\u8f93\u51fa\u683c\u5f0f** - \u652f\u6301\u6587\u672c\u3001JSON\u3001Markdown\u683c\u5f0f\u8f93\u51fa\r\n- \ud83d\udd10 **API\u5bc6\u94a5\u9a8c\u8bc1** - \u5b89\u5168\u7684API\u8bbf\u95ee\u63a7\u5236\r\n- \ud83d\udcdd **\u5b8c\u6574\u65e5\u5fd7\u8bb0\u5f55** - \u8be6\u7ec6\u7684\u64cd\u4f5c\u65e5\u5fd7\r\n\r\n## \ud83d\ude80 \u5feb\u901f\u5f00\u59cb\r\n\r\n### \u5b89\u88c5\u65b9\u5f0f1\uff1a\u76f4\u63a5\u5b89\u88c5\r\n\r\n```bash\r\npip install tavily-mcp-server\r\n```\r\n\r\n### \u5b89\u88c5\u65b9\u5f0f2\uff1a\u901a\u8fc7uvx\u5b89\u88c5\uff08\u63a8\u8350\uff09\r\n\r\n```bash\r\nuvx tavily-mcp-server\r\n```\r\n\r\n\u4f7f\u7528uvx\u547d\u4ee4\u4f1a\u81ea\u52a8\u4e0b\u8f7d\u5e76\u5b89\u88c5tavily-mcp-server\u5305\u53ca\u5176\u4f9d\u8d56\uff0c\u7136\u540e\u542f\u52a8\u670d\u52a1\u5668\u3002\u8fd9\u662f\u5728Claude\u3001Trae\u7b49\u5e73\u53f0\u4e0a\u4f7f\u7528\u7684\u63a8\u8350\u65b9\u5f0f\u3002\r\n\r\n### \u5728\u5176\u4ed6\u5e73\u53f0\u96c6\u6210\r\n\r\n\u8981\u5728Claude\u3001Trae\u7b49\u5e73\u53f0\u4e0a\u914d\u7f6eMCP\uff0c\u53ef\u4ee5\u4f7f\u7528\u4ee5\u4e0b\u914d\u7f6e\uff1a\r\n\r\n```json\r\n{\r\n  \"mcpServers\": {\r\n    \"tavily-search\": {\r\n      \"command\": \"uvx\",\r\n      \"args\": [\r\n        \"tavily-mcp-server\"\r\n      ],\r\n      \"env\": {\r\n        \"TAVILY_API_KEY\": \"${TAVILY_API_KEY}\",\r\n        \"MCP_API_KEY\": \"${MCP_API_KEY}\",\r\n        \"LOG_LEVEL\": \"INFO\"\r\n      }\r\n    }\r\n  }\r\n}\r\n```\r\n\r\n### \u73af\u5883\u914d\u7f6e\r\n\r\n\u521b\u5efa `.env` \u6587\u4ef6\u5e76\u914d\u7f6e\u5fc5\u8981\u7684\u73af\u5883\u53d8\u91cf\uff1a\r\n\r\n```env\r\n# Tavily API\u5bc6\u94a5 (\u5fc5\u9700)\r\nTAVILY_API_KEY=your_tavily_api_key_here\r\n\r\n# MCP API\u5bc6\u94a5 (\u5fc5\u9700)\r\nMCP_API_KEY=your_mcp_api_key_here\r\n```\r\n\r\n### \u542f\u52a8\u670d\u52a1\r\n\r\n```bash\r\n# \u4f7f\u7528\u547d\u4ee4\u884c\u5de5\u5177\u542f\u52a8\r\ntavily-mcp\r\n\r\n# \u6216\u8005\u76f4\u63a5\u8fd0\u884cPython\u6a21\u5757\r\npython -m tavily_mcp_server.server\r\n```\r\n\r\n\u670d\u52a1\u5c06\u5728 `http://localhost:8083` \u542f\u52a8\u3002\r\n\r\n## \ud83d\udcda API\u6587\u6863\r\n\r\n\u542f\u52a8\u670d\u52a1\u540e\uff0c\u53ef\u4ee5\u8bbf\u95ee\u4ee5\u4e0b\u5730\u5740\u67e5\u770bAPI\u6587\u6863\uff1a\r\n\r\n- **Swagger UI**: http://localhost:8083/docs\r\n- **ReDoc**: http://localhost:8083/redoc\r\n\r\n## \ud83d\udd27 \u4f7f\u7528\u65b9\u6cd5\r\n\r\n### 1. \u7efc\u5408\u7f51\u7edc\u641c\u7d22\r\n\r\n```python\r\nimport requests\r\n\r\nresponse = requests.post(\r\n    \"http://localhost:8083/tavily_web_search\",\r\n    headers={\"X-API-Key\": \"your_mcp_api_key\"},\r\n    json={\r\n        \"query\": \"\u4eba\u5de5\u667a\u80fd\u6700\u65b0\u53d1\u5c55\",\r\n        \"max_results\": 5,\r\n        \"search_depth\": \"advanced\",\r\n        \"format_type\": \"markdown\"\r\n    }\r\n)\r\n\r\nresult = response.json()\r\nprint(result[\"text\"])\r\n```\r\n\r\n### 2. \u667a\u80fd\u7b54\u6848\u641c\u7d22\r\n\r\n```python\r\nresponse = requests.post(\r\n    \"http://localhost:8083/tavily_answer_search\",\r\n    headers={\"X-API-Key\": \"your_mcp_api_key\"},\r\n    json={\r\n        \"query\": \"\u4ec0\u4e48\u662f\u5927\u8bed\u8a00\u6a21\u578b\uff1f\",\r\n        \"max_results\": 3,\r\n        \"format_type\": \"text\"\r\n    }\r\n)\r\n\r\nresult = response.json()\r\nprint(result[\"text\"])\r\n```\r\n\r\n### 3. \u65b0\u95fb\u641c\u7d22\r\n\r\n```python\r\nresponse = requests.post(\r\n    \"http://localhost:8083/tavily_news_search\",\r\n    headers={\"X-API-Key\": \"your_mcp_api_key\"},\r\n    json={\r\n        \"query\": \"\u79d1\u6280\u65b0\u95fb\",\r\n        \"max_results\": 10,\r\n        \"days\": 7,\r\n        \"format_type\": \"json\"\r\n    }\r\n)\r\n\r\nresult = response.json()\r\nprint(result[\"data\"])\r\n```\r\n\r\n## \ud83d\udee0\ufe0f \u9ad8\u7ea7\u914d\u7f6e\r\n\r\n### \u57df\u540d\u8fc7\u6ee4\r\n\r\n```python\r\n# \u53ea\u641c\u7d22\u7279\u5b9a\u57df\u540d\r\nresponse = requests.post(\r\n    \"http://localhost:8083/tavily_web_search\",\r\n    headers={\"X-API-Key\": \"your_mcp_api_key\"},\r\n    json={\r\n        \"query\": \"Python\u6559\u7a0b\",\r\n        \"include_domains\": [\"python.org\", \"docs.python.org\"],\r\n        \"max_results\": 5\r\n    }\r\n)\r\n\r\n# \u6392\u9664\u7279\u5b9a\u57df\u540d\r\nresponse = requests.post(\r\n    \"http://localhost:8083/tavily_web_search\",\r\n    headers={\"X-API-Key\": \"your_mcp_api_key\"},\r\n    json={\r\n        \"query\": \"\u7f16\u7a0b\u5b66\u4e60\",\r\n        \"exclude_domains\": [\"spam-site.com\"],\r\n        \"max_results\": 5\r\n    }\r\n)\r\n```\r\n\r\n### \u5730\u533a\u548c\u65f6\u95f4\u9650\u5236\r\n\r\n```python\r\nresponse = requests.post(\r\n    \"http://localhost:8083/tavily_web_search\",\r\n    headers={\"X-API-Key\": \"your_mcp_api_key\"},\r\n    json={\r\n        \"query\": \"\u672c\u5730\u65b0\u95fb\",\r\n        \"country\": \"CN\",\r\n        \"days\": 30,\r\n        \"max_results\": 10\r\n    }\r\n)\r\n```\r\n\r\n## \ud83d\udd10 \u5b89\u5168\u6027\r\n\r\n- \u6240\u6709API\u7aef\u70b9\u90fd\u9700\u8981\u6709\u6548\u7684API\u5bc6\u94a5\u9a8c\u8bc1\r\n- \u652f\u6301CORS\u914d\u7f6e\uff0c\u53ef\u6839\u636e\u9700\u8981\u8c03\u6574\r\n- \u8be6\u7ec6\u7684\u9519\u8bef\u5904\u7406\u548c\u65e5\u5fd7\u8bb0\u5f55\r\n- \u8f93\u5165\u53c2\u6570\u9a8c\u8bc1\u548c\u6e05\u7406\r\n\r\n## \ud83e\uddea \u5f00\u53d1\r\n\r\n### \u672c\u5730\u5f00\u53d1\u73af\u5883\u8bbe\u7f6e\r\n\r\n```bash\r\n# \u514b\u9686\u9879\u76ee\r\ngit clone https://github.com/mcp-team/tavily-mcp-server.git\r\ncd tavily-mcp-server\r\n\r\n# \u5b89\u88c5\u5f00\u53d1\u4f9d\u8d56\r\npip install -e \".[dev]\"\r\n\r\n# \u8fd0\u884c\u6d4b\u8bd5\r\npytest\r\n\r\n# \u4ee3\u7801\u683c\u5f0f\u5316\r\nblack .\r\n\r\n# \u7c7b\u578b\u68c0\u67e5\r\nmypy tavily_mcp_server\r\n```\r\n\r\n## \ud83d\udcc4 \u8bb8\u53ef\u8bc1\r\n\r\n\u672c\u9879\u76ee\u91c7\u7528 MIT \u8bb8\u53ef\u8bc1\u3002\u8be6\u89c1 [LICENSE](LICENSE) \u6587\u4ef6\u3002\r\n\r\n## \ud83e\udd1d \u8d21\u732e\r\n\r\n\u6b22\u8fce\u63d0\u4ea4Issue\u548cPull Request\uff01\r\n\r\n## \ud83d\udcde \u652f\u6301\r\n\r\n\u5982\u6709\u95ee\u9898\u6216\u5efa\u8bae\uff0c\u8bf7\u901a\u8fc7\u4ee5\u4e0b\u65b9\u5f0f\u8054\u7cfb\uff1a\r\n\r\n- \u63d0\u4ea4 [GitHub Issue](https://github.com/mcp-team/tavily-mcp-server/issues)\r\n- \u53d1\u9001\u90ae\u4ef6\u81f3 support@mcp.dev\r\n\r\n## \ud83d\udd17 \u76f8\u5173\u94fe\u63a5\r\n\r\n- [Tavily API\u6587\u6863](https://docs.tavily.com/)\r\n- [FastMCP\u6587\u6863](https://github.com/jlowin/fastmcp)\r\n- [FastAPI\u6587\u6863](https://fastapi.tiangolo.com/)\r\n\r\n---\r\n\r\n**\u8ba9AI\u667a\u80fd\u4f53\u62e5\u6709\u5f3a\u5927\u7684\u641c\u7d22\u80fd\u529b\uff01** \ud83d\ude80\r\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Tavily\u641c\u7d22MCP\u670d\u52a1\u667a\u80fd\u4f53 - \u4e3aAI\u667a\u80fd\u4f53\u63d0\u4f9b\u5f3a\u5927\u7684\u7f51\u7edc\u641c\u7d22\u80fd\u529b",
    "version": "1.1.2",
    "project_urls": {
        "Bug Tracker": "https://github.com/mcp-team/tavily-mcp-server/issues",
        "Documentation": "https://github.com/mcp-team/tavily-mcp-server#readme",
        "Homepage": "https://github.com/mcp-team/tavily-mcp-server",
        "Repository": "https://github.com/mcp-team/tavily-mcp-server"
    },
    "split_keywords": [
        "tavily",
        " search",
        " mcp",
        " ai",
        " agent",
        " fastapi",
        " web-search"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "e47b63af186bd753d9aad4b735ad5d3f1382ec5362b3809b127ac9f2fbd04743",
                "md5": "27e8309f3a73279e94c175dd726836a2",
                "sha256": "e4b3245e9ecd30eb28a12d87878607fa1ff1decddf1c5cb57468fac2904a7c4d"
            },
            "downloads": -1,
            "filename": "tavily_mcp_server-1.1.2-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "27e8309f3a73279e94c175dd726836a2",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 8658,
            "upload_time": "2025-08-13T05:34:42",
            "upload_time_iso_8601": "2025-08-13T05:34:42.739144Z",
            "url": "https://files.pythonhosted.org/packages/e4/7b/63af186bd753d9aad4b735ad5d3f1382ec5362b3809b127ac9f2fbd04743/tavily_mcp_server-1.1.2-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "627fbf293cda98ad5c06f0fc4f5ad302c239e7267dd0858aca7ea6de303779d0",
                "md5": "057b64cbb68a7cb39f8f9b9aa6b66414",
                "sha256": "9d0347b815d3666f5055c35f8852dbd6cda8c2967d2322b61dba40c62ea5e001"
            },
            "downloads": -1,
            "filename": "tavily_mcp_server-1.1.2.tar.gz",
            "has_sig": false,
            "md5_digest": "057b64cbb68a7cb39f8f9b9aa6b66414",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 11766,
            "upload_time": "2025-08-13T05:34:44",
            "upload_time_iso_8601": "2025-08-13T05:34:44.306902Z",
            "url": "https://files.pythonhosted.org/packages/62/7f/bf293cda98ad5c06f0fc4f5ad302c239e7267dd0858aca7ea6de303779d0/tavily_mcp_server-1.1.2.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-08-13 05:34:44",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "mcp-team",
    "github_project": "tavily-mcp-server",
    "github_not_found": true,
    "lcname": "tavily-mcp-server"
}
        
Elapsed time: 2.01957s