搜索mcp网关
search-mcp-gateway 是一个Rust项目,它公开了相同的搜索网关 通过本地MCP服务器和直接CLI实现功能。它是为了 保持MCP支持的完整性,同时通过技能支持延迟加载 仅在需要时调用CLI。
特性
- 具有与提供商无关的请求和响应模型的统一搜索网关。
- 本地
stdioMCP服务器,具有紧凑的工具表面。 - 具有等效功能的CLI
search,extract,crawl,以及status子命令。 - 自动选择提供者、健康感知轮换、可重试回退,以及
断路。
- 默认搜索路由更倾向于Tavily,以获得更丰富的面向答案的查询,
而DuckDuckGo仍然是一个轻量级的后备方案。
- MCP和CLI JSON模式的稳定JSON信封输出:
{ "ok": true|false, "data": ..., "error": ... }.
- 两者之间的DuckDuckGo兼容性策略
html和lite端点
POST和GET请求回退。
- Tavily和DuckDuckGo在第一个版本中提供服务。
命令
直接运行CLI:
cargo run -- search --query "latest AI agent news" --include-answer --json这 --json flag打印一个稳定的信封:
{
"ok": true,
"data": {
"provider_used": "tavily"
},
"error": null
}运行本地MCP服务器:
cargo run -- mcpCI和发布
该存储库包括用于验证和标记的GitHub Actions工作流 释放。CI工作流在Linux、Windows和 macOS。发布工作流构建标记的二进制文件并将其上传到GitHub 释放。
CI工作流
CI工作流在推送上运行 main 以及拉取请求。目前 构建这些目标:
x86_64-unknown-linux-gnux86_64-pc-windows-msvcaarch64-apple-darwin
每个矩阵作业运行:
cargo test --quiet --targetcargo build --release --target
发布工作流程
当您推送匹配的标签时,发布工作流就会运行 v*例如:
git tag v0.1.0
git push origin v0.1.0工作流上传这些发布资产:
- Linux存档:
search-mcp-gateway-x86_64-unknown-linux-gnu.tar.gz - Windows存档:
search-mcp-gateway-x86_64-pc-windows-msvc.zip - macOS存档:
search-mcp-gateway-aarch64-apple-darwin.tar.gz SHA256SUMS
依赖关系更新
存储库包括 dependabot.yml 对于两个更新流:
- GitHub操作版本
- 货物依赖关系
这将使工作流操作和Rust依赖关系向前发展 正常的pull请求,而不是默默地过时。
配置
配置是可选的。如果不提供配置文件,网关 从内置默认值开始,只读取Tavily令牌等机密 从环境变量。
配置加载顺序
网关按以下顺序解析配置:
- 如果你通过 `--config
`,它使用该文件。
- 否则,如果
SEARCH_MCP_GATEWAY_CONFIG如果已设置,则使用该路径。 - 否则,它会寻找
search-mcp-gateway.toml在目前的工作中
目录。
- 如果不存在文件,则使用内置默认值。
最小设置
最小的工作设置仅是一个环境变量。这已经足够了 内置的Tavily提供程序。
在Windows PowerShell上:
$env:TAVILY_HIKARI_TOKEN = "your-token"
cargo run -- search --query "latest AI agent news" --json如果直接运行已安装的二进制文件:
$env:TAVILY_HIKARI_TOKEN = "your-token"
search --query "latest AI agent news" --json示例配置文件
如果要覆盖默认值,请创建 search-mcp-gateway.toml:
[gateway]
default_timeout_ms = 20000
cache_enabled = true
cache_ttl_seconds = 120
circuit_failure_threshold = 3
circuit_open_seconds = 30
search_provider_order = ["tavily", "ddg"]
[tavily]
enabled = true
base_url = "https://tavily.ivanli.cc"
api_key_env = "TAVILY_HIKARI_TOKEN"
search_path = "/api/tavily/search"
extract_path = "/api/tavily/extract"
crawl_path = "/api/tavily/crawl"
[ddg]
enabled = true
base_url = "https://html.duckduckgo.com/html/"
lite_url = "https://lite.duckduckgo.com/lite/"
region = "wt-wt"
safe_search = "moderate"
user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36"配置参考
这些是当前支持的配置密钥。
[gateway]
这 [gateway] 部分控制请求流、缓存、断路和 默认提供商订购。
default_timeout_ms
提供程序请求的HTTP超时。违约: 20000.
cache_enabled
启用内存中的搜索缓存。违约: true.
cache_ttl_seconds
以秒为单位设置缓存TTL。违约: 120.
circuit_failure_threshold
在连续多次故障后打开提供程序电路。违约: 3.
circuit_open_seconds
使提供者电路保持打开状态达数秒。违约: 30.
search_provider_order
在应用排名和健康惩罚之前设置基本提供者顺序。 违约: ["tavily", "ddg"].
[tavily]
这 [tavily] 部分配置内置的Tavily兼容提供程序。
enabled
启用或禁用Tavily。违约: true.
base_url
设置Tavilly API主机。违约: https://tavily.ivanli.cc.
api_key_env
设置存储令牌的环境变量名称。违约: TAVILY_HIKARI_TOKEN.
api_key
可选地将令牌直接嵌入配置文件中。如果两者都有 api_key 和 api_key_env 存在, api_key 获胜。
search_path
设置搜索端点路径。违约: /api/tavily/search.
extract_path
设置提取端点路径。违约: /api/tavily/extract.
crawl_path
设置爬网端点路径。违约: /api/tavily/crawl.
[ddg]
这 [ddg] 部分配置了内置的DuckDuckGo回退提供程序。
enabled
启用或禁用DDG。违约: true.
base_url
设置DDG HTML端点。违约: https://html.duckduckgo.com/html/.
lite_url
设置DDG Lite端点。违约: https://lite.duckduckgo.com/lite/.
region
设置DDG地区代码。违约: wt-wt.
safe_search
设置安全搜索模式。当前代码中支持的值为 off, strict, 以及中等模式的任何其他值。违约: moderate.
user_agent
设置用于DDG请求的User-Agent标头。默认值为 浏览器类似于用户代理,因为DDG使用它更稳定。
Codex MCP示例
如果你想让Codex启动本地MCP服务器,请添加这样的条目 ~/.codex/config.toml:
[mcp_servers.tavily_hikari]
command = "/absolute/path/to/search-mcp-gateway"
args = ["mcp"]
[mcp_servers.tavily_hikari.env]
TAVILY_HIKARI_TOKEN = "your-token"如果将项目配置存储在其他地方,请添加 SEARCH_MCP_GATEWAY_CONFIG:
[mcp_servers.tavily_hikari]
command = "/absolute/path/to/search-mcp-gateway"
args = ["mcp"]
[mcp_servers.tavily_hikari.env]
TAVILY_HIKARI_TOKEN = "your-token"
SEARCH_MCP_GATEWAY_CONFIG = "/absolute/path/to/search-mcp-gateway.toml"替换 /absolute/path/to/search-mcp-gateway 通过绝对路径 已在您的计算机上安装可执行文件。例如:
- 窗户:
D:\\Software\\Dev\\CLI\\search-mcp-gateway.exe - macOS或Linux:
/usr/local/bin/search-mcp-gateway
电流限制
当前版本仅支持通过配置的内置提供程序 [tavily] 和 [ddg] 部分。它还不支持用户自定义 供应商通过任意 toml 阻碍。
