Skip to main content
Glama
vedantparmar12

Azure Omni-Tool MCP Server

get_azure_context

Retrieve Azure environment data including subscriptions, resource groups, or custom KQL queries to analyze resources, with configurable caching for performance.

Instructions

Retrieves Azure environment context.

TYPES: subscriptions, resource_groups, resources, custom (KQL)

CACHING: 5min default, bypass_cache=true for fresh data

EXAMPLES:

  • Find VMs: custom_query = "Resources | where type == 'microsoft.compute/virtualmachines'"

  • Find by tag: custom_query = "Resources | where tags.env == 'prod'"

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
query_typeYes
subscription_idNoOptional subscription scope
resource_groupNoOptional resource group filter
custom_queryNoKQL query for Resource Graph
bypass_cacheNoForce fresh data

Implementation Reference

  • Main handler function for get_azure_context tool. Dispatches to specific query handlers (subscriptions, resource_groups, resources, custom) based on input.query_type, handles caching, logging, auditing, and returns ContextResponse.
    export async function handleGetAzureContext(input: GetAzureContextInput): Promise<ContextResponse> {
        const { query_type } = input;
        const operator = getOperatorInfo();
        const audit = createAuditContext(`context:${query_type}`, 'low', 'query');
    
        logger.debug('Context query', { query_type, subscription: input.subscription_id, rg: input.resource_group });
    
        const handler = queryHandlers.get(query_type);
        if (!handler) {
            return { query_type, success: false, error: `Unknown query type: ${query_type}` };
        }
    
        const response = await handler(input);
        response.correlation_id = audit.correlationId;
        response.operator = operator;
    
        if (response.success) {
            await audit.logSuccess();
            logger.info('Context query succeeded', { query_type, count: response.count, cached: response.cached });
        } else {
            await audit.logFailure(response.error || 'Unknown');
            logger.warn('Context query failed', { query_type, error: response.error });
        }
    
        return response;
    }
  • Zod schema defining input validation for get_azure_context tool, including query_type (required), optional filters, custom_query for KQL, and cache bypass.
    export const GetAzureContextSchema = z.object({
        query_type: z.enum(['subscriptions', 'resource_groups', 'resources', 'custom']).describe('Type of context query'),
        subscription_id: z.string().optional().describe('Subscription to scope query'),
        resource_group: z.string().optional().describe('Resource group filter'),
        custom_query: z.string().optional().describe('KQL query for Resource Graph'),
        bypass_cache: z.boolean().optional().default(false).describe('Force fresh data'),
    });
  • src/index.ts:28-32 (registration)
    Tool registration in the toolRegistry Map, linking name 'get_azure_context' to its tool metadata, schema, and handler wrapper.
    ['get_azure_context', {
        tool: getAzureContextTool,
        schema: GetAzureContextSchema,
        handler: args => handleGetAzureContext(GetAzureContextSchema.parse(args))
    }],
  • Tool metadata object with name, detailed description, and JSON schema for MCP tool listing.
    export const getAzureContextTool = {
        name: 'get_azure_context',
        description: `Retrieves Azure environment context.
    
    TYPES: subscriptions, resource_groups, resources, custom (KQL)
    
    CACHING: 5min default, bypass_cache=true for fresh data
    
    EXAMPLES: 
    - Find VMs: custom_query = "Resources | where type == 'microsoft.compute/virtualmachines'"
    - Find by tag: custom_query = "Resources | where tags.env == 'prod'"`,
        inputSchema: {
            type: 'object',
            properties: {
                query_type: { type: 'string', enum: ['subscriptions', 'resource_groups', 'resources', 'custom'] },
                subscription_id: { type: 'string', description: 'Optional subscription scope' },
                resource_group: { type: 'string', description: 'Optional resource group filter' },
                custom_query: { type: 'string', description: 'KQL query for Resource Graph' },
                bypass_cache: { type: 'boolean', description: 'Force fresh data', default: false },
            },
            required: ['query_type'],
        },
    };

Latest Blog Posts

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/vedantparmar12/Azure-_MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server