基于Cloudflare Workers的Tavily Search MCP(模型上下文协议)服务器
</div>Tavily Streamable HTTP MCP Server 是一个实现了模型上下文协议规范的网络搜索服务器,并构建在Cloudflare Workers平台上。它提供了高性能的网络搜索和内容提取能力,支持与LobeChat、Cherry Studio、Claude Desktop等AI客户端无缝集成。
准备
# 获取Tavily API密钥
# 访问 https://tavily.com 注册并获取API Key
创建Worker
Workers & Pages创建应用 → 创建Workertavily-mcp-server)部署代码
worker.js 代码复制到在线编辑器保存并部署配置环境变量
设置 → 变量TAVILY_API_KEY环境准备
# 安装Wrangler CLI
npm install -g wrangler
# 登录Cloudflare
wrangler login
项目初始化
# 克隆仓库
git clone <repository-url>
cd tavily-mcp-server
# 配置环境变量
wrangler secret put TAVILY_API_KEY
部署服务
wrangler deploy
| 端点 | 方法 | 描述 |
|---|---|---|
/ | GET | 服务信息页面 |
/health | GET | 健康检查端点 |
/mcp | POST | MCP协议通信端点 |
获取当前日期和时间信息
参数
{
"timezone": "Asia/Shanghai", // 可选,时区,默认 UTC
"format": "chinese" // 可选,格式:iso/chinese/us/timestamp,默认 iso
}
支持的时间区域示例:
UTC -协调世界时Asia/Shanghai -北京时间America/New_York -纽约时间Europe/London -伦敦时间支持的格式:
iso -ISO 8601格式(默认)chinese -中文格式us -美式英语格式timestamp -Unix时间戳执行网络搜索操作
参数
{
"query": "搜索查询内容", // 必需
"max_results": 5, // 可选,默认 5
"search_depth": "basic", // 可选,basic/advanced
"include_domains": ["域名"], // 可选
"exclude_domains": ["域名"] // 可选
}
从指定URL中提取内容
参数
{
"urls": ["https://example.com"] // 必需,URL数组
}
在LobeChat中添加MCP服务器:
{
"name": "tavily-search",
"transport": "streamable-http",
"url": "https://your-worker.workers.dev/mcp",
"description": "Tavily网络搜索服务 & 查询真实世界的当前时间"
}
在claude_desktop_config.json中添加:
{
"mcpServers": {
"tavily": {
"transport": "http",
"url": "https://your-worker.workers.dev/mcp"
}
}
}
curl https://your-worker.workers.dev/health
# 测试时间查询功能
curl -X POST https://your-worker.workers.dev/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_current_time",
"arguments": {
"timezone": "Asia/Shanghai",
"format": "chinese"
}
}
}'
# 测试搜索功能
curl -X POST https://your-worker.workers.dev/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "tavily_search",
"arguments": {
"query": "人工智能最新发展"
}
}
}'
修改 worker.js 中的默认参数:
const DEFAULT_CONFIG = {
max_results: 10, // 增加默认结果数量
search_depth: 'advanced', // 使用高级搜索
include_answer: true // 包含AI摘要
};
默认情况下没有设置访问控制。你可以自行添加API密钥验证:
const authHeader = request.headers.get('Authorization');
if (authHeader !== 'Bearer your-secret-key') {
return new Response('未经授权', { status: 401 });
}
在Cloudflare仪表板中查看实时日志:
日志 标签请参阅 Tavily 官方定价 了解API使用的成本。 通常,Tavily的免费账户每月限制1000次API调用,同一账户下的多个API密钥共享1000次API调用限制。
问题:环境变量未设置
错误:TAVILY_API_KEY环境变量未设置
解决:检查Cloudflare仪表板中的环境变量配置
问题:搜索返回错误
错误:API请求失败
解决:验证API密钥有效性和配额余额
问题:客户端连接失败
错误:无法连接到MCP服务器
解决:确认URL正确性和协议设置
查看实时日志
wrangler tail your-worker-name
本地测试
wrangler dev
验证环境变量
wrangler secret list
我们欢迎社区贡献!请遵循以下步骤:
git checkout -b feature/AmazingFeaturegit commit -m '添加一些AmazingFeature'git push origin feature/AmazingFeature本项目在MIT许可证下开源。详见 LICENSE 文档。