@chenpu17/web-bridge-mcp
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., "@@chenpu17/web-bridge-mcpsearch for latest React documentation"
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.
@chenpu17/web-bridge-mcp
支持代理配置的 MCP Server,提供 Web 搜索、网页抓取,以及官方 Context7 文档能力透传。
专为内网环境设计,让无法直接访问外网的 AI 编程工具(如 Claude Code、OpenCode)也能获取互联网信息。
特性
代理支持: 支持
system(自动检测系统代理)、none(不使用代理)、自定义代理 URLWindows 系统代理检测: 自动读取 Windows 注册表获取系统代理配置
SSL 证书忽略: 支持忽略 SSL 证书校验,解决代理导致的证书问题
多种搜索引擎: DuckDuckGo(免费)、Exa AI、博查 AI
网页抓取: 支持 Markdown、纯文本、HTML 格式输出
官方 Context7 透传: 直连
https://mcp.context7.com/mcp,暴露官方resolve-library-id/query-docs工具Context7 默认开启: 启动后默认同时暴露搜索、抓取、Context7 文档工具,无需额外参数
Context7 可选鉴权: 支持
CONTEXT7_API_KEY,不配置也可匿名基础使用Context7 容错更稳: 远端工具发现失败时保留内置 fallback 元数据,临时网络抖动时自动重连重试一次
npx 运行: 无需安装,一条命令即可使用
Related MCP server: webx-mcp-server
快速开始
# 使用 npx 直接运行(推荐)
npx @chenpu17/web-bridge-mcp --proxy system --ignore-ssl
# 或全局安装
npm install -g @chenpu17/web-bridge-mcp
web-bridge-mcp --proxy system --ignore-ssl使用方法
基本用法
# 使用 DuckDuckGo 搜索(默认,免费无需配置)
npx @chenpu17/web-bridge-mcp
# 使用系统代理
npx @chenpu17/web-bridge-mcp --proxy system
# 指定代理地址
npx @chenpu17/web-bridge-mcp --proxy http://proxy.company.com:8080
# 忽略 SSL 证书校验(解决代理证书问题)
npx @chenpu17/web-bridge-mcp --proxy system --ignore-ssl启用 Context7
# Context7 默认已启用
npx @chenpu17/web-bridge-mcp
# 内网推荐:系统代理 + 忽略 SSL + Context7
npx @chenpu17/web-bridge-mcp --proxy system --ignore-ssl
# 配置 Context7 API Key(可选,提高限额)
npx @chenpu17/web-bridge-mcp --proxy system --ignore-ssl --context7-api-key ctx7sk_xxx
# 如需显式关闭 Context7
npx @chenpu17/web-bridge-mcp --no-context7搜索引擎配置
# DuckDuckGo(默认,免费)
npx @chenpu17/web-bridge-mcp --web-search duckduckgo
# Exa AI(AI 优化搜索)
npx @chenpu17/web-bridge-mcp --web-search exa
# 博查 AI(中文友好,需要 API Key)
npx @chenpu17/web-bridge-mcp --web-search bocha --bocha-api-key sk-xxx完整示例(企业内网推荐配置)
# 使用系统代理 + 忽略 SSL + DuckDuckGo + 官方 Context7
npx @chenpu17/web-bridge-mcp --proxy system --ignore-ssl
# 使用系统代理 + 忽略 SSL + 博查搜索 + 官方 Context7
npx @chenpu17/web-bridge-mcp --proxy system --ignore-ssl --web-search bocha --bocha-api-key sk-xxx环境变量
变量名 | 说明 |
| 代理地址 |
| 博查 AI 的 Bearer Token |
| Context7 API Key(可选) |
| Context7 MCP URL,默认 |
| 是否启用 Context7;默认启用,设置为 |
| 忽略 SSL 证书校验 (设置为 |
| 设置为 |
命令行参数
参数 | 说明 | 默认值 |
| 代理设置: system | none | http://... | none |
| 搜索引擎: duckduckgo | exa | bocha | duckduckgo |
| 博查 AI API Key | - |
| 请求超时时间(毫秒) | 30000 |
| 忽略 SSL 证书校验 | false |
| 禁用官方 Context7 MCP 透传 | 默认启用 |
| Context7 API Key(可选) | - |
| Context7 MCP URL |
|
检测系统代理
npx @chenpu17/web-bridge-mcp detect-proxy诊断代理连接
测试代理配置是否正常工作,包括连接测试、搜索测试和抓取测试:
# 使用系统代理进行诊断
npx @chenpu17/web-bridge-mcp diagnose
# 使用指定代理进行诊断
npx @chenpu17/web-bridge-mcp diagnose --proxy http://proxy.company.com:8080
# 忽略 SSL 证书进行诊断
npx @chenpu17/web-bridge-mcp diagnose --proxy system --ignore-ssl
# 默认会额外测试 Context7 连通性
npx @chenpu17/web-bridge-mcp diagnose --proxy system --ignore-ssl
# 如需跳过 Context7 测试
npx @chenpu17/web-bridge-mcp diagnose --proxy system --ignore-ssl --no-context7诊断命令会自动测试:
代理检测 - 检查代理配置是否正确
连接测试 - 测试是否能通过代理访问互联网
搜索测试 - 测试 DuckDuckGo 搜索功能
抓取测试 - 测试网页内容抓取功能
Context7 测试(默认启用)- 测试官方 Context7 工具发现与调用
每个步骤都会显示详细的测试结果和响应时间,帮助快速定位问题。
如果你准备发布新版本,建议在本机或目标网络环境里至少手动跑一次 diagnose,确认代理、匿名访问或 API Key 配置都正常。
MCP 工具
web_search
搜索互联网获取信息。
参数:
query(string): 搜索查询内容numResults(number, 可选): 返回结果数量,默认 8
web_fetch
抓取指定 URL 的网页内容。
参数:
url(string): 要抓取的 URLformat(enum, 可选): 返回格式 - markdown / text / html,默认 markdowntimeout(number, 可选): 超时时间(秒),最大 120
resolve-library-id
官方 Context7 工具,解析库名并返回 Context7 兼容的 library ID。
参数:
query(string): 当前要完成的任务或问题libraryName(string): 要查找的库名
query-docs
官方 Context7 工具,根据 library ID 检索最新文档和代码示例。
参数:
libraryId(string): Context7 兼容库 ID,例如/vercel/next.jsquery(string): 具体问题或任务
在 Claude Code 中使用
在 Claude Code 的配置文件中添加 MCP Server:
{
"mcpServers": {
"proxy-web": {
"command": "npx",
"args": [
"@chenpu17/web-bridge-mcp",
"--proxy", "system",
"--ignore-ssl",
"--web-search", "duckduckgo"
]
}
}
}如果使用博查搜索:
{
"mcpServers": {
"proxy-web": {
"command": "npx",
"args": [
"@chenpu17/web-bridge-mcp",
"--proxy", "system",
"--ignore-ssl",
"--web-search", "bocha",
"--bocha-api-key", "sk-xxx"
]
}
}
}如果 Context7 需要更高限额,可追加 API Key:
{
"mcpServers": {
"proxy-web": {
"command": "npx",
"args": [
"@chenpu17/web-bridge-mcp",
"--proxy", "system",
"--ignore-ssl",
"--context7-api-key", "ctx7sk_xxx"
]
}
}
}搜索引擎对比
搜索引擎 | 免费 | 鉴权方式 | 特点 |
DuckDuckGo | ✅ | 无需 | 免费、无限制,结果质量一般 |
Exa AI | ❌ | 无需(MCP端点) | AI 优化搜索,结果质量高 |
博查 AI | ❌ | Bearer Token | 中文搜索友好 |
常见问题
1. 代理证书错误
如果遇到 UNABLE_TO_VERIFY_LEAF_SIGNATURE 错误,请添加 --ignore-ssl 参数:
npx @chenpu17/web-bridge-mcp --proxy system --ignore-ssl2. Windows 系统代理未检测到
确保系统代理已正确配置:
打开「设置」→「网络和 Internet」→「代理」
检查「使用代理服务器」是否已开启
3. 博查搜索认证失败
确保 API Key 正确,可以通过环境变量或命令行参数配置:
# 方式1: 命令行参数
npx @chenpu17/web-bridge-mcp --web-search bocha --bocha-api-key sk-xxx
# 方式2: 环境变量
export BOCHA_API_KEY=sk-xxx
npx @chenpu17/web-bridge-mcp --web-search bocha4. Context7 是否必须鉴权?
不是必须。官方远端 MCP 在很多场景下支持匿名基础使用,但限额更低。
如果你在企业内网长期使用,建议配置 CONTEXT7_API_KEY 或 --context7-api-key,这样更稳定,也更接近官方推荐方式:
export CONTEXT7_API_KEY=ctx7sk_xxx
npx @chenpu17/web-bridge-mcp --proxy system --ignore-ssl开发
# 克隆仓库
git clone https://github.com/chenpu/web-bridge-mcp.git
cd web-bridge-mcp
# 安装依赖
npm install
# 开发模式
npm run dev -- --proxy system --ignore-ssl
# 构建
npm run build
# 运行构建产物
npm start -- --proxy system --ignore-ssl
# 运行测试
npm test
# 代码质量检查
npm run lint
# 格式化代码
npm run format
# 类型检查
npm run typecheck贡献指南
Fork 本仓库
创建特性分支 (
git checkout -b feature/amazing-feature)运行测试确保通过 (
npm test)运行 lint 检查 (
npm run lint)提交更改
推送到分支
创建 Pull Request
技术栈
Runtime: Node.js >= 18
Language: TypeScript
Framework: MCP SDK
Testing: Vitest
Linting: ESLint + TypeScript ESLint
Formatting: Prettier
安全性
SSRF 防护
本项目实现了多层 SSRF (Server-Side Request Forgery) 防护:
内网 IP 段阻止: 自动阻止访问私有 IP 地址
敏感端口过滤: 禁止访问数据库、邮件等敏感服务端口
IPv6 支持: 同时检测 IPv4 和 IPv6 内网地址
本地地址拦截: 阻止 localhost 和本地回环地址
最佳实践
使用环境变量存储敏感信息(API Keys)
支持忽略 SSL 证书校验(仅限受信任的网络环境)
响应大小限制(5MB)
请求超时控制
License
MIT © chenpu
Available Tools
4 toolsquery-docsQuery DocumentationARead-onlyIdempotent
Official Context7 documentation query tool. Use this to retrieve authoritative docs and examples after you know the library ID. Prefer this over web_search/web_fetch for library and framework documentation. Retrieves and queries up-to-date documentation and code examples from Context7 for any programming library or framework.
You must call 'Resolve Context7 Library ID' tool first to obtain the exact Context7-compatible library ID required to use this tool, UNLESS the user explicitly provides a library ID in the format '/org/project' or '/org/project/version' in their query.
Do not call this tool more than 3 times per question.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | What to look up in the library's documentation, scoped to a single concept. Be specific and include relevant details, but keep each query to one topic — if the user's question spans multiple distinct concepts, make a separate call per concept instead of combining them, unless the question is about how the concepts interact. Good: 'How to set up authentication with JWT in Express.js' or 'React useEffect cleanup function examples'. Bad (too vague): 'auth' or 'hooks'. Bad (too broad): 'routing and auth and caching in Next.js'. The query is sent to the Context7 API for processing. Do not include any sensitive or confidential information such as API keys, passwords, credentials, personal data, or proprietary code in your query. | |
| libraryId | Yes | Exact Context7-compatible library ID (e.g., '/mongodb/docs', '/vercel/next.js', '/supabase/supabase', '/vercel/next.js/v14.3.0-canary.87') retrieved from 'resolve-library-id' or directly from user query in the format '/org/project' or '/org/project/version'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations already covering safety (readOnly, idempotent, non-destructive), the description adds valuable behavioral context: the prerequisite to resolve the library ID, a rate limit (max 3 calls per question), and the fact that it retrieves up-to-date docs and code examples. These details go beyond annotation equivalents and help the agent understand the tool's constraints.
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, starting with the tool's core purpose, then proceeding to usage constraints. Every sentence serves a purpose: official status, preferred use cases, prerequisite action, exemption for explicit IDs, and call limit. No redundant phrasing or fluff.
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 2-parameter tool with rich schema descriptions and clear annotations, the description covers all key operational aspects: official nature, prerequisite resolution, alternatives to avoid, and call limits. Even though there is no output schema, the tool's return type (docs/examples) is implicit, and the description provides sufficient context for correct invocation.
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 input schema provides 100% coverage with detailed descriptions for both parameters—libraryId includes examples and origin ('resolve-library-id' or user query), and query includes specificity guidance, examples, and security warnings. The tool description adds no extra parameter meaning beyond what the schema already offers, so baseline 3 is appropriate.
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 identifies the tool as the official Context7 documentation query tool with a specific action ('retrieve authoritative docs and examples') and resource ('library documentation'). It distinguishes itself from web_search/web_fetch by stating it should be preferred for library/framework documentation, and references resolve-library-id as the prerequisite tool.
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 instructs to prefer this tool over web_search/web_fetch for library/framework documentation, providing clear when-to-use guidance. It mandates calling 'Resolve Context7 Library ID' first unless the user supplies a library ID, and imposes a hard limit of no more than 3 calls per question—specific, actionable usage rules.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resolve-library-idResolve Context7 Library IDARead-onlyIdempotent
Official Context7 library resolver. Use this first when the user asks about a library, framework, SDK, package, API usage, installation, configuration, migration, or code examples. Prefer this over web_search for software documentation tasks. Resolves a package/product name to a Context7-compatible library ID and returns matching libraries.
You MUST call this function before 'Query Documentation' tool to obtain a valid Context7-compatible library ID UNLESS the user explicitly provides a library ID in the format '/org/project' or '/org/project/version' in their query.
Each result includes:
Library ID: Context7-compatible identifier (format: /org/project)
Name: Library or package name
Description: Short summary
Code Snippets: Number of available code examples
Source Reputation: Authority indicator (High, Medium, Low, or Unknown)
Benchmark Score: Quality indicator (100 is the highest score)
Versions: List of versions if available. Use one of those versions if the user provides a version in their query. The format of the version is /org/project/version.
For best results, select libraries based on name match, source reputation, snippet coverage, benchmark score, and relevance to your use case.
Selection Process:
Analyze the query to understand what library/package the user is looking for
Return the most relevant match based on:
Name similarity to the query (exact matches prioritized)
Description relevance to the query's intent
Documentation coverage (prioritize libraries with higher Code Snippet counts)
Source reputation (consider libraries with High or Medium reputation more authoritative)
Benchmark Score: Quality indicator (100 is the highest score)
Response Format:
Return the selected library ID in a clearly marked section
Provide a brief explanation for why this library was chosen
If multiple good matches exist, acknowledge this but proceed with the most relevant one
If no good matches exist, clearly state this and suggest query refinements
For ambiguous queries, request clarification before proceeding with a best-guess match.
IMPORTANT: Do not call this tool more than 3 times per question. If you cannot find what you need after 3 calls, use the best result you have.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | What to look up in the library's documentation. This is used to rank library results by relevance to what the user is trying to accomplish. The query is sent to the Context7 API for processing. Do not include any sensitive or confidential information such as API keys, passwords, credentials, personal data, or proprietary code in your query. | |
| libraryName | Yes | Library name to search for and retrieve a Context7-compatible library ID. Use the official library name with proper punctuation — e.g., 'Next.js' instead of 'nextjs', 'Customer.io' instead of 'customerio', 'Three.js' instead of 'threejs'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and openWorldHint=true, but the description goes beyond by detailing result fields (Library ID, Name, Description, Code Snippets, Source Reputation, Benchmark Score, Versions), the selection process, and the response format. It also discloses the limit of 3 calls and the instruction to suggest query refinements if no matches. No contradiction with annotations.
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 long but well-structured with sections for intro, usage, result fields, selection process, and response format. It is front-loaded with the primary purpose and usage rule. Some redundancy exists between the result fields list and the selection criteria (e.g., code snippets and reputation are mentioned twice), but overall it earns its length without being wasteful.
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?
There is no output schema, so the description carries full responsibility for explaining return values—and it does comprehensively, listing all result fields and their meanings. It also covers edge cases: ambiguous queries, multiple matches, no matches, and version handling. Given the tool's central role in the workflow, the description is complete and self-sufficient.
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 baseline is 3. The description adds extra meaning by giving examples for libraryName ('Next.js' instead of 'nextjs', 'Customer.io' instead of 'customerio') and a security warning for query (do not include sensitive info). It also explains that query is used for ranking relevance, which the schema only partially implies. These enrichments justify a score above baseline.
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 it is an 'Official Context7 library resolver' that 'Resolves a package/product name to a Context7-compatible library ID and returns matching libraries.' It specifies a concrete verb and resource, and explicitly differentiates from siblings by stating 'Prefer this over web_search for software documentation tasks.' This makes the tool's purpose distinct.
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 gives explicit usage guidance: 'Use this first when the user asks about a library...' and 'Prefer this over web_search for software documentation tasks.' It also mandates a sequence: 'You MUST call this function before the Query Documentation tool' unless the user provides a library ID. It further provides exclusion rules (max 3 calls) and handles ambiguous queries with clarification.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
web_fetchA
Fetches content from a specified URL and converts it to readable format
Use this when you have a specific URL to retrieve (not for searching)
Takes a URL and optional format as input
Fetches the URL content, converts to requested format (markdown by default)
Returns the full page content in the specified format
Usage notes:
Use web_search first to find URLs, then use this tool to fetch their content
If the user is asking for library/framework/package/API documentation, prefer Context7 tools before web_fetch
The URL must be a fully-formed valid URL
HTTP URLs will be automatically upgraded to HTTPS
Format options: "markdown" (default), "text", or "html"
Response size limit: 5MB
Maximum timeout: 120 seconds
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | 要抓取的 URL | |
| format | No | 返回格式 (默认: markdown) | markdown |
| timeout | No | 超时时间(秒),1-120秒 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses URL format requirements, automatic HTTP->HTTPS upgrade, format options with default, response size limit (5MB), and timeout (120s). This goes beyond the minimal and provides useful operational expectations.
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 main statement followed by usage notes. It front-loads the core purpose and each bullet adds value without redundant repetition, making it appropriately sized for the tool's complexity.
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 lacking an output schema, the description covers input requirements, behavior, format options, size/timeout limits, and relationship to sibling tools. This is a self-sufficient explanation for how to invoke web_fetch 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?
Schema coverage is 100% and already includes URL, format enum, and timeout range. The description adds extra meaning by explaining the URL must be fully-formed and valid, and that HTTP URLs are upgraded to HTTPS, which supplements 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 opens with a specific verb+resource: 'Fetches content from a specified URL and converts it to readable format.' It clearly distinguishes itself from searching and sibling tools like web_search by stating 'not for searching.'
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?
Explicit guidance is provided: 'Use this when you have a specific URL to retrieve (not for searching)' and 'Use web_search first to find URLs, then use this tool to fetch their content.' It also mentions preferring Context7 for documentation, giving clear when-to-use and alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
web_searchA
Search the web using DuckDuckGo - performs real-time web searches
Provides up-to-date information for current events and recent data
Returns search results with titles, URLs, and snippets
Use this tool for accessing information beyond your knowledge cutoff
Performs searches in a single API call
Usage notes:
Use web_search to find information; use web_fetch to retrieve specific URLs
If the question is about library/framework/package/API documentation, prefer Context7 tools first
Free to use, no API key required
Supports both English and Chinese queries
Best for general web searches and finding recent information
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | 搜索查询内容 | |
| numResults | No | 返回结果数量 (默认: 8) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It discloses key behaviors: single API call, free/no API key required, supports English and Chinese, returns search result snippets. It does not mention rate limits or potential search restrictions, but covers the main user-relevant aspects.
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 bullets and a separate usage notes section, front-loading the core purpose. Some redundancy exists between 'performs real-time web searches' and 'provides up-to-date information', and the bullet list is slightly verbose, but overall it remains focused and readable.
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 two-parameter tool with no output schema, the description provides complete context: what it does, return format (titles, URLs, snippets), usage guidelines, alternative tools, language support, and auth requirements. It is sufficient for an agent 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?
Schema description coverage is 100%, so the baseline is 3. The description does not add further meaning to the query or numResults parameters beyond what the schema already states (e.g., query content and result count with default). It names the tool's output but not parameter-specific behavior.
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 real-time web searches using DuckDuckGo and returns titles, URLs, and snippets. It also explicitly distinguishes from siblings by directing URL retrieval to web_fetch and documentation queries to Context7, making the purpose unmistakable.
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 guidance on when to use this tool: for general web searches, current information, and queries beyond the model's knowledge cutoff. It also names alternatives: web_fetch for specific URLs and Context7 for API/library documentation, giving clear 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.
4 tool updates
v1.0.19- First observed
query-docs - First observed
resolve-library-id - First observed
web_fetch - First observed
web_search
TDQS
The tools are clearly separated by purpose: web_search vs web_fetch are distinct (search vs retrieve URL), and resolve-library-id vs query-docs are distinct (resolve ID vs query docs). There is slight overlap between web_search and resolve-library-id for library queries, but explicit guidance to prefer Context7 tools resolves this ambiguity.
The naming convention is inconsistent: web_search and web_fetch use snake_case with verb_noun pattern, while resolve-library-id and query-docs use kebab-case. This mixed pattern (underscore vs hyphen) creates a lack of uniformity across the tool set, making it harder to anticipate tool names.
With only 4 tools, the set is tightly scoped for a web-bridge purpose: one search, one fetch, one library resolver, and one doc query tool. Each tool earns its place, and the count is well within the ideal 3-15 range.
The set covers complete workflows: general web search leads to web_fetch for content retrieval, and library resolution leads to query-docs for documentation. No obvious dead ends or missing operations are apparent for the stated hybrid purpose of bridging general web and library documentation access.
Maintenance
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
An MCP server that provides tools to discover and retrieve podcast episodes transcripts.
MCP server for web extraction and rendering via AceDataCloud WebExtrator
Free remote MCP server for fetching public web pages through a rotating proxy pool.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceAn MCP server that bridges to the Context7 API, enabling querying documentation context, searching projects, and retrieving project metadata.735MIT
- AlicenseAqualityBmaintenanceAn MCP server for web content extraction, providing tools to fetch clean text, extract links, query by CSS selector, and search the web via DuckDuckGo.4MIT
- AlicenseNot gradedqualityDmaintenanceMCP server for documentation search that automatically indexes web documentation sites and provides semantic, full-text, or hybrid search capabilities.14MIT
- AlicenseAqualityAmaintenanceA self-hosted MCP server providing web search and URL fetching tools, running locally without external API keys or accounts.2539MIT
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/chenpu17/web-bridge-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server