搜索工具服务器

一个轻量级的FastAPI服务器,将Tavily搜索API作为标准化的模型上下文协议(MCP)工具公开,允许远程AI代理进行网络搜索而无需持有API凭证。

  • by danielecelsa
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 danielecelsa/tavily-mcp-server

使用说明

MCP工具服务器(Tavily搜索)🔧

这 服务器端组件 解耦研究代理架构。这个轻量级的FastAPI服务器将Tavily Search API公开为标准化的 模型上下文协议(MCP) 工具,允许远程人工智能代理在不持有API证书的情况下执行网络搜索。

注: 此服务器旨在与 Tavily 客户端它们共同展示了Agent AI的安全、解耦的微服务架构。


🚀 主要特点

1.符合MCP的工具曝光

实施 模型上下文协议 标准使用 FastMCP,允许任何兼容MCP的客户端发现和调用 web_search 工具动态。

2.安全凭证隔离

Tavily API密钥已存储 仅在服务器上客户端代理永远不会看到或处理敏感凭据,模拟企业级的关注点分离。

3.结构化响应格式

这 web_search 工具返回一个干净的JSON有效负载,其中包含:

  • answer: Tavily人工智能的预生成摘要。
  • results: 包含以下内容的源对象列表 title, url,以及 content (为了提高令牌效率,截断为2000个字符)。

4.无状态HTTP传输

使用 streamable_http 传输(流式HTTP),支持在Render、Railway或Hugging Face Spaces等无服务器平台上进行部署,而不会出现粘滞会话。


🛠️ 建筑

graph TD
    subgraph "MCP Server (This Repo)"
        FastAPI[FastAPI App] --> MCP[FastMCP Session Manager]
        MCP --> Tool["web_search() Tool"]
        Tool --> Tavily((Tavily API))
    end

    subgraph "External Clients"
        Client1[LangGraph Agent] -- "Streamable HTTP (JSON-RPC)" --> FastAPI
        Client2[Claude Desktop] -- "Streamable HTTP (JSON-RPC)" --> FastAPI
        Client3[Any MCP Client] -- "Streamable HTTP (JSON-RPC)" --> FastAPI
    end

🔧 技术栈

  • 框架: FastAPI+Uvicorn
  • MCP-SDK: mcp (Python SDK FastMCP 包装)
  • 搜索引擎: Tavily Python客户端
  • 运输: 可流式传输的HTTP

⚙️ 工具规格

web_search(query: str) -> str

参数 类型 说明
query str 要执行的搜索查询

退货: 具有以下结构的JSON字符串:

{
  "answer": "A concise AI-generated summary of the search results.",
  "query": "The original query",
  "results": [
    {
      "title": "Page Title",
      "url": "https://source-url.com",
      "content": "Truncated page content (max 2000 chars)..."
    }
  ]
}

📦 安装和设置

先决条件

1.克隆存储库

git clone https://github.com/danielecelsa/chatbot-with-search.git
cd chatbot-with-search/tavily-server

2.安装依赖项

pip install -r requirements.txt

3.配置环境

创建 .env 此目录中的文件:

TAVILY_API_KEY=your_tavily_api_key

4.运行服务器

uvicorn server:app --host 0.0.0.0 --port 8000

MCP端点将在以下位置可用:

http://localhost:8000/tav/mcp

注意:服务器在端口上运行 8000 (见 Dockerfile).港口 7860 仅在部署到拥抱面部空间时使用。


🐳 Docker 部署

docker build -t mcp-tavily-server .
docker run -p 8000:8000 -e TAVILY_API_KEY=your_key mcp-tavily-server

🧪 测试端点

您可以使用任何兼容MCP的客户端测试MCP端点,也可以手动使用 curl:

# Health check (FastAPI)
curl http://localhost:8000/

# For MCP tool discovery, use an MCP client library

🔗 相关组件

组件 描述 链接
Tavily 客户端 使用此服务器的基于LangGraph的AI代理 查看客户端
现场演示 完整系统的已部署版本 启动应用程序

Developed by Daniele Celsa
View Portfolio • LinkedIn