mcp全搜索
 
一种模型上下文协议(MCP)服务器,提供对以下内容的统一访问 多个搜索提供商和人工智能工具。此服务器结合了 Tavily、Brave、Kagi、Exa AI、GitHub、Linkup和 Firecrawl提供全面的搜索、人工智能响应和内容 通过四个整合工具进行处理。
特性
🔍 web_search --网络搜索
在网上搜索信息。提供者:tavily(事实/引用), brave(隐私/运营商)、kagi(质量/运营商 (AI语义)、kagi_enrichment(专门索引)。
参数:
query(字符串,必填):搜索查询provider(字符串,必填):tavily,brave,kagi,exa,或
kagi_enrichment
limit(数字,可选):最大结果数(默认值:10)include_domains(array,可选):仅返回这些结果
领域
exclude_domains(数组,可选):从中排除结果
领域
large_result_mode(字符串,可选):file或inline;
覆盖 OMNISEARCH_LARGE_RESULT_MODE 对于此请求
🤖 ai_search --AI驱动的答案
通过引用和推理获得人工智能支持的答案。供应商: kagi_fastgpt(快速~900ms答案)、exa_answer(语义AI)、linkup (对来源进行深度代理搜索)。
参数:
query(字符串,必填):问题或搜索查询provider(字符串,必填):kagi_fastgpt,exa_answer,或
linkup
limit(数字,可选):最大结果数(默认值:10)large_result_mode(字符串,可选):file或inline;
覆盖 OMNISEARCH_LARGE_RESULT_MODE 对于此请求
🔎 github_search --GitHub搜索
在GitHub上搜索代码、存储库或用户。支持高级 语法: filename:, path:, repo:, user:, language:, in:file.
参数:
query(字符串,必填):搜索查询search_type(字符串,可选):code,repositories,或users
(默认值:代码)
limit(数字,可选):最大结果数(默认值:10)sort(字符串,可选):stars,forks,或updated
(仅限存储库)
📄 web_extract --内容提取和处理
从URL中提取、处理或总结网络内容。提供商: tavily(内容提取),kagi(综述 网页/视频/播客),鞭炮 (抓取/爬行/映射/结构化提取/交互式),例如 (内容检索/类似页面)。
参数:
url(字符串或数组,必填):要处理的URL或URL数组provider(字符串,必填):tavily,kagi,firecrawl,或
exa
mode(字符串,可选):处理模式。Firecrawl:
抓取/爬行/映射/提取/操作。Exa:内容/类似。塔维利: 提取物。卡吉:总结一下。默认为提供程序默认值。
extract_depth(字符串,可选):basic或advanced(默认值:
基本)
large_result_mode(字符串,可选):file或inline;
覆盖 OMNISEARCH_LARGE_RESULT_MODE 对于此请求
include_raw_contents(布尔值,可选):设置为false省略
从提取响应中复制每个URL的原始文本
🎯 搜索运算符
MCP Omnisearch通过运营商提供强大的搜索功能 参数:
搜索操作员参考
Brave&Kagi运营商 (在查询字符串中使用):
- 领域:
site:example.com,-site:example.com - 文件类型:
filetype:pdf或ext:pdf - 位置:
intitle:term,inurl:term,inbody:term,
inpage:term
- 语言:
lang:en(ISO 639-1代码) - 国家:
loc:us(ISO 3166-1代码) - 日期:
before:2024,after:2024-01-01 - 精确:
"exact phrase" - 包含/排除:
+required,-excluded
塔维利 (在支持的情况下转换为Tavily API参数):
- 域筛选:
site:和-site:成为include_domains和
exclude_domains;还支持显式域数组
- 日期筛选:
after:和before:成为start_date和
end_date
- 精确短语:引用短语可实现精确匹配行为
- 国家/地区筛选:
loc:成为Tavily的国家参数
不受支持的特定于提供程序的操作员仍然是经过净化的操作员的一部分 在可能的情况下进行查询,而不是全局扁平化。
示例用法
// Brave/Kagi: Advanced operators in query
{
"query": "filetype:pdf lang:en site:microsoft.com +typescript -javascript",
"provider": "brave"
}
// Brave: advanced discovery with native operator passthrough
{
"query": "intitle:benchmark inurl:blog filetype:pdf lang:en before:2025-01-01 \"vector database\" -site:pinterest.com",
"provider": "brave"
}
// Kagi: focused research across docs and exact phrases
{
"query": "site:docs.svelte.dev OR site:svelte.dev \"remote functions\" after:2025-01-01",
"provider": "kagi"
}
// Brave/Kagi: Search gists
{
"query": "site:gist.github.com claude code settings",
"provider": "brave"
}
// Tavily: API parameters for domain filtering
{
"query": "typescript guide",
"provider": "tavily",
"include_domains": ["microsoft.com"]
}供应商能力
- 勇敢搜索:查询字符串中完全支持本机运算符
- Kagi搜索:查询字符串中完全支持运算符
- 塔维利搜索:域名/日期/确切/国家运营商翻译
转换为Tavily API参数;明确的 include_domains 和 exclude_domains 支持数组
- Exa搜索:通过API参数进行域过滤,语义
基于神经理解的搜索
- GitHub搜索:带限定符的高级代码搜索语法:
- filename:remote.ts -搜索特定文件 - path:src/lib -在特定目录中搜索 - repo:user/repo -在特定存储库中搜索 - user:username -在用户的存储库中搜索 - language:typescript -按编程语言筛选 - in:file "export function" -在文件中搜索文本
灵活的API关键要求
MCP Omnisearch旨在使用您拥有的API密钥 可用。您不需要为所有提供者(服务器)提供密钥 将自动检测哪些API密钥可用,并且仅启用 这些供应商。
例如:
- 如果您只有Tavily和Brave API密钥,则只有那些提供商
将可用
- 如果您没有Kagi API密钥,基于Kagi的服务将不会
可用,但所有其他提供商将正常工作
- 服务器将根据API记录哪些提供程序可用
您已配置的密钥
这种灵活性使得只需一两个就可以轻松开始 供应商,并根据需要添加更多。
配置
此服务器需要通过MCP客户端进行配置。这里是 不同环境的示例:
临床配置
将此添加到您的Cline MCP设置中:
{
"mcpServers": {
"mcp-omnisearch": {
"command": "node",
"args": ["/path/to/mcp-omnisearch/dist/index.js"],
"env": {
"TAVILY_API_KEY": "your-tavily-key",
"KAGI_API_KEY": "your-kagi-key",
"BRAVE_API_KEY": "your-brave-key",
"GITHUB_API_KEY": "your-github-key",
"EXA_API_KEY": "your-exa-key",
"LINKUP_API_KEY": "your-linkup-key",
"FIRECRAWL_API_KEY": "your-firecrawl-key",
"FIRECRAWL_BASE_URL": "http://localhost:3002"
},
"disabled": false,
"autoApprove": []
}
}
}带WSL配置的Claude桌面
对于WSL环境,请将以下内容添加到您的Claude Desktop配置中:
{
"mcpServers": {
"mcp-omnisearch": {
"command": "wsl.exe",
"args": [
"bash",
"-c",
"TAVILY_API_KEY=key1 KAGI_API_KEY=key2 BRAVE_API_KEY=key3 GITHUB_API_KEY=key4 EXA_API_KEY=key5 LINKUP_API_KEY=key6 FIRECRAWL_API_KEY=key7 FIRECRAWL_BASE_URL=http://localhost:3002 node /path/to/mcp-omnisearch/dist/index.js"
]
}
}
}环境变量
服务器为每个提供程序使用API密钥。 你不需要钥匙 所有供应商 -只有与您的可用提供商相对应的提供商 API密钥将被激活:
TAVILY_API_KEY:用于Tavily搜索和内容提取KAGI_API_KEY:对于Kagi服务(搜索、FastGPT、摘要生成器、,
丰富)
BRAVE_API_KEY:勇敢搜索GITHUB_API_KEY:GitHub搜索服务(代码、存储库、用户
搜索)
EXA_API_KEY:对于Exa AI服务(搜索、答案、内容、,
类似)
LINKUP_API_KEY:用于使用源答案进行Linkup AI搜索FIRECRAWL_API_KEY:用于Firecrawl服务(抓取、爬行、地图、,
摘录、行动)
FIRECRAWL_BASE_URL:对于自托管Firecrawl实例(可选,
默认为Firecrawl云服务)
OMNISEARCH_LARGE_RESULT_MODE:控制过大的MCP响应:
file (默认)写入临时文件指针, inline 返回完整 内容,以便MCP客户端可以处理索引、截断或卸载 他们自己。
您可以从一个或两个API键开始,稍后添加更多作为 需要。服务器将记录启动时哪些提供程序可用。
大结果行为
大型搜索和提取响应可能超过MCP客户端或 运输限制。每个工具都接受 large_result_mode 覆盖 全球 OMNISEARCH_LARGE_RESULT_MODE 为一个请求设置:
file(默认):过大的响应会写入服务器端
临时文件,工具返回路径、节列表、行数和 阅读提示。这对于共享一个标准的本地stdio客户端来说是紧凑的 文件系统与服务器。
inline:通过MCP返回完整响应。用这个
远程传输、具有自己的索引/卸载层的客户端,或 像Pi这样的主机可以捕获大型工具输出。
对于 web_extract,set include_raw_contents: false 当你只 需要组合 content 现场。这避免了重复巨大的 两者中的每个URL文本 content 和 raw_contents.
远程传输警告:服务器端临时文件路径仅有用 当MCP客户端可以读取服务器的文件系统时。更喜欢 inline 用于HTTP、托管、容器化或其他远程MCP部署。
GitHub API密钥设置
要使用GitHub搜索功能,您需要GitHub个人访问权限 令牌与 仅限公共存储库访问 为了安全:
- 转到GitHub设置:导航到
- 创建新令牌:单击“生成新令牌”→ “生成新
令牌(经典)”
- 配置令牌设置:
- 名称: MCP Omnisearch - Public Search
- 过期:选择您喜欢的到期日(90天 推荐)
- 范围: 保持所有复选框未选中
⚠️ 重要:不要选择任何范围。空作用域令牌 只能访问公共存储库和用户配置文件,即 这正是我们想要的搜索功能。
- 生成并复制:点击“生成令牌”并复制令牌
立即
- 添加到环境:设置
GITHUB_API_KEY=your_token_here
安全须知:
- 此令牌配置确保无法访问私有存储库
- 只有公共代码搜索、存储库发现和用户配置文件
可访问的
- 速率限制:代码搜索5000个请求/小时,10个请求/分钟
专门用于代码搜索
- 如果需要,您可以随时从GitHub设置中撤销令牌
自托管防火墙配置
如果你正在运行Firecrawl的自托管实例,你可以 通过设置来配置MCP Omnisearch以使用它 FIRECRAWL_BASE_URL 环境变量。这使您能够保持完全控制 通过您的数据处理管道。
自托管Firecrawl设置:
- 跟随
- 设置您的Firecrawl实例(默认运行在
http://localhost:3002)
- 使用您的自托管URL配置MCP Omnisearch:
FIRECRAWL_BASE_URL=http://localhost:3002
# or for a remote self-hosted instance:
FIRECRAWL_BASE_URL=https://your-firecrawl-domain.com重要提示:
- 如果
FIRECRAWL_BASE_URL未设置,MCP Omnisearch将默认为
Firecrawl云服务
- 自托管实例支持相同的API端点(
/v1/scrape,
/v1/crawl等等)
- 你仍然需要一个
FIRECRAWL_API_KEY即使是自托管
实例
- 自托管Firecrawl提供了增强的安全性和自定义功能
选项
API
服务器公开了4个整合的MCP工具。每个工具发送到 您选择的提供商:
网络搜索
在网上搜索信息。
{
"query": "latest developments in quantum computing",
"provider": "tavily"
}{
"query": "rust programming language features site:github.com",
"provider": "brave",
"limit": 15
}{
"query": "latest AI research papers",
"provider": "exa",
"include_domains": ["arxiv.org", "scholar.google.com"]
}ai_search
通过引用获得人工智能支持的答案。
{
"query": "Explain the differences between REST and GraphQL",
"provider": "kagi_fastgpt"
}{
"query": "How does machine learning work?",
"provider": "exa_answer"
}{
"query": "What are the latest advances in quantum computing?",
"provider": "linkup"
}github搜索
在GitHub上搜索代码、存储库或用户。
{
"query": "filename:remote.ts @sveltejs/kit",
"search_type": "code",
"limit": 5
}{
"query": "sveltekit remote functions",
"search_type": "repositories",
"sort": "stars"
}{
"query": "Rich-Harris",
"search_type": "users",
"limit": 3
}网络提取
从URL中提取、处理或总结网络内容。
{
"url": "https://example.com/long-article",
"provider": "kagi",
"mode": "summarize"
}{
"url": [
"https://example.com/article1",
"https://example.com/article2"
],
"provider": "tavily"
}{
"url": "https://example.com",
"provider": "firecrawl",
"mode": "crawl",
"extract_depth": "advanced"
}{
"url": "https://arxiv.org/abs/2106.09685",
"provider": "exa",
"mode": "similar"
}Docker部署
MCP Omnisearch支持使用Docker进行容器化部署 MCPO(基于HTTP的模型上下文协议)集成,支持云 部署和OpenAPI访问。
Docker快速入门
- 使用Docker Compose(推荐):
# Clone the repository
git clone https://github.com/spences10/mcp-omnisearch.git
cd mcp-omnisearch
# Create .env file with your API keys
echo "TAVILY_API_KEY=your-tavily-key" > .env
echo "KAGI_API_KEY=your-kagi-key" >> .env
echo "BRAVE_API_KEY=your-brave-key" >> .env
echo "EXA_API_KEY=your-exa-key" >> .env
echo "GITHUB_API_KEY=your-github-key" >> .env
# Add other API keys as needed
echo "LINKUP_API_KEY=your-linkup-key" >> .env
# Start the container
docker-compose up -d- 直接使用Docker:
docker build -t mcp-omnisearch .
docker run -d \
-p 8000:8000 \
-e TAVILY_API_KEY=your-tavily-key \
-e KAGI_API_KEY=your-kagi-key \
-e BRAVE_API_KEY=your-brave-key \
-e EXA_API_KEY=your-exa-key \
-e GITHUB_API_KEY=your-github-key \
-e LINKUP_API_KEY=your-linkup-key \
--name mcp-omnisearch \
mcp-omnisearch容器环境变量
使用每个提供程序的环境变量配置容器:
TAVILY_API_KEY:用于Tavily搜索和内容提取KAGI_API_KEY:对于Kagi服务(搜索、FastGPT、摘要生成器、,
丰富)
BRAVE_API_KEY:勇敢搜索GITHUB_API_KEY:GitHub搜索服务EXA_API_KEY:用于Exa AI服务LINKUP_API_KEY:用于Linkup AI搜索FIRECRAWL_API_KEY:用于Firecrawl服务FIRECRAWL_BASE_URL:用于自托管Firecrawl实例(可选)PORT:集装箱港口(默认为8000)
OpenAPI访问
部署后,MCP服务器可以通过OpenAPI访问:
- 基本URL:
http://your-container-host:8000 - OpenAPI端点:
/omnisearch - 兼容:OpenWebUI和其他期待OpenAPI的工具
云部署
容器化版本可以部署到任何容器平台 支持Docker:
- 云运行(谷歌云)
- 容器实例(Azure)
- ECS/Fargate(AWS)
- 铁路,渲染,Fly.io
- 任何Kubernetes集群
部署到云平台的示例:
# Build and tag for your registry
docker build -t your-registry/mcp-omnisearch:latest .
docker push your-registry/mcp-omnisearch:latest
# Deploy with your platform's CLI or web interface
# Configure environment variables through your platform's settings发展
设置
- 克隆存储库
- 安装依赖项:
pnpm install- 构建项目:
pnpm run build- 在开发模式下运行:
pnpm run dev出版
- 更新package.json中的版本
- 构建项目:
pnpm run build- 发布到npm:
pnpm publish故障排除
API密钥和访问
每个提供程序都需要自己的API密钥,并且可能具有不同的访问权限 要求:
- 塔维利:需要来自其开发人员门户的API密钥
- 卡奇:某些功能仅限于商务(团队)计划用户
- 勇敢:来自其开发人员门户的API密钥
- GitHub:个人访问令牌 未选择范围
(仅限公众访问)
- Exa AI:API密钥来自其位于的仪表板
- 连接:来自其开发人员门户的API密钥
- 火爬:API密钥需要来自其开发人员门户
常见故障模式:
- 缺少API密钥:提供程序未注册;其他配置
供应商继续工作。检查 omnisearch://providers/status 有关秘密安全可用性的详细信息。
- 无效或未经授权的密钥:请求失败,但未暴露
关键价值。验证密钥是否属于提供程序并有权访问 端点或计划层。
- 无效的查询/输入:空查询、不支持的模式、格式错误
在调用之前拒绝域或不支持的URL协议 提供者。
- 速率限制和瞬态提供程序故障:429、超时、网络
失败和5xx响应是可重试的;无效凭据和 不会重试验证失败。
- 远程MCP临时文件:如果响应返回服务器端文件路径
如果您的客户端无法读取,请使用重试 large_result_mode: "inline".
速率限制
每个提供商都有自己的费率限制。服务器将处理速率 优雅地限制错误并返回适当的错误消息。
贡献
在打开PR之前,请阅读CONTRIBUTING.md。简而言之:
- 首先打开一个问题,提出您的更改并调整范围。
- 更喜欢有明确解释的小型、重点突出的公关(问题→
方法→ 验证)。
- 遵循提供者约定:使用
src/common/http.ts(http_json)
对于HTTP,从以下位置读取密钥 src/config/env.ts尊重超时,以及 表面误差通过 ProviderError.
许可证
MIT许可证-请参阅 许可证 文件以获取详细信息。
致谢
构建于:
