zoomeye_host_search
Search ZoomEye for internet-connected devices using specific queries like port numbers or service banners to identify hosts matching security research criteria.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query for ZoomEye (e.g., 'port:80') |
Implementation Reference
- src/index.ts:305-314 (handler)Tool registration and handler invocation for zoomeye_host_search.
server.tool( "zoomeye_host_search", { query: z.string().describe("Search query for ZoomEye (e.g., 'port:80')") }, async ({ query }) => { const result = await zeClient.searchHost(query); return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }], }; } ); - src/tools/zoomeye.ts:21-49 (handler)Implementation of the searchHost method which performs the API call to ZoomEye.
async searchHost(query: string): Promise<ZoomEyeResult> { const apiKey = configManager.get("ZOOMEYE_API_KEY"); if (!apiKey) { throw new McpError( ErrorCode.InvalidRequest, "ZOOMEYE_API_KEY is not configured" ); } try { const data = await this.fetch<any>("host/search", { method: "GET", headers: { "API-KEY": apiKey, }, }, { query, }); return ZoomEyeResultSchema.parse(data); } catch (error) { if (error instanceof McpError) throw error; throw new McpError( ErrorCode.InternalError, `ZoomEye error: ${(error as Error).message}` ); } } } - src/tools/zoomeye.ts:6-9 (schema)Schema validation for the ZoomEye search results.
export const ZoomEyeResultSchema = z.object({ total: z.number().optional(), matches: z.array(z.any()).optional(), });