Skip to main content
Glama
liujp2015

multsearch-mcp

by liujp2015

multsearch-mcp

Claude Code 双路联网搜索 MCP

两条独立搜索路径交叉验证 · 信源显式回传 · 国内可用

Python MCP


这是什么

一个为 Claude Code 设计的本地 MCP 服务器。装上之后,Claude 回答前会真的去网上查,并把信源显式带回来,而不是凭印象瞎答。

核心是两条独立的搜索路径,互相交叉验证:

路径

工具

索引来源

模型

Path A

web_search

Tavily + Firecrawl + SearXNG 找源

LLM 基于信源 summarize(默认火山方舟 Ark glm-5.2

Path B

gemini_search

Google Search grounding

Gemini 2.5 Flash

两条路用的是完全不同的索引(Tavily/Firecrawl/SearXNG vs Google),所以适合对关键事实做双路交叉验证。除此之外还有网页抓取 / 站点扫描 / 信源回查 / 配置诊断工具。

工具

它干什么

web_search

Tavily + Firecrawl + SearXNG 并行找源 → LLM 综合成带 [编号] 内联引用的答案(Path A)

gemini_search

Gemini + Google grounding 直接给 grounded 答案 + Google 引用(Path B)

get_sources

web_search / gemini_search 返回的 session_id 取回完整信源列表

web_fetch

抓任意网页转结构化 Markdown(Tavily extract → Firecrawl 兜底)

web_map

扫描一个站点,列出全部可访问 URL

get_config_info

查看当前配置 + 测试 API 连通性 + 列出可用模型

switch_model

切换默认 LLM 模型并持久化

为什么不直接用 Claude Code 自带的 WebSearch / WebFetch

  • 自带工具受后端策略限制,部分地区不可用、命中率不稳定

  • 自带工具不会把搜索结果显式喂给模型,Claude 经常仍走内部记忆,幻觉率高

  • 没有结构化信源回传,难以追溯

本项目把这三件事都修好了,且主模型走火山方舟 Ark(国内直连、无需代理),Tavily/Firecrawl/Gemini 走代理,SearXNG 默认直连。


Related MCP server: fast-webfetch-mcp

工作原理

你 → Claude Code → multsearch MCP → ┬─ Tavily + Firecrawl + SearXNG 找源 ──► LLM summarize   (web_search, Path A)
                                    ├─ Gemini + Google grounding                   (gemini_search, Path B)
                                    ├─ Tavily extract / Firecrawl scrape           (web_fetch)
                                    └─ Tavily map                                  (web_map)

web_search 的文本模式流程:Tavily + Firecrawl + SearXNG 并行抓信源 → 组装成编号信源文本 → 喂给 LLM(glm-5.2)让它只依据信源作答,每条事实带 [n] 引用。模型本身不联网,所以不会幻觉编造。信源以 Tavily/Firecrawl/SearXNG 的实际结果为准,模型若附了信源列表会被剥离。

gemini_search 走 Gemini 原生 Google Search grounding,返回 grounded 答案 + Google 引用,遇 429/5xx 指数退避重试。


30 秒上手

两种安装方式:A. 让 Claude Code 自己配(推荐)/ B. 交互式向导

A. Claude Code 驱动(非交互模式,推荐)

把这一段直接发给 Claude Code:

我本地有 multsearch-mcp 源码(路径:<填绝对路径>),请把它安装到我当前项目里(scope=project)。 你需要先 cd 到我当前项目目录,然后通过下面这条命令完成安装。我会告诉你我的 Ark API Key(ark-... 开头),Tavily / Firecrawl / Gemini 都跳过(SearXNG 默认就启用,无需配置):

uvx --from '<源码路径>[setup]' \
    multsearch-setup \
    --non-interactive \
    --package-spec <源码路径> \
    --scope project \
    --provider ark \
    --api-key <我会粘贴的 Ark Key>

装完检查 .mcp.json 是否只在当前目录、claude mcp list 是否能看到 multsearch。

B. 交互式向导(自己跑)

cd ~/your-project          # ← 关键:决定 .mcp.json 写到哪里
uvx --from '<源码路径>[setup]' multsearch-setup --package-spec <源码路径>

向导会一步步问 LLM 服务来源(Ark / 自定义)、API Key、Tavily / Firecrawl / Gemini(均可选)、作用域,全程键盘选项 + 回车,不需要手写任何配置文件。完成后自动跑 claude mcp add-json 注册到当前项目 .mcp.json。重启 Claude Code 后 /mcp 能看到 multsearch

没装 uvcurl -LsSf https://astral.sh/uv/install.sh | sh 然后重开终端。


API Key 申请指南

主 LLM Key 必需,其余可选。最佳零成本组合 = Ark + Tavily + Gemini,三家都有免费额度,全程不用绑卡。SearXNG 默认免费开启、无需 key,作为 web_search 第三路信源锦上添花。

1. 火山方舟 Ark(主 LLM,必需)

说明

控制台

https://console.volcengine.com/ark

Key 前缀

ark-...

模型

glm-5.2(纯文本,国内直连无需代理)

计费

按 token,有免费 / 体验额度

Ark 走国内直连,Tavily / Firecrawl / Gemini 走代理。

2. Tavily(强烈建议,可选)

说明

注册

https://app.tavily.com/home

免费额度

1,000 次 / 月,无需绑卡

用途

web_search 找源 + web_fetch / web_map

不配 Tavily:web_search 退化为 Firecrawl + SearXNG 两路;web_fetch / web_map 不可用。

3. Firecrawl(可选)

说明

注册

https://www.firecrawl.dev/signin?view=signup

免费额度

1,000 credits / 月,无需绑卡

用途

web_search 找源 + web_fetch 兜底

4. Gemini(可选 · 第二路搜索)

说明

取 Key

https://aistudio.google.com/apikey(免费)

用途

gemini_search 独立 Google 索引交叉验证

注意

Google API 在中国大陆需走代理(HTTP_PROXY / HTTPS_PROXY

5. SearXNG(可选 · 第三路信源)

说明

是什么

自建/公开的元搜索引擎,聚合 Google / Bing / DuckDuckGo 等多引擎结果

默认地址

http://45.197.145.62:8081(可用 SEARXNG_URL 覆盖,或写进 ~/.config/multsearch/config.jsonsearxng_url

用途

web_search 第三路信源,与 Tavily/Firecrawl 并行采集

Key

无需 API Key

引擎

SEARXNG_ENGINES 默认 google,bing,duckduckgo(多引擎聚合,单引擎挂掉其他兜底)

代理

代码内 trust_env=False 直连,不走 HTTP_PROXY

注意

实例需在 settings.yml 开启 json 输出格式;实测该实例 google 引擎被限流返回空,故默认多引擎聚合


工作原理(配置形态)

向导跑完后,项目根目录的 .mcp.json 大致长这样(敏感字段已脱敏):

{
  "mcpServers": {
    "multsearch": {
      "type": "stdio",
      "command": "uvx",
      "args": ["--from", "<源码路径>", "multsearch"],
      "env": {
        "MULT_PROVIDER": "custom",
        "MULT_API_URL": "https://ark.cn-beijing.volces.com/api/plan/v3",
        "MULT_API_KEY": "ark-****",
        "MULT_MODEL": "glm-5.2",
        "MULT_MAX_TOKENS": "8192",
        "TAVILY_API_KEY": "tvly-****",
        "FIRECRAWL_API_KEY": "fc-****",
        "GEMINI_API_KEY": "****",
        "GEMINI_MODEL": "gemini-2.5-flash",
        "HTTP_PROXY": "http://127.0.0.1:7890",
        "HTTPS_PROXY": "http://127.0.0.1:7890",
        "NO_PROXY": "localhost,127.0.0.1,ark.cn-beijing.volces.com,*.volces.com"
      }
    }
  }
}

Claude Code 启动时读这个文件,按 stdio 协议拉起一个 Python 进程(本项目),通过 MCP 协议转发工具调用。httpx 默认 trust_env=True,会读 HTTP_PROXY / NO_PROXY,所以 Tavily/Firecrawl/Gemini 走代理、Ark 走直连;SearXNG 单独用 trust_env=False 直连。


作用域怎么选

向导第 6 步选作用域:

Scope

配置文件位置

谁能看到

推荐场景

project

<项目>/.mcp.json

入 git 后团队共享

默认

user

~/.claude.json

本机所有项目

一台机器多项目都用

local

<项目>/.claude/settings.local.json

仅本机本项目

个人调试

新手选 project,把 .mcp.json 提交进 git 即可。


进阶配置

切换 Provider / 模型

向导第 2 步可选 Ark / 自定义。已装好想改:重新跑向导,或直接编辑 .mcp.jsonenv 段。运行时也可用 switch_model 工具切换模型并持久化到 ~/.config/multsearch/config.json

完整环境变量参考

变量

默认值

说明

MULT_PROVIDER

custom

custom / ark(向导预设)

MULT_API_URL

OpenAI 兼容端点(Ark: https://ark.cn-beijing.volces.com/api/plan/v3

MULT_API_KEY

必需

MULT_MODEL

glm-5.2

LLM 模型,可用 switch_model 切换

MULT_MAX_TOKENS

推理模型建议 8192(reasoning 要吃 token)

TAVILY_API_KEY

可选,web_search 找源 + web_fetch / web_map

FIRECRAWL_API_KEY

可选,web_search 找源 + web_fetch 兜底

GEMINI_API_KEY

可选,gemini_search 第二路

GEMINI_MODEL

gemini-2.5-flash

Gemini 模型

SEARXNG_URL

http://45.197.145.62:8081

SearXNG 实例地址(第三路信源)

SEARXNG_ENGINES

google,bing,duckduckgo

逗号分隔的引擎列表

MULT_SEARXNG_ENABLED

true

关闭则不采集 SearXNG 信源

HTTP_PROXY / HTTPS_PROXY

中国大陆访问 Tavily/Firecrawl/Gemini 需代理(SearXNG 直连不受影响)

NO_PROXY

国内 API(ark.cn-beijing.volces.com 等)直连

MULT_DEBUG

false

详细日志

MULT_LOG_LEVEL

INFO

DEBUG / INFO / WARNING / ERROR

MULT_LOG_DIR

~/.config/multsearch/logs

日志输出目录

配置优先级:环境变量 > ~/.config/multsearch/config.json


验证安装

claude mcp list
# 应该出现一行:multsearch    connected

在 Claude Code 里新开会话:

用 multsearch 的 web_search 搜一下「AKShare stock_zh_a_spot_em 的 limit 参数默认返回多少只」,把信源列出来。

连通后会看到 Claude 调用 web_search,输出带 [编号] 引用的回答。再用 get_sources 取回完整信源列表。

第二路:

用 multsearch 的 gemini_search 搜同一个问题,对比两路结果。


常见问题

Q:/mcp 看不到 multsearch? A:99% 是 Claude Code 没重启。先 claude mcp list 看命令行是否能看到,能看到就完全重启 Claude Code(退出再开,不是新会话)。

Q:改了源码不生效? A:uv tool run --from <path> 会缓存构建的 wheel。改源码后bump pyproject.tomlversion(强制重建 wheel),或清 uv 缓存(sdists-v9/path + archive-v0 下本包目录),再 /mcp 重连。

Q:web_search 返回空 content? A:多半是 Tavily/Firecrawl 没连上(代理没开 → HTTP 000)。代码里 except Exception: return None 静默兜底了;SearXNG 默认开启会兜底一路信源(走直连),若三路全空再开代理(Clash 127.0.0.1:7890),用 get_config_info 测连通性,或用 dangerouslyDisableSandbox 的 curl 直连 api.tavily.com 排查。

Q:gemini_search 报失败? A:Google API 必须走代理(不在 NO_PROXY 里),且 GEMINI_API_KEY 要设置。免费档 15 RPM,并发下可能 429,已内置退避重试。

Q:能用其它 OpenAI 兼容端点吗? A:可以。MULT_PROVIDER=custom + 自填 MULT_API_URL / MULT_MODEL 即可(如 DeepSeek、智谱、内网网关等)。

Q:为什么删掉了 plan_ 规划工具?* A:早期版本有一套 6 阶段搜索规划状态机,实际使用中调用方很少走,维护成本高,已移除以聚焦双路搜索内核。web_search 现在是直接的找源 → 总结流程,带同 query+model 的 LRU 响应缓存。

Available Tools

7 tools
get_config_infoA
Returns current multsearch MCP server configuration and tests API connectivity.

**Key Features:**
    - **Configuration Check:** Verifies environment variables and current settings.
    - **Connection Test:** Sends request to /models endpoint to validate API access.
    - **Model Discovery:** Lists all available models from the API.

**Edge Cases & Best Practices:**
    - Use this tool first when debugging connection or configuration issues.
    - API keys are automatically masked for security in the response.
    - Connection test timeout is 10 seconds; network issues may cause delays.
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It discloses that API keys are automatically masked, connection test has a 10-second timeout, and it sends a request to the /models endpoint. These are valuable behavioral traits beyond the mere statement of function, making the tool's operation predictable and safe.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections for Key Features and Edge Cases/Best Practices. Every sentence provides useful information, and the bullet points make it scannable. It is appropriately sized, not overly verbose, and front-loaded with the core purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has no output schema, so the description should explain return values. It mentions returning configuration, listing models, and testing connectivity, but does not specify the exact structure of the response. Given the simplicity of the tool and the richness of behavioral details provided, this is quite complete, though a brief mention of the response format would make it fully comprehensive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the input schema provides complete coverage. The description adds no parameter-specific information, but with no parameters, there is nothing to explain. The baseline for zero parameters is 4, which is appropriate here.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: 'Returns current multsearch MCP server configuration and tests API connectivity.' The verb 'returns' and 'tests' are specific, and the resource is well-defined. It also lists key features (configuration check, connection test, model discovery) which further clarifies the scope and distinguishes it from sibling tools like web_search or get_sources.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit usage guidance: 'Use this tool first when debugging connection or configuration issues.' This gives a clear context for when to employ the tool, though it does not explicitly mention alternatives or exclusions. This is a clear context with no exclusions, qualifying for a 4.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_sourcesA
When you feel confused or curious about the search response content, use the session_id returned by web_search to invoke the this tool to obtain the corresponding list of information sources.
Retrieve all cached sources for a previous web_search call.
Provide the session_id returned by web_search to get the full source list.
ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYesSession ID from previous web_search call.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses that the tool returns a 'full source list' from 'cached sources', implying a read-only operation. It does not discuss potential failure modes or session validity, but for a simple retrieval tool it provides sufficient behavioral context about what the agent can expect.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is spread across three sentences with notable redundancy: 'session_id returned by web_search' appears in all three, and the first sentence is verbose and contains a typo ('the this tool'). It could be condensed to one or two sentences without losing meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter tool with an output schema, the description adequately covers what the tool does, when to use it, and how to provide input. It does not describe error scenarios, but those are not critical for basic usage. The sibling tools are distinct enough that confusion is unlikely.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds value beyond the schema by explicitly stating the session_id's provenance ('returned by web_search') and its purpose ('to get the full source list'). This reinforces the schema description and helps the agent understand how to obtain and use the parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Retrieve all cached sources for a previous web_search call', a specific verb+resource. It distinguishes itself from sibling tools by explicitly linking to web_search and mentioning 'session_id returned by web_search'. The purpose is unequivocal and not a tautology.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The first sentence provides an explicit trigger: 'When you feel confused or curious about the search response content, use the session_id returned by web_search to invoke this tool'. This tells the agent exactly when to use the tool, and the repeated reference to 'previous web_search call' clarifies that it is not for initiating new searches, distinguishing it from web_search.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

switch_modelA
Switches the default LLM model used for search and fetch operations, persisting the setting.

**Key Features:**
    - **Model Selection:** Change the AI model for web search synthesis and content fetching.
    - **Persistent Storage:** Model preference saved to ~/.config/multsearch/config.json.
    - **Immediate Effect:** New model used for all subsequent operations.

**Edge Cases & Best Practices:**
    - Use get_config_info to verify available models before switching.
    - Invalid model IDs may cause API errors in subsequent requests.
    - Model changes persist across sessions until explicitly changed again.
ParametersJSON Schema
NameRequiredDescriptionDefault
modelYesModel ID to switch to (e.g., 'glm-5.2').

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full responsibility for behavioral disclosure. It transparently reveals persistence to ~/.config/multsearch/config.json, immediate effect, and the risk of invalid model IDs causing API errors. It also notes that changes persist across sessions until explicitly changed, providing a complete behavioral picture.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections for key features and edge cases. Every section provides meaningful information without fluff. The length is appropriate for the tool's complexity and the rich context it provides.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one parameter, no output schema, no annotations), the description fully covers purpose, usage, persistence, immediate effect, and edge cases. It equips the agent with all necessary context to select and invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already covers 100% of the parameter semantics with a clear description and example. The tool description adds value by warning about invalid model IDs and suggesting verification via get_config_info, which enriches the parameter's context beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's action: 'Switches the default LLM model used for search and fetch operations, persisting the setting.' This specific verb+resource combination distinguishes it from sibling tools like web_search and get_config_info, which serve different functions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly advises using get_config_info to verify available models before switching, directly addressing when to use this tool versus an alternative. The 'Edge Cases & Best Practices' section further clarifies usage context and potential pitfalls.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

web_fetchA
Fetches and extracts complete content from a URL, returning it as a structured Markdown document.

**Key Features:**
    - **Full Content Extraction:** Retrieves and parses all meaningful content (text, images, links, tables, code blocks).
    - **Markdown Conversion:** Converts HTML structure to well-formatted Markdown with preserved hierarchy.
    - **Content Fidelity:** Maintains 100% content fidelity without summarization or modification.

**Edge Cases & Best Practices:**
    - Ensure URL is complete and accessible (not behind authentication or paywalls).
    - May not capture dynamically loaded content requiring JavaScript execution.
    - Large pages may take longer to process; consider timeout implications.
ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesValid HTTP/HTTPS web address pointing to the target page. Must be complete and accessible.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description discloses important behavioral details: full content extraction, Markdown conversion, 100% fidelity, limitations with dynamically loaded JavaScript content, and processing time for large pages. This adds significant value beyond the basic fetch operation and is more transparent than typical descriptions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections and bullet points, making it scannable. It is appropriately sized for the complexity, but there is minor redundancy (e.g., URL accessibility is mentioned in both the schema and the description), which prevents a perfect score.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has one parameter and no output schema, the description covers key aspects comprehensively: what it extracts, how it converts, fidelity, edge cases (auth, dynamic content, page size). This is sufficient for an agent to understand when and how the tool behaves, including expected return format (Markdown).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description covers the single 'url' parameter 100%, so the baseline is 3. The tool description reinforces that the URL must be 'complete and accessible' but does not add new semantic details beyond what the schema already states. No ambiguity or missing parameter information.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Fetches and extracts complete content') and names the resource ('a URL') and the outcome (returning structured Markdown). This clearly distinguishes it from sibling tools like web_search (search) and web_map (map).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage: fetching a specific URL's content. It provides edge cases and best practices but does not explicitly state when to use this tool over other siblings like web_search, nor does it mention exclusions or alternatives. The context is clear but not explicit about selection criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

web_mapA
Maps a website's structure by traversing it like a graph, discovering URLs and generating a comprehensive site map.

**Key Features:**
    - **Graph Traversal:** Explores website structure starting from root URL.
    - **Depth & Breadth Control:** Configure traversal limits to balance coverage and performance.
    - **Instruction Filtering:** Use natural language to focus crawler on specific content types.

**Edge Cases & Best Practices:**
    - Start with low max_depth (1-2) for initial exploration, increase if needed.
    - Use instructions to filter for specific content (e.g., "only documentation pages").
    - Large sites may hit timeout limits; adjust timeout and limit parameters accordingly.
ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesRoot URL to begin the mapping (e.g., 'https://docs.example.com').
limitNoTotal number of links to process before stopping.
timeoutNoMaximum time in seconds for the operation.
max_depthNoMaximum depth of mapping from the base URL.
max_breadthNoMaximum number of links to follow per page.
instructionsNoNatural language instructions for the crawler to filter or focus on specific content.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Since no annotations are provided, the description carries the burden of explaining behavior. It discloses graph traversal, configurable depth and breadth, instruction filtering, and potential timeout issues for large sites. This adds meaningful context beyond the schema, though it does not cover authentication or error handling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a clear opening statement, key features in bullet points, and a separate best practices section. It is concise, front-loaded, and every sentence adds value without excessive verbosity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the core functionality, configuration controls, and practical edge cases (timeouts, filtering). Since an output schema exists, the lack of return value details is acceptable. The description is complete enough for an agent to understand how to deploy and tune the tool effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already covers all parameters with descriptions, so the baseline is 3. The description enhances this by explaining how to use max_depth and instructions in practice (e.g., 'Start with low max_depth (1-2) for initial exploration'), adding value beyond the schema's bare parameter definitions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Maps a website's structure by traversing it like a graph, discovering URLs and generating a comprehensive site map.' This is specific and distinct from sibling tools like web_fetch or web_search, which focus on fetching individual pages or searching the web.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides practical usage tips such as starting with low max_depth (1-2) and using instructions to filter content. However, it does not explicitly mention when to choose this tool over alternatives or when not to use it, so the guidance is implied rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 7 tool updatesv0.2.1
    • First observedgemini_search
    • First observedget_config_info
    • First observedget_sources
    • First observedswitch_model
    • First observedweb_fetch
    • First observedweb_map
    • First observedweb_search

TDQS

A4.2/5.0
Disambiguation4/5

Each tool has a distinct purpose: configuration, search (two providers), source retrieval, URL fetch, site mapping, and model switching. The two search tools (web_search and gemini_search) overlap in function but descriptions clearly position gemini_search as a cross-validation path, so an agent can disambiguate. Overall boundaries are clear.

Naming Consistency3/5

Naming mixes verb-first and object-first conventions: get_config_info/get_sources/switch_model are verb_noun, while web_search/web_fetch/web_map/gemini_search are object_verb (or proper-noun_verb). This inconsistency is noticeable but all names are readable and lower_snake_case, so it is not chaotic.

Tool Count5/5

Seven tools is well within the ideal 3–15 range. Each tool covers a distinct capability (config, search, sources, fetch, map, model switch) and none seem redundant or filler.

Completeness5/5

The surface covers the full workflow: search via two providers, retrieve sources via session_id, fetch single URLs, map website structures, and manage configuration/model. There are no obvious dead ends; the only minor gap might be a way to clear cache, but that is not essential to the core search/fetch/map domain.

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    An MCP server that enables Claude to perform web searches using Perplexity's API with intelligent model selection based on query intent and support for domain and recency filtering.
    6
    4
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    MCP server for web page fetching (converting to Markdown/text with automatic fallback between Tavily and Firecrawl) and web search via Tavily.
    2
    MIT
  • A
    license
    B
    quality
    C
    maintenance
    MCP server for Claude Code that provides Google text search, web content extraction, and image search with dual-platform (Google Images + Pinterest) and AI visual analysis with quality scoring.
    5
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/liujp2015/multsearch-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server