小贴士:按下Ctrl+D 或 ⌘+D,一键收藏本站,方便下次快速访问!
MIT License
31
最近更新:10天前

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

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支持("短语")

使用示例

typescript 复制代码
// 在Brave或Kagi中使用查询字符串运算符
{
  "query": "filetype:pdf site:microsoft.com typescript指南"
}

// 在Tavily中使用API参数
{
  "query": "typescript指南",
  "include_domains": ["microsoft.com"],
  "exclude_domains": ["github.com"]
}

提供商能力

  • Brave搜索:完整原生运算符支持
  • Kagi搜索:完整运算符支持
  • Tavily搜索:通过API参数实现域名过滤

🤖 AI响应工具

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

📄 内容处理工具

  • Jina AI阅读器:支持图像标注和PDF的纯净内容提取
  • Kagi通用摘要器:针对网页、视频和播客的内容摘要
  • Tavily提取:从单页或多网页提取原始内容,可配置提取深度('basic'或'advanced')。返回合并内容与单独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设置中添加:

json 复制代码
{
	"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": []
		}
	}
}

Claude Desktop的WSL配置

对于WSL环境,在Claude Desktop配置中添加:

json 复制代码
{
	"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,摘要器,增强)
  • JINA_AI_API_KEY:Jina AI服务(阅读器,锚定)
  • BRAVE_API_KEY:Brave搜索
  • FIRECRAWL_API_KEY:Firecrawl服务(抓取,爬取,映射,提取,操作)

您可先配置一两个API密钥,后续按需添加更多。服务器启动时将记录可用提供商。

API

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

搜索工具

search_tavily

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

参数:

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

示例:

json 复制代码
{
	"query": "量子计算最新进展"
}

search_brave

注重隐私的网络搜索,涵盖优质技术内容。

参数:

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

示例:

json 复制代码
{
	"query": "Rust编程语言特性"
}

search_kagi

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

参数:

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

示例:

json 复制代码
{
	"query": "机器学习最新研究",
	"language": "en"
}

AI响应工具

ai_perplexity

集成实时网络搜索的AI驱动响应生成。

参数:

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

示例:

json 复制代码
{
	"query": "解释REST与GraphQL的区别"
}

ai_kagi_fastgpt

带引用的快速AI生成回答。

参数:

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

示例:

json 复制代码
{
	"query": "TypeScript的主要特性是什么?"
}

内容处理工具

process_jina_reader

将URL转换为适合LLM的纯净文本,支持图像标注。

参数:

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

示例:

json 复制代码
{
	"url": "https://example.com/article"
}

process_kagi_summarizer

对URL内容进行摘要。

参数:

  • url (字符串,必需):要摘要的URL

示例:

json 复制代码
{
	"url": "https://example.com/long-article"
}

process_tavily_extract

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

参数:

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

示例:

json 复制代码
{
	"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 (字符串,可选):提取深度 - 'basic'(默认)或'advanced'

示例:

json 复制代码
{
	"url": "https://example.com/article",
	"extract_depth": "basic"
}

响应包含:

  • 经过清洗的Markdown格式内容
  • 含标题、字数统计和提取统计的元数据

firecrawl_crawl_process

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

参数:

  • url (字符串 | 字符串数组,必需):爬取起始URL
  • extract_depth (字符串,可选):提取深度 - 'basic'(默认)或'advanced'(控制爬取深度和限制)

示例:

json 复制代码
{
	"url": "https://example.com",
	"extract_depth": "advanced"
}

响应包含:

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

firecrawl_map_process

从网站快速收集URL实现全面站点映射。

参数:

  • url (字符串 | 字符串数组,必需):要映射的URL
  • extract_depth (字符串,可选):提取深度 - 'basic'(默认)或'advanced'(控制映射深度)

示例:

json 复制代码
{
	"url": "https://example.com",
	"extract_depth": "basic"
}

响应包含:

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

firecrawl_extract_process

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

参数:

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

示例:

json 复制代码
{
	"url": "https://example.com",
	"extract_depth": "basic"
}

响应包含:

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

firecrawl_actions_process

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

参数:

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

示例:

json 复制代码
{
	"url": "https://news.ycombinator.com",
	"extract_depth": "basic"
}

响应包含:

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

增强工具

enhance_kagi_enrichment

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

参数:

  • query (字符串,必需):增强查询

示例:

json 复制代码
{
	"query": "新兴网络技术"
}

enhance_jina_grounding

根据网络知识验证陈述。

参数:

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

示例:

json 复制代码
{
	"statement": "TypeScript为JavaScript添加静态类型"
}

开发

设置

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

发布

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

故障排查

API密钥与访问

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

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

速率限制

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

贡献

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

许可证

MIT许可证 - 详见LICENSE文件。

致谢

基于以下构建:

Agent8

Agent8 的 MCP 服务器

Aio Mcp

🚀 集成 AI 搜索、RAG 和多服务整合(GitLab/Jira/Confluence/YouTube)的一体化 MCP 服务器,助力 AI 增强的开发工作流。源自 https://github.com/nguyenvanduocit/all-in-one-model-context-protocol

Datagov Server

一个用于访问 Data.gov 数据的 MCP 服务器,提供与政府数据集交互的工具和资源。

Datahub

DataHub (https://datahubproject.io) 的官方 MCP 服务器,集成了 MCP 协议 (https://modelcontextprotocol.io/introduction)。

Dataset Viewer

MCP 服务器用于 Hugging Face 数据集查看器