首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
首页
学习
活动
专区
圈层
工具
MCP广场
MCP广场 >详情页
mcp-omnisearch2025-05-280分享
github
?提供对多个搜索引擎(Tavily、Brave、Kagi)、人工智能工具(Perplexity、FastGPT)以及内容处理服务(Jina AI、Kagi)统一访问的模型上下文协议(MCP)服务器。通过单一界面整合了搜索、人工智能响应、内容处理和增强功能。
By spences10
2025-05-280
github
详情内容

mcp-omnisearch

一个提供多搜索引擎和AI工具统一访问接口的模型上下文协议(MCP)服务器。该服务器整合了Tavily、Perplexity、Kagi、Jina AI、Brave和Firecrawl的功能,通过单一接口提供全面的搜索、AI响应、内容处理和增强功能。

Glama徽章

功能特性

🔍 搜索工具

  • Tavily搜索:专注于事实性信息查询,提供强大的引用支持。可通过API参数(include_domains/exclude_domains)进行域名过滤。
  • Brave搜索:注重隐私的技术内容搜索引擎,原生支持各类搜索操作符(site:, -site:, filetype:, intitle:, inurl:, before:, after:, 以及精确短语)。
  • Kagi搜索:高质量搜索结果,广告影响最小化,专注于权威来源。支持查询字符串中的搜索操作符(site:, -site:, filetype:, intitle:, inurl:, before:, after:, 以及精确短语)。

🎯 搜索操作符

MCP Omnisearch通过操作符和参数提供强大的搜索能力:

常用搜索功能

  • 域名过滤:所有提供商均支持
    • Tavily:通过API参数(include_domains/exclude_domains)
    • Brave & Kagi:通过site:和-site:操作符
  • 文件类型过滤:Brave和Kagi支持(filetype:)
  • 标题和URL过滤:Brave和Kagi支持(intitle:, inurl:)
  • 日期过滤:Brave和Kagi支持(before:, after:)
  • 精确短语匹配:Brave和Kagi支持("短语")

使用示例

// 使用Brave或Kagi的查询字符串操作符
{
  "query": "filetype:pdf site:microsoft.com typescript guide"
}

// 使用Tavily的API参数
{
  "query": "typescript guide",
  "include_domains": ["microsoft.com"],
  "exclude_domains": ["github.com"]
}

提供商功能对比

  • Brave搜索:查询字符串原生支持所有操作符
  • Kagi搜索:查询字符串完整支持所有操作符
  • Tavily搜索:通过API参数实现域名过滤

🤖 AI响应工具

  • Perplexity AI:结合实时网络搜索与GPT-4 Omni和Claude 3的高级响应生成
  • Kagi FastGPT:快速生成带引用的AI回答(典型响应时间900毫秒)

📄 内容处理工具

  • Jina AI阅读器:支持图片标注和PDF的清洁内容提取
  • Kagi通用摘要器:为网页、视频和播客提供内容摘要
  • Tavily提取器:从单个或多个网页提取原始内容,可配置提取深度('基础'或'高级')。返回合并内容和各URL单独内容,包含字数统计和提取统计等元数据
  • Firecrawl抓取器:从单个URL提取清洁、适合LLM的数据,提供增强格式选项
  • Firecrawl爬虫:深度爬取网站所有可访问子页面,可配置深度限制
  • Firecrawl地图:快速收集网站URL用于全面站点映射
  • Firecrawl提取器:使用自然语言提示通过AI进行结构化数据提取
  • Firecrawl操作:支持在提取前进行页面交互(点击、滚动等)以获取动态内容

🔄 增强工具

  • Kagi丰富API:从专业索引(Teclis、TinyGem)获取补充内容
  • Jina AI事实核查:基于网络知识的实时事实验证

灵活的API密钥要求

MCP Omnisearch设计为与您现有的API密钥配合使用。您不需要拥有所有提供商的密钥——服务器会自动检测可用的API密钥并仅启用相应的提供商。

例如:

  • 如果您只有Tavily和Perplexity的API密钥,那么只有这些提供商可用
  • 如果您没有Kagi的API密钥,基于Kagi的服务将不可用,但其他提供商正常工作
  • 服务器会在启动时记录基于您配置的API密钥可用的提供商

这种灵活性使您可以仅使用一两个提供商开始使用,然后根据需要添加更多。

配置

此服务器需要通过您的MCP客户端进行配置。以下是不同环境的配置示例:

Cline配置

将以下内容添加到您的Cline MCP设置中:

{
	"mcpServers": {
		"mcp-omnisearch": {
			"command": "node",
			"args": ["/path/to/mcp-omnisearch/dist/index.js"],
			"env": {
				"TAVILY_API_KEY": "your-tavily-key",
				"PERPLEXITY_API_KEY": "your-perplexity-key",
				"KAGI_API_KEY": "your-kagi-key",
				"JINA_AI_API_KEY": "your-jina-key",
				"BRAVE_API_KEY": "your-brave-key",
				"FIRECRAWL_API_KEY": "your-firecrawl-key"
			},
			"disabled": false,
			"autoApprove": []
		}
	}
}

使用WSL的Claude Desktop配置

对于WSL环境,将以下内容添加到您的Claude Desktop配置中:

{
	"mcpServers": {
		"mcp-omnisearch": {
			"command": "wsl.exe",
			"args": [
				"bash",
				"-c",
				"TAVILY_API_KEY=key1 PERPLEXITY_API_KEY=key2 KAGI_API_KEY=key3 JINA_AI_API_KEY=key4 BRAVE_API_KEY=key5 FIRECRAWL_API_KEY=key6 node /path/to/mcp-omnisearch/dist/index.js"
			]
		}
	}
}

环境变量

服务器使用每个提供商的API密钥。您不需要所有提供商的密钥——只有与您可用API密钥对应的提供商会被激活:

  • TAVILY_API_KEY:用于Tavily搜索
  • PERPLEXITY_API_KEY:用于Perplexity AI
  • KAGI_API_KEY:用于Kagi服务(FastGPT、摘要器、丰富API)
  • JINA_AI_API_KEY:用于Jina AI服务(阅读器、事实核查)
  • BRAVE_API_KEY:用于Brave搜索
  • FIRECRAWL_API_KEY:用于Firecrawl服务(抓取、爬虫、地图、提取、操作)

您可以先使用一两个API密钥开始,然后根据需要添加更多。服务器会在启动时记录可用的提供商。

API

服务器实现了按类别组织的MCP工具:

搜索工具

search_tavily

使用Tavily搜索API进行网络搜索。最适合需要可靠来源和引用的实事性查询。

参数:

  • query(字符串,必填):搜索查询

示例:

{
	"query": "量子计算的最新发展"
}

search_brave

注重隐私的技术主题网络搜索。

参数:

  • query(字符串,必填):搜索查询

示例:

{
	"query": "Rust编程语言特性"
}

search_kagi

广告影响最小化的高质量搜索结果。最适合查找权威来源和研究资料。

参数:

  • query(字符串,必填):搜索查询
  • language(字符串,可选):语言过滤器(例如"en")
  • no_cache(布尔值,可选):绕过缓存获取新鲜结果

示例:

{
	"query": "机器学习的最新研究",
	"language": "en"
}

AI响应工具

ai_perplexity

结合实时网络搜索的AI响应生成。

参数:

  • query(字符串,必填):AI响应的问题或主题

示例:

{
	"query": "解释REST和GraphQL之间的区别"
}

ai_kagi_fastgpt

带引用的快速AI响应。

参数:

  • query(字符串,必填):快速AI响应的问题

示例:

{
	"query": "TypeScript的主要特性是什么?"
}

内容处理工具

process_jina_reader

将URL转换为清洁、适合LLM的文本,支持图片标注。

参数:

  • url(字符串,必填):要处理的URL

示例:

{
	"url": "https://example.com/article"
}

process_kagi_summarizer

总结URL内容。

参数:

  • url(字符串,必填):要总结的URL

示例:

{
	"url": "https://example.com/long-article"
}

process_tavily_extract

使用Tavily提取器从网页提取原始内容。

参数:

  • url(字符串 | 字符串数组,必填):要提取内容的单个URL或URL数组
  • extract_depth(字符串,可选):提取深度 - '基础'(默认)或'高级'

示例:

{
	"url": [
		"https://example.com/article1",
		"https://example.com/article2"
	],
	"extract_depth": "advanced"
}

响应包含:

  • 所有URL的合并内容
  • 每个URL的单独原始内容
  • 包含字数统计、成功提取和失败URL的元数据

firecrawl_scrape_process

从单个URL提取清洁、适合LLM的数据,提供增强格式选项。

参数:

  • url(字符串 | 字符串数组,必填):要提取内容的单个URL或URL数组
  • extract_depth(字符串,可选):提取深度 - '基础'(默认)或'高级'

示例:

{
	"url": "https://example.com/article",
	"extract_depth": "basic"
}

响应包含:

  • 清洁的markdown格式内容
  • 包含标题、字数和提取统计的元数据

firecrawl_crawl_process

深度爬取网站所有可访问子页面,可配置深度限制。

参数:

  • url(字符串 | 字符串数组,必填):爬取的起始URL
  • extract_depth(字符串,可选):提取深度 - '基础'(默认)或'高级'(控制爬取深度和限制)

示例:

{
	"url": "https://example.com",
	"extract_depth": "advanced"
}

响应包含:

  • 所有爬取页面的合并内容
  • 每个页面的单独内容
  • 包含标题、字数和爬取统计的元数据

firecrawl_map_process

快速收集网站URL用于全面站点映射。

参数:

  • url(字符串 | 字符串数组,必填):要映射的URL
  • extract_depth(字符串,可选):提取深度 - '基础'(默认)或'高级'(控制地图深度)

示例:

{
	"url": "https://example.com",
	"extract_depth": "basic"
}

响应包含:

  • 所有发现的URL列表
  • 包含站点标题和URL数量的元数据

firecrawl_extract_process

使用自然语言提示通过AI进行结构化数据提取。

参数:

  • url(字符串 | 字符串数组,必填):要提取结构化数据的URL
  • extract_depth(字符串,可选):提取深度 - '基础'(默认)或'高级'

示例:

{
	"url": "https://example.com",
	"extract_depth": "basic"
}

响应包含:

  • 从页面提取的结构化数据
  • 包含标题和提取统计的元数据

firecrawl_actions_process

支持在提取前进行页面交互(点击、滚动等)以获取动态内容。

参数:

  • url(字符串 | 字符串数组,必填):要交互并提取内容的URL
  • extract_depth(字符串,可选):提取深度 - '基础'(默认)或'高级'(控制交互复杂性)

示例:

{
	"url": "https://news.ycombinator.com",
	"extract_depth": "basic"
}

响应包含:

  • 执行交互后提取的内容
  • 执行的操作描述
  • 页面截图(如果可用)
  • 包含标题和提取统计的元数据

增强工具

enhance_kagi_enrichment

从专业索引获取补充内容。

参数:

  • query(字符串,必填):丰富查询

示例:

{
	"query": "新兴网络技术"
}

enhance_jina_grounding

验证陈述是否符合网络知识。

参数:

  • statement(字符串,必填):要验证的陈述

示例:

{
	"statement": "TypeScript为JavaScript添加了静态类型"
}

开发

设置

  1. 克隆仓库
  2. 安装依赖:
pnpm install
  1. 构建项目:
pnpm run build
  1. 以开发模式运行:
pnpm run dev

发布

  1. 更新package.json中的版本号
  2. 构建项目:
pnpm run build
  1. 发布到npm:
pnpm publish

故障排除

API密钥和访问

每个提供商需要自己的API密钥,可能有不同的访问要求:

  • Tavily:需要从他们的开发者门户获取API密钥
  • Perplexity:通过他们的开发者计划获取API访问
  • Kagi:某些功能仅限商业(团队)计划用户
  • Jina AI:所有服务都需要API密钥
  • Brave:需要从他们的开发者门户获取API密钥
  • Firecrawl:需要从他们的开发者门户获取API密钥

速率限制

每个提供商都有自己的速率限制。服务器会优雅地处理速率限制错误并返回适当的错误消息。

贡献

欢迎贡献!请随时提交Pull Request。

许可证

MIT许可证 - 详情请参阅LICENSE文件。

致谢

基于以下项目构建:

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档