zoomeye_vuldb_by_keyword
Query ZoomEye's vulnerability database by keyword to retrieve detailed security vulnerabilities including CVE IDs, severity, and affected versions for specific products or vendors.
Instructions
Search ZoomEye's vulnerability database for security vulnerabilities based on a specified keyword.
This function queries the ZoomEye vulnerability database to retrieve information about known security vulnerabilities associated with specific products, vendors. Results include vulnerability details such as CVE IDs, severity ratings, affected versions, and vulnerability descriptions.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| keyword | Yes | Search term to query the vulnerability database. This can be a product name, vendor name (e.g., "nginx", "mysql", "tomcat", "WordPress", "hikvision", "huawei"). | |
| page_size | No | Number of records per page, default is 10, maximum is 100. |
Implementation Reference
- src/mcp_server_zoomeye/server.py:298-302 (handler)Handler: When the tool 'zoomeye_vuldb_by_keyword' is called, it extracts the 'keyword' argument and calls zoomeye_service.query_vulnerability_by_keyword(keyword).
case ZoomeyeTools.ZOOMEYE_VULDB_BY_KEYWORD: keyword = arguments.get("keyword") if not keyword: raise ValueError("Missing required argument: keyword") result = await zoomeye_service.query_vulnerability_by_keyword(keyword) - Schema/Registration: The tool 'zoomeye_vuldb_by_keyword' is registered with its name, description, and input schema (keyword required, page_size optional).
Tool( name=ZoomeyeTools.ZOOMEYE_VULDB_BY_KEYWORD, description="""Search ZoomEye's vulnerability database for security vulnerabilities based on a specified keyword. This function queries the ZoomEye vulnerability database to retrieve information about known security vulnerabilities associated with specific products, vendors. Results include vulnerability details such as CVE IDs, severity ratings, affected versions, and vulnerability descriptions.""", inputSchema={ "type": "object", "properties": { "keyword": { "type": "string", "description": """Search term to query the vulnerability database. This can be a product name, vendor name (e.g., "nginx", "mysql", "tomcat", "WordPress", "hikvision", "huawei").""", }, "page_size": { "type": "integer", "description": "Number of records per page, default is 10, maximum is 100.", "default": 10, "maximum": 100 } }, "required": ["keyword"], }, ) - Helper: ZoomeyeService.query_vulnerability_by_keyword() method that makes the actual HTTP GET request to 'https://api.zoomeye.ai/v2/search/vuldb' with keyword and page_size params.
async def query_vulnerability_by_keyword(self, keyword: str, page_size: int = 10): """Query vulnerability by keyword. Args: keyword (str): The keyword to query. Returns: dict: The API response data. Raises: ValueError: If API key is not provided or API request fails. """ url = "https://api.zoomeye.ai/v2/search/vuldb" headers = {"API-KEY": self.key, "Content-Type": "application/json"} try: client = await self.get_client() async with client: response = await client.get(url, headers=headers, params={"search": keyword, "page_size": page_size}) response.raise_for_status() # Raise exception for HTTP errors return response.json() except httpx.HTTPError as e: import traceback traceback.print_exc() raise ValueError(f"Error querying ZoomEye API: {str(e)}") except json.JSONDecodeError: raise ValueError("Invalid JSON response from ZoomEye API") - src/mcp_server_zoomeye/server.py:23-24 (registration)Registration: Enum definition of ZOOMEYE_VULDB_BY_KEYWORD = 'zoomeye_vuldb_by_keyword' used as the tool's unique identifier.
ZOOMEYE_VULDB_BY_KEYWORD = "zoomeye_vuldb_by_keyword" """Query vulnerability by keyword."""