Skip to main content
Glama

mcp_execute_procedure

Execute SQL Server stored procedures with parameters to retrieve database results for data analysis and manipulation tasks.

Instructions

Execute a SQL Server stored procedure with parameters and return results

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
sp_nameYesFully qualified stored procedure name (schema.name), e.g. "api.usp_BusquedaByIdUnico_v2"
paramsNoParameters to pass to the stored procedure as key-value pairs

Implementation Reference

  • Main handler function that validates permissions, executes the SQL stored procedure using the database connection pool, handles parameters, and returns the recordset or error.
    export const mcp_execute_procedure = async (args: { sp_name: string; params?: object }): Promise<ToolResult<any[]>> => {
      const { sp_name, params } = args;
      console.log('Executing mcp_execute_procedure with:', args);
    
      // Security validation for stored procedure execution
      const permission = validateStoredProcedurePermission(sp_name);
      if (!permission.allowed) {
        return { success: false, error: permission.message || 'Stored procedure execution not allowed' };
      }
    
      try {
        const pool = getPool();
        const request = pool.request();
    
        if (params) {
          for (const [key, value] of Object.entries(params)) {
            request.input(key, value);
          }
        }
    
        const result = await request.execute(sp_name);
        return { success: true, data: result.recordset };
      } catch (error: any) {
        console.error(`Error in mcp_execute_procedure for SP ${sp_name}: ${error.message}`);
        return { success: false, error: error.message };
      }
    };
  • src/tools.ts:82-99 (registration)
    Tool registration in the MCP_MSQL_TOOLS array, defining the tool name, description, and input schema. This array is used by the MCP server for tool listing.
    {
      name: "mcp_execute_procedure",
      description: "Execute a SQL Server stored procedure with parameters and return results",
      inputSchema: {
        type: "object",
        properties: {
          sp_name: {
            type: "string",
            description: "Fully qualified stored procedure name (schema.name), e.g. \"api.usp_BusquedaByIdUnico_v2\""
          },
          params: {
            type: "object",
            description: "Parameters to pass to the stored procedure as key-value pairs"
          }
        },
        required: ["sp_name"]
      }
    },
  • JSON schema defining the input parameters for the mcp_execute_procedure tool: required sp_name string and optional params object.
    inputSchema: {
      type: "object",
      properties: {
        sp_name: {
          type: "string",
          description: "Fully qualified stored procedure name (schema.name), e.g. \"api.usp_BusquedaByIdUnico_v2\""
        },
        params: {
          type: "object",
          description: "Parameters to pass to the stored procedure as key-value pairs"
        }
      },
      required: ["sp_name"]
    }
  • src/server.ts:64-66 (registration)
    MCP server registration for ListToolsRequestSchema that returns the MCP_MSQL_TOOLS array containing the tool definition.
    server.setRequestHandler(ListToolsRequestSchema, async () => ({
        tools: MCP_MSQL_TOOLS
    }));
  • Re-export of the mcp_execute_procedure handler from dataOperations.ts, used by mcp-server.ts to provide tool handlers.
    export {
      mcp_execute_procedure, // Execute stored procedure
      mcp_execute_query       // Execute SQL query
    } from './dataOperations.js';

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/MCPQL'

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