Skip to main content
Glama
La0bALanG

tavily_mcp_server_for_all_tools

by La0bALanG

Tavily Web Search MCP Server

Ein MCP-Dienst für Websuche, entwickelt auf Basis des offiziellen Tavily Python SDK, implementiert mit dem standardmäßigen MCP Python SDK, unter Verwendung des Streamable HTTP-Übertragungsprotokolls, bereitgestellt über FastAPI + uvicorn.

Funktionen

Der Dienst bietet 8 MCP-Tools, die die Hauptfunktionen des offiziellen Tavily SDK abdecken:

Toolname

Beschreibung

Zugrunde liegende Tavily-Schnittstelle

web_search

Führt eine Websuche basierend auf dem Suchbegriff durch, gibt Titel, Links, Zusammenfassungen, Relevanzwerte zurück und kann optional eine zusammenfassende Antwort generieren.

search

web_fetch

Ruft die Webseite einer bestimmten URL ab und gibt deren Textinhalt (Markdown/Text) zurück.

extract

web_crawl

Durchläuft die gesamte Website ausgehend von der Root-URL, ruft mehrere Seiteninhalte in großen Mengen ab, geeignet für die systematische Sammlung von Inhalten einer Website.

crawl

web_map

Durchläuft die Website-Struktur, entdeckt nur Seiten-URLs ohne Inhalte, geeignet, um zuerst den Umfang der Website zu erfassen.

map

qna_search

Gibt für eine konkrete Frage direkt eine einzeilige Antwort zurück.

qna_search

search_context

Gibt komprimierten Suchkontext zurück, der direkt an LLM-/RAG-Prozesse gefüttert werden kann (automatische Token-Limits und Kürzung).

get_search_context

deep_research_start

Reicht eine Deep-Research-Aufgabe ein (Tavily führt automatisch mehrere Suchrunden durch und generiert einen umfassenden Bericht). Die Aufgabe wird asynchron ausgeführt und gibt sofort request_id zurück.

research

deep_research_result

Fragt den Status und das Endergebnis der Deep-Research-Aufgabe anhand der request_id ab (Berichtstext + Quellenangaben).

get_research

Die Forschungsaufgaben, die deep_research_start / deep_research_result entsprechen, werden asynchron auf dem Tavily-Server ausgeführt und können mehrere Minuten dauern. Rufen Sie zuerst deep_research_start auf, um die request_id zu erhalten, und verwenden Sie dann deep_research_result, um abzufragen, bis der status completed (oder failed) ist.

Related MCP server: tavily-pool-mcp

Verzeichnisstruktur

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

Umgebungsanforderungen

  • Python 3.12 (lokal über die Conda-Umgebung llm_factory_envs entwickelt, auf dem Remote-Server wird llm_env verwendet)

  • Tavily API Key (unter app.tavily.com beantragen)

Lokale Entwicklung und Tests

1. Umgebungsvariablen vorbereiten

cp .env.example .env
# 编辑 .env,填入 TAVILY_API_KEY;本地测试保持 MCP_HOST=127.0.0.1

2. Abhängigkeiten installieren (Conda-Umgebung llm_factory_envs)

conda activate llm_factory_envs
pip install -r requirements.txt

3. MCP-Dienst starten

python -m app.main
# 服务启动后监听 http://127.0.0.1:20260/mcp
# 健康检查: curl http://127.0.0.1:20260/health

4. Mit Testclient verifizieren

Öffnen Sie ein weiteres Terminal:

conda activate llm_factory_envs
python -m client.test_client --url http://127.0.0.1:20260/mcp

Der Testclient führt nacheinander aus: Verbindung zum Dienst herstellen → verfügbare Tools auflisten → web_search / web_fetch / web_crawl / web_map / qna_search / search_context aufrufen und die Ergebnisse ausgeben.

Deep-Research-Aufgaben dauern länger (möglicherweise mehrere Minuten) und werden standardmäßig nicht getestet. Um auch deep_research_start / deep_research_result zu verifizieren:

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 "近期国产大模型有哪些重要发布"

In diesem Modus wird nach dem Einreichen der Aufgabe alle 10 Sekunden deep_research_result abgefragt, bis der Status completed / failed ist.

Bereitstellung auf dem Remote-Server

Remote-Server-Informationen: 101.47.67.15, Bereitstellung über SSH (passwortloses Login bereits konfiguriert), Verwendung der Remote-Conda-Umgebung llm_env, Dienstport fest auf 20260.

1. Remote-.env konfigurieren

In der lokalen .env MCP_HOST auf 0.0.0.0 ändern (für öffentliche Netzwerke), MCP_PORT auf 20260 belassen. Das Bereitstellungsskript synchronisiert die .env automatisch per scp (falls remote und lokal unterschiedliche Keys verwendet werden sollen, kann /opt/tavily-mcp-server/.env direkt auf dem Remote-Server manuell gepflegt werden).

2. Ein-Klick-Bereitstellung

bash deploy/deploy.sh

Das Skript führt Folgendes aus:

  1. rsync der Projektdateien nach root@101.47.67.15:/opt/tavily-mcp-server (unter Ausschluss von .git, __pycache__ usw.)

  2. Synchronisierung der .env (falls lokal vorhanden)

  3. Installation der Abhängigkeiten in der Remote-Umgebung llm_env

  4. Installation/Aktualisierung des systemd-Dienstes und Neustart

3. Server-Firewall / Sicherheitsgruppe

Bitte stellen Sie sicher, dass die Sicherheitsgruppenregeln in der Cloud-Konsole den TCP-Port 20260 freigeben (deploy.sh ändert die Cloud-Sicherheitsgruppe nicht automatisch; dies muss manuell in der Konsole des Anbieters erfolgen). Falls auf dem Server firewalld/ufw aktiviert ist, muss der Port ebenfalls freigegeben werden, z. B.:

# firewalld
ssh root@101.47.67.15 "firewall-cmd --permanent --add-port=20260/tcp && firewall-cmd --reload"

4. Remote-Bereitstellung verifizieren

curl http://101.47.67.15:20260/health
python -m client.test_client --url http://101.47.67.15:20260/mcp

Häufige Betriebsbefehle

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-Client-Konfiguration

Nach der Bereitstellung kann der Dienst in jedem MCP-Client, der Streamable HTTP unterstützt, über die folgende JSON-Konfiguration eingebunden werden:

{
  "mcpServers": {
    "tavily-web-search": {
      "type": "streamable_http",
      "url": "http://101.47.67.15:20260/mcp"
    }
  }
}

Für lokale Tests ersetzen Sie url durch http://127.0.0.1:20260/mcp.

Erläuterung der Umgebungsvariablen

Variablenname

Beschreibung

Standardwert

TAVILY_API_KEY

Offizieller Tavily API Key (erforderlich)

Keiner

MCP_HOST

Adresse, auf der der Dienst lauscht

127.0.0.1 (bei Serverbereitstellung auf 0.0.0.0 ändern)

MCP_PORT

Port, auf dem der Dienst lauscht

20260

MCP_SERVER_NAME

Name des MCP-Servers

tavily-web-search

MCP_STREAMABLE_PATH

Mount-Pfad für Streamable HTTP

/mcp

MCP_STATELESS_HTTP

Ob der zustandslose HTTP-Modus verwendet wird

false

MCP_JSON_RESPONSE

Ob JSON-Antworten erzwungen werden (statt SSE-Stream)

false

TAVILY_REQUEST_TIMEOUT

Timeout (Sekunden) für Aufrufe von Tavily search/extract/qna/context/research usw.

30

TAVILY_CRAWL_TIMEOUT

Timeout (Sekunden) für Aufrufe von Tavily crawl/map, da Site-Traversierung länger dauert

150

LOG_LEVEL

Protokollierungsstufe

INFO

Sicherheitshinweise

  • Die .env-Datei ist in .gitignore ausgeschlossen; niemals in ein GitHub-Repository committen.

  • Keine Schlüssel im Code hartkodieren; alle sensiblen Informationen werden über Umgebungsvariablen injiziert (dynamisch geladen mit python-dotenv).

  • Vor dem Committen von Code erneut prüfen, dass git status keine .env oder andere Dateien mit Schlüsseln enthält.

Related MCP Connectors

Related MCP Servers

  • F
    license
    A
    quality
    D
    maintenance
    Enables 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
    -
  • A
    license
    B
    quality
    D
    maintenance
    A local MCP server that exposes Tavily search as a tool and rotates across multiple API keys for reliability.
    1
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    MCP server for web page fetching (converting to Markdown/text with automatic fallback between Tavily and Firecrawl) and web search via Tavily.
    2
    MIT