使用说明
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_resultsinclude_raw_contentproviders(可选显式白名单)tags(可选路由提示)timeout_secondsbudget_usd
选择的响应名称、成功、失败和超时的提供程序。每个融合的结果都有一个 sources 列出提供者、原始排名和可选的原始分数。该中心从调用者响应中省略了提供者错误文本。
get_provider_info 返回非秘密工具、标签、权重、超时和估计成本元数据。 GET /health 在HTTP传输中可用,因此 HTTP_PATH 不能是 /health.
许可证
MIT。看 许可证.