Cloudflare Tavily Search MCP
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Cloudflare Tavily Search MCPsearch for latest AI news"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Cloudflare Tavily Search MCP
一个部署在 Cloudflare Workers 上的远程网页搜索 MCP 服务。它把 Tavily 的低成本搜索包装成 web_search 工具,适合手机 AI 客户端、桌面 AI 客户端或其他支持远程 MCP 的应用。
项目默认面向个人使用:Cloudflare Workers 固定成本可以为 0,Tavily 免费方案每月提供 1,000 credits,基础搜索每次消耗 1 credit。
特性
使用当前 MCP TypeScript SDK v2 和 Streamable HTTP
自动兼容 SDK 提供的 2025-era stateless 客户端
Tavily 搜索深度强制为
basic,避免意外使用双倍额度Bearer Token 鉴权,Tavily API Key 不会暴露给手机客户端
严格 Origin 校验和 MCP CORS 响应头
Cloudflare Cache API 缓存重复查询
可选 Workers KV 月度搜索上限
Tavily 超时、密钥错误、额度限制和服务异常的安全提示
完整单元测试与真实 MCP 客户端集成测试
Related MCP server: Tavily Web Search MCP Server
架构
手机 AI / MCP 客户端
│ HTTPS + Bearer Token
▼
Cloudflare Worker /mcp
├─ Origin 与鉴权
├─ Cache API
├─ 可选 KV 月度额度
└─ Tavily Search API (basic)服务是无状态的,不使用 Durable Objects。每个 MCP HTTP 请求创建一个临时 server 实例,因此可以直接在 Workers 上横向扩展。
环境要求
Node.js 22 或更高版本
npm
Cloudflare 免费账号
Tavily API Key:Tavily 控制台
本地运行
cd ~/Desktop/cloudflare-tavily-search-mcp
npm install
cp .dev.vars.example .dev.vars编辑 .dev.vars:
TAVILY_API_KEY="tvly-your-api-key"
MCP_API_TOKEN="replace-with-a-long-random-token"可以用下面的命令生成访问令牌:
openssl rand -hex 32启动本地 Worker:
npm run dev检查健康状态:
curl http://127.0.0.1:8787/health部署到 Cloudflare
首次使用 Wrangler 时登录:
npx wrangler login保存两个生产 secrets:
npx wrangler secret put TAVILY_API_KEY
npx wrangler secret put MCP_API_TOKEN部署:
npm run deploy部署完成后 MCP 地址类似:
https://tavily-search-mcp.<你的子域>.workers.dev/mcp手机 AI 客户端配置
客户端需要支持 MCP Streamable HTTP,并且能够设置请求头。
通用配置示例:
{
"url": "https://tavily-search-mcp.example.workers.dev/mcp",
"headers": {
"Authorization": "Bearer 你设置的 MCP_API_TOKEN"
}
}如果客户端只支持旧版 HTTP+SSE /sse,当前项目不会伪装成兼容:该端点会返回 HTTP 410,并提示改用 /mcp。这类客户端需要升级,或额外增加基于 Durable Objects 的旧版适配层。
MCP 工具
web_search
参数:
参数 | 类型 | 必填 | 说明 |
| string | 是 | 搜索词,2~500 字符 |
| number | 否 | 返回数量,最终不超过服务器的 |
|
| 否 | 默认 |
|
| 否 | 时间范围 |
| string[] | 否 | 优先搜索的域名,最多 10 个 |
| string[] | 否 | 排除的域名,最多 10 个 |
服务器固定发送:
{
"search_depth": "basic",
"include_answer": false,
"include_raw_content": false,
"include_images": false
}这样每次缓存未命中的正常搜索只消耗 1 Tavily credit。
配置项
名称 | 默认值 | 说明 |
| 无 | 必填,使用 Worker secret |
| 无 | 必填,至少 16 字符,使用 Worker secret |
| 空 | 逗号分隔的浏览器 Origin;原生客户端不发送 Origin 时可以留空 |
|
| 每次最多结果数,范围 1~10 |
|
| 搜索缓存秒数,设为 0 禁用 |
|
| KV 月度上限;设为 0 表示无限制 |
|
| Tavily 请求超时,范围 1000~30000 |
生产环境普通变量可以直接修改 wrangler.jsonc。密钥不要写进该文件或提交到 Git。
浏览器客户端的 Origin
原生手机应用和服务端 MCP 客户端通常不发送 Origin,默认即可使用。浏览器或 WebView 客户端发送 Origin 时,必须精确加入:
"ALLOWED_ORIGINS": "https://your-client.example,https://another.example"只有明确知道风险时才配置 *。
可选:启用 KV 月度额度保护
没有 USAGE_KV 绑定时,服务仍能正常搜索,但 MAX_MONTHLY_SEARCHES 不会在 Worker 内执行。Tavily 免费账户通常会在免费额度耗尽后停止请求;如果启用了按量付费,建议同时启用 KV。
创建命名空间:
npx wrangler kv namespace create USAGE_KV把返回的 ID 添加到 wrangler.jsonc:
"kv_namespaces": [
{
"binding": "USAGE_KV",
"id": "你的 KV namespace ID"
}
]也可以参考 wrangler.kv.example.jsonc。默认上限是每月 900 次缓存未命中的请求,给 Tavily 免费额度留出余量。重复搜索命中缓存时不消耗本地月度额度。
KV 的读后写不是强事务计数;对个人单令牌使用足够可靠,但不适合作为多人高并发的精确计费系统。
验证与测试
npm run typecheck
npm test
npm run deploy:dry使用官方 MCP Inspector 手动测试:
npx @modelcontextprotocol/inspector在 Inspector 中填写 /mcp URL,并添加 Authorization: Bearer ... 请求头。
HTTP 端点
端点 | 鉴权 | 用途 |
| 否 | 服务信息 |
| 否 | 配置状态,不泄露密钥 |
| 是 | MCP Streamable HTTP 主入口 |
| 是 | 由 MCP SDK 按协议处理 |
| 否 | 返回 410,提示迁移到 |
常见问题
401 unauthorized:客户端 Bearer Token 与MCP_API_TOKEN不一致。403 origin_not_allowed:把客户端的完整 Origin 加入ALLOWED_ORIGINS。410 legacy_sse_not_supported:客户端使用了旧/sse协议,应选择 Streamable HTTP。Tavily 401:重新设置
TAVILY_API_KEYsecret。Tavily 429:免费额度已用完或请求过快,等待额度重置。
Worker 503 misconfigured:至少有一个必填 secret 没有配置。
中国大陆网络不稳定:可以为 Worker 绑定自定义域名,或改为部署到可稳定访问的香港服务器。
安全说明
不要把 Tavily Key 直接填进手机客户端。
为
MCP_API_TOKEN使用至少 32 字节随机值。不要公开分享 Worker URL 和访问令牌。
如果令牌泄露,运行
npx wrangler secret put MCP_API_TOKEN立即轮换。项目只提供搜索,不包含任意 URL 抓取工具,因此避免了常见 SSRF 风险。
项目结构
src/
index.ts Worker 路由、鉴权和 MCP HTTP 入口
server.ts web_search MCP 工具
tavily.ts Tavily API 客户端
cache.ts Cache API 封装
quota.ts 可选 KV 月度上限
config.ts 环境配置解析
security.ts Bearer、Origin 与 CORS
tests/ 单元测试和 MCP 集成测试
docs/plans/ 设计与实施计划License
MIT
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/KB-521/cloudflare-tavily-search-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server