search_resources
Search Azure resources by name, type, or properties to find infrastructure components for analysis and visualization.
Instructions
Search Azure resources by name, type, or other properties
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query (searches name, type, resource group, location, tags) | |
| resourceType | No | Optional filter by resource type |
Implementation Reference
- src/server.ts:233-251 (handler)The core handler function `searchResources` that builds the topology graph if needed and filters resources matching the query across name, type, resource group, location, and tags, with optional type filter.
async function searchResources(query: string, resourceType?: string): Promise<GraphNode[]> { const topology = await buildTopology(); const searchLower = query.toLowerCase(); return topology.nodes.filter(node => { const matchesQuery = node.name.toLowerCase().includes(searchLower) || node.type.toLowerCase().includes(searchLower) || node.resourceGroup.toLowerCase().includes(searchLower) || node.location.toLowerCase().includes(searchLower) || (node.tags && Object.values(node.tags).some(tag => tag.toLowerCase().includes(searchLower) )); const matchesType = !resourceType || node.type.toLowerCase().includes(resourceType.toLowerCase()); return matchesQuery && matchesType; }); } - src/server.ts:342-355 (schema)Input schema definition for the search_resources tool.
inputSchema: { type: 'object', properties: { query: { type: 'string', description: 'Search query (searches name, type, resource group, location, tags)', }, resourceType: { type: 'string', description: 'Optional filter by resource type', }, }, required: ['query'], }, - src/server.ts:339-356 (registration)Registration of the search_resources tool in the ListTools handler, providing name, description, and schema.
{ name: 'search_resources', description: 'Search Azure resources by name, type, or other properties', inputSchema: { type: 'object', properties: { query: { type: 'string', description: 'Search query (searches name, type, resource group, location, tags)', }, resourceType: { type: 'string', description: 'Optional filter by resource type', }, }, required: ['query'], }, }, - src/server.ts:436-450 (handler)Dispatch handler in the CallToolRequestSchema that invokes searchResources and formats the MCP response.
case 'search_resources': { const { query, resourceType } = args as { query: string; resourceType?: string }; const results = await searchResources(query, resourceType); return { content: [ { type: 'text', text: `Found ${results.length} resources matching "${query}":\n\n` + results.map(r => `• ${r.name} (${r.type})\n Resource Group: ${r.resourceGroup}\n Location: ${r.location}\n ID: ${r.id}` ).join('\n\n'), }, ], }; }