Skip to main content
Glama
hendrickcastro

MCP CosmosDB

mcp_execute_query

Execute SQL queries on CosmosDB containers to retrieve and analyze document data with parameter support and cross-partition capabilities.

Instructions

Execute a SQL query against a CosmosDB container

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
container_idYesThe ID of the container to query
queryYesThe SQL query to execute
parametersNoOptional parameters for the query as key-value pairs
max_itemsNoMaximum number of items to return
enable_cross_partitionNoWhether to enable cross-partition queries

Implementation Reference

  • Core implementation of the mcp_execute_query tool handler. Executes SQL queries on CosmosDB containers, supports parameters, limits results, and returns documents with query statistics.
    export const mcp_execute_query = async (args: { 
      container_id: string; 
      query: string; 
      parameters?: Record<string, any>;
      max_items?: number;
      enable_cross_partition?: boolean;
    }): Promise<ToolResult<{ documents: any[]; stats: QueryStats }>> => {
      const { container_id, query, parameters, max_items = 100, enable_cross_partition = true } = args;
      console.log('Executing mcp_execute_query with:', args);
    
      try {
        const container = getContainer(container_id);
        const startTime = Date.now();
    
        // Prepare query spec
        const querySpec = {
          query,
          parameters: parameters ? Object.entries(parameters).map(([name, value]) => ({ name: `@${name}`, value })) : []
        };
    
        // Execute query
        const queryIterator = container.items.query(querySpec, {
          maxItemCount: max_items
        });
    
        const { resources: documents, requestCharge } = await queryIterator.fetchAll();
        const executionTimeMs = Date.now() - startTime;
    
        const stats: QueryStats = {
          requestCharge,
          executionTimeMs,
          documentCount: documents.length
        };
    
        return { success: true, data: { documents, stats } };
      } catch (error: any) {
        console.error(`Error in mcp_execute_query for container ${container_id}: ${error.message}`);
        return { success: false, error: error.message };
      }
    };
  • Tool metadata and JSON input schema definition for mcp_execute_query, used for tool discovery and validation.
    {
      name: "mcp_execute_query",
      description: "Execute a SQL query against a CosmosDB container",
      inputSchema: {
        type: "object",
        properties: {
          container_id: {
            type: "string",
            description: "The ID of the container to query"
          },
          query: {
            type: "string",
            description: "The SQL query to execute"
          },
          parameters: {
            type: "object",
            description: "Optional parameters for the query as key-value pairs"
          },
          max_items: {
            type: "number",
            description: "Maximum number of items to return",
            default: 100
          },
          enable_cross_partition: {
            type: "boolean",
            description: "Whether to enable cross-partition queries",
            default: true
          }
        },
        required: ["container_id", "query"]
      }
    },
  • src/server.ts:63-66 (registration)
    Registration of tool list handler, exposing MCP_COSMOSDB_TOOLS (including mcp_execute_query schema) for MCP tool discovery.
    // @ts-ignore - Bypass TypeScript errors from the SDK's types
    server.setRequestHandler(ListToolsRequestSchema, async () => ({
        tools: MCP_COSMOSDB_TOOLS
    }));
  • src/server.ts:103-105 (registration)
    Dispatch/execution routing for mcp_execute_query tool call in the MCP CallToolRequest handler.
    case 'mcp_execute_query':
        result = await toolHandlers.mcp_execute_query(input as any);
        break;
  • Type definitions for QueryStats used in the tool's return type.
    export interface QueryStats {
      requestCharge: number;
      executionTimeMs: number;
      documentCount: number;
      indexHitRatio?: number;
    }

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/hendrickcastro/MCPCosmosDB'

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