multsearch-mcp
Integrates with Google Search via the Gemini API to perform grounded searches (Path B), providing answers with citations from Google's index for cross-verification of search results.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@multsearch-mcpsearch for 'machine learning trends 2025' and cross-validate"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
multsearch-mcp
Claude Code 双路联网搜索 MCP
两条独立搜索路径交叉验证 · 信源显式回传 · 国内可用
这是什么
一个为 Claude Code 设计的本地 MCP 服务器。装上之后,Claude 回答前会真的去网上查,并把信源显式带回来,而不是凭印象瞎答。
核心是两条独立的搜索路径,互相交叉验证:
路径 | 工具 | 索引来源 | 模型 |
Path A |
| Tavily + Firecrawl + SearXNG 找源 | LLM 基于信源 summarize(默认火山方舟 Ark |
Path B |
| Google Search grounding | Gemini 2.5 Flash |
两条路用的是完全不同的索引(Tavily/Firecrawl/SearXNG vs Google),所以适合对关键事实做双路交叉验证。除此之外还有网页抓取 / 站点扫描 / 信源回查 / 配置诊断工具。
工具 | 它干什么 |
| Tavily + Firecrawl + SearXNG 并行找源 → LLM 综合成带 |
| Gemini + Google grounding 直接给 grounded 答案 + Google 引用(Path B) |
| 用 |
| 抓任意网页转结构化 Markdown(Tavily extract → Firecrawl 兜底) |
| 扫描一个站点,列出全部可访问 URL |
| 查看当前配置 + 测试 API 连通性 + 列出可用模型 |
| 切换默认 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。
没装
uv?curl -LsSf https://astral.sh/uv/install.sh | sh然后重开终端。
API Key 申请指南
主 LLM Key 必需,其余可选。最佳零成本组合 = Ark + Tavily + Gemini,三家都有免费额度,全程不用绑卡。SearXNG 默认免费开启、无需 key,作为 web_search 第三路信源锦上添花。
1. 火山方舟 Ark(主 LLM,必需)
项 | 说明 |
控制台 | |
Key 前缀 |
|
模型 |
|
计费 | 按 token,有免费 / 体验额度 |
Ark 走国内直连,Tavily / Firecrawl / Gemini 走代理。
2. Tavily(强烈建议,可选)
项 | 说明 |
注册 | |
免费额度 | 1,000 次 / 月,无需绑卡 |
用途 |
|
不配 Tavily:web_search 退化为 Firecrawl + SearXNG 两路;web_fetch / web_map 不可用。
3. Firecrawl(可选)
项 | 说明 |
注册 | |
免费额度 | 1,000 credits / 月,无需绑卡 |
用途 |
|
4. Gemini(可选 · 第二路搜索)
项 | 说明 |
取 Key | |
用途 |
|
注意 | Google API 在中国大陆需走代理( |
5. SearXNG(可选 · 第三路信源)
项 | 说明 |
是什么 | 自建/公开的元搜索引擎,聚合 Google / Bing / DuckDuckGo 等多引擎结果 |
默认地址 |
|
用途 |
|
Key | 无需 API Key |
引擎 |
|
代理 | 代码内 |
注意 | 实例需在 |
工作原理(配置形态)
向导跑完后,项目根目录的 .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 |
| 入 git 后团队共享 | 默认 |
user |
| 本机所有项目 | 一台机器多项目都用 |
local |
| 仅本机本项目 | 个人调试 |
新手选 project,把 .mcp.json 提交进 git 即可。
进阶配置
切换 Provider / 模型
向导第 2 步可选 Ark / 自定义。已装好想改:重新跑向导,或直接编辑 .mcp.json 的 env 段。运行时也可用 switch_model 工具切换模型并持久化到 ~/.config/multsearch/config.json。
完整环境变量参考
变量 | 默认值 | 说明 |
|
|
|
| — | OpenAI 兼容端点(Ark: |
| — | 必需 |
|
| LLM 模型,可用 |
| — | 推理模型建议 |
| — | 可选, |
| — | 可选, |
| — | 可选, |
|
| Gemini 模型 |
|
| SearXNG 实例地址(第三路信源) |
|
| 逗号分隔的引擎列表 |
|
| 关闭则不采集 SearXNG 信源 |
| — | 中国大陆访问 Tavily/Firecrawl/Gemini 需代理(SearXNG 直连不受影响) |
| — | 国内 API( |
|
| 详细日志 |
|
|
|
|
| 日志输出目录 |
配置优先级:环境变量 > ~/.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.toml 的 version(强制重建 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 toolsgemini_searchA
Performs a web search via Gemini + Google Search grounding (Google's index).
Independent of Tavily/Firecrawl — use as a second search path for cross-validation.
Returns the grounded answer plus Google-sourced citations.
Requires GEMINI_API_KEY (get a free key at https://aistudio.google.com/apikey).
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Clear natural-language search query. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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 the search mechanism, output type (grounded answer plus citations), independence from other tools, and API key requirement. However, it lacks details on rate limits, error handling, or what happens if the API key is invalid.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, each serving a distinct purpose: function, differentiation/use case, and setup requirement. No fluff, front-loaded with the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite missing output schema details, the description covers purpose, usage context, and authentication. The tool is simple with one parameter, and the description provides enough for an agent to decide when and how to use it. Output schema exists, so return values need not be described.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the description adds no parameter-specific information beyond what the schema already provides. The baseline of 3 is appropriate since the schema fully documents the single 'query' parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Performs a web search via Gemini + Google Search grounding', identifying the specific verb, resource, and mechanism. It also distinguishes itself from siblings by noting 'Independent of Tavily/Firecrawl', making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'use as a second search path for cross-validation', providing a clear when-to-use context. It also names the alternatives (Tavily/Firecrawl) and mentions the prerequisite GEMINI_API_KEY, giving explicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes | Session ID from previous web_search call. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes | Model ID to switch to (e.g., 'glm-5.2'). |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Valid HTTP/HTTPS web address pointing to the target page. Must be complete and accessible. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Root URL to begin the mapping (e.g., 'https://docs.example.com'). | |
| limit | No | Total number of links to process before stopping. | |
| timeout | No | Maximum time in seconds for the operation. | |
| max_depth | No | Maximum depth of mapping from the base URL. | |
| max_breadth | No | Maximum number of links to follow per page. | |
| instructions | No | Natural language instructions for the crawler to filter or focus on specific content. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
web_searchA
Performs a deep web search: Tavily + Firecrawl find sources, then the LLM (default GLM-5.2 via Ark) synthesizes a cited answer.
Returns:
- session_id string pass to get_sources to retrieve full source list
- content string LLM's source-based answer (with [n] inline citations)
- sources_count int
- cached bool true if response was served from in-memory result cache
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | Optional model ID for this request only. Used ONLY when user explicitly provided. | |
| query | Yes | Clear, self-contained natural-language search query. | |
| extra_sources | No | Number of additional reference results from Tavily/Firecrawl. Set 0 to disable. Default 0 = auto quota (Tavily 8 + Firecrawl 6). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and it delivers meaningful context: it discloses the underlying services (Tavily, Firecrawl), the default model (GLM-5.2 via Ark), and even the caching behavior via the 'cached' flag. This goes beyond a simple 'search tool' and gives the agent insight into how results are generated and possibly stale.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured: a purpose sentence followed by a bulleted return list. The return list is necessary because no output schema exists, and each bullet earns its place. It is slightly more verbose than necessary but remains focused and front-loaded with the main function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the search pipeline, default model, return values, and caching, and it links to a sibling tool (get_sources) via session_id. With no output schema, this is essential. It does not provide explicit alternatives for search-related choices (gemini_search), but that gap is primarily for usage guidelines. Overall, the description is reasonably complete for a read-only search tool with a rich schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already explains all three parameters clearly. The description adds little to parameter understanding, though it does connect the returned session_id to get_sources, which is output-related. Baseline 3 applies per the rubric.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool 'performs a deep web search' using Tavily + Firecrawl and synthesizes a cited answer with an LLM. This specific pipeline (multi-source + synthesis) distinguishes it from siblings like gemini_search, which likely uses a different search mechanism.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'deep web search' implies when to use it, and the return field 'pass to get_sources' suggests a workflow. However, it does not explicitly state when to use this tool versus alternatives like gemini_search, web_fetch, or web_map, nor does it mention any exclusions.
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.
7 tool updates
v0.2.1- First observed
gemini_search - First observed
get_config_info - First observed
get_sources - First observed
switch_model - First observed
web_fetch - First observed
web_map - First observed
web_search
TDQS
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 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.
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.
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
Docs: https://docs.keenable.ai/mcp-server Keenable is a free, remote MCP server that gives agents access to the web index. Search the web with ranked results and date/site filters, then fetch any indexed page as clean markdown. Works out of the box with no account or API key.
- RampifyOAuthdev.rampify
SEO MCP server: crawl your site, find AI-visibility gaps, and ship the fix from your coding agent.
Related MCP Servers
- AlicenseAqualityDmaintenanceAn 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.64MIT
- AlicenseNot gradedqualityBmaintenanceA high-performance MCP server for web fetching in Claude Code using Firecrawl backend with automatic fallback.2MIT
- AlicenseAqualityCmaintenanceMCP server for web page fetching (converting to Markdown/text with automatic fallback between Tavily and Firecrawl) and web search via Tavily.2MIT
- AlicenseBqualityCmaintenanceMCP 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.5MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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