搜索聚合服务

MCP Search Hub是一个跨多个配置的下游模型上下文协议(MCP)服务器运行搜索请求的工具,通过确定性选择提供者、强制执行请求级别的成本和超时预算,并使用互惠排名融合(RRF)和显式来源证明来组合结果。

  • by BjornMelin
  • Python
  • 本地部署
  • 6 星标
  • 更新于
在 GitHub 查看 BjornMelin/mcp-search-hub

使用说明

MCP搜索中心

MCP搜索中心在配置的下游模型上下文协议(MCP)服务器上运行一个搜索请求。它确定性地选择提供者,强制执行请求级成本和超时预算,然后将结果与互惠秩融合(RRF)和显式源来源相结合。

该中心不捆绑搜索提供商、抓取网络、使用大型语言模型(LLM)对提供商进行评分或管理提供商凭据。每个提供者都是一个MCP传输和在部署时提供的声明性结果映射。

MCP搜索中心包括什么

  • FastMCP 3.4.4生命周期、承载令牌验证、结构化日志记录、每个令牌的速率限制和一个有界的未经身份验证的速率限制桶
  • 在一个编排器拥有的超时预算下并发提供程序调用
  • 显式提供者选择或确定性标签/权重路由
  • 可选的估计请求成本预算
  • URL/标题重复数据删除和标准RRF(k=60 默认情况下)
  • 每个结果提供者、原始排名和原始分数来源
  • stdio和流式HTTP传输

本地开发

需要Python 3.11–3.13和uv 0.11.28或更高版本。

uv sync --frozen --group dev
uv run pytest
uv run ruff format --check .
uv run ruff check .
uv run pyright
uv run python -m compileall -q mcp_search_hub tests
uv run python -m build

从stdio开始(默认):

uv run mcp-search-hub

这将启动一个空的集线器。调用前至少配置一个提供程序 search.

在环回上启动HTTP传输:

TRANSPORT=http uv run mcp-search-hub

非环回HTTP绑定失败关闭,除非 AUTH_TOKENS 包含至少一个承载令牌。令牌必须是非空的、唯一的,并且周围没有空格。对于公共生产入口,将集线器保持在私有或环回接口上,并在生产身份验证网关处终止身份。内置的静态令牌支持受限部署。

提供程序配置

PROVIDERS 是一个由小写提供者标识符键入的JSON对象。提供者使用远程 transport 或当地 command,从来没有两者。

以下值是禁用的占位符。替换终结点和凭据,然后设置 enabled 到 true.

{
  "docs": {
    "enabled": false,
    "transport": "https://example.com/mcp",
    "tool": "search",
    "tags": ["general", "technical"],
    "weight": 1.2,
    "timeout_seconds": 15,
    "estimated_cost_usd": "0.01",
    "query_argument": "query",
    "max_results_argument": "limit",
    "raw_content_argument": "include_content",
    "static_arguments": {"language": "en"},
    "result_path": ["results"],
    "field_aliases": {
      "title": ["title"],
      "url": ["url"],
      "snippet": ["description"],
      "score": ["score"],
      "raw_content": ["content"]
    }
  }
}

精确的字符串,例如 $DOCS_API_KEY 从进程环境中解析,缺失时启动失败。不支持部分插值。集线器将传输映射传递给FastMCP,因此远程标头可以使用相同的显式引用形式。

查看完整 配置 和 建筑结构 合同。

MCP工具

search 接受:

  • query (必填)
  • max_results
  • include_raw_content
  • providers (可选显式白名单)
  • tags (可选路由提示)
  • timeout_seconds
  • budget_usd

选择的响应名称、成功、失败和超时的提供程序。每个融合的结果都有一个 sources 列出提供者、原始排名和可选的原始分数。该中心从调用者响应中省略了提供者错误文本。

get_provider_info 返回非秘密工具、标签、权重、超时和估计成本元数据。 GET /health 在HTTP传输中可用,因此 HTTP_PATH 不能是 /health.

许可证

MIT。看 许可证.