Skip to main content
Glama
bpamiri
by bpamiri

call_stored_proc

Execute stored procedures in SQL Server databases to retrieve data, perform operations, or automate database tasks using defined parameter inputs.

Instructions

Execute a stored procedure.

Args: procedure: Procedure name, optionally with schema (e.g., 'dbo.sp_GetUser' or 'sp_GetUser') params: Input parameter values as dictionary (parameter names without @) Returns: Dictionary with: - procedure: Full procedure name - result_sets: List of result sets (each is a list of row dictionaries) - status: 'success' or error

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
procedureYes
paramsNo

Implementation Reference

  • The primary MCP tool handler for 'call_stored_proc'. Decorated with @mcp.tool(), it parses the procedure name, handles parameters, checks read-only mode, and calls the low-level ConnectionManager method.
    @mcp.tool() def call_stored_proc( procedure: str, params: dict[str, Any] | None = None, ) -> dict[str, Any]: """Execute a stored procedure. Args: procedure: Procedure name, optionally with schema (e.g., 'dbo.sp_GetUser' or 'sp_GetUser') params: Input parameter values as dictionary (parameter names without @) Returns: Dictionary with: - procedure: Full procedure name - result_sets: List of result sets (each is a list of row dictionaries) - status: 'success' or error """ try: manager = get_connection_manager() config = manager.config # Check read-only mode if config.read_only: return {"error": "Stored procedure execution disabled in read-only mode"} # Parse schema.procedure format if "." in procedure: parts = procedure.split(".", 1) schema = parts[0] proc_name = parts[1] else: schema = "dbo" proc_name = procedure full_name = f"{schema}.{proc_name}" # Build parameter tuple param_values = tuple(params.values()) if params else None # Execute stored procedure results = manager.call_stored_proc(full_name, param_values) return { "status": "success", "procedure": full_name, "result_sets": [results] if results else [], "row_count": len(results) if results else 0, } except QueryError as e: logger.error(f"Error calling stored procedure {procedure}: {e}") return {"error": str(e)} except Exception as e: logger.error(f"Unexpected error calling stored procedure {procedure}: {e}") return {"error": str(e)}
  • Low-level helper method in ConnectionManager that performs the actual stored procedure execution using pymssql's cursor.callproc.
    def call_stored_proc( self, proc_name: str, params: tuple[Any, ...] | None = None, ) -> list[dict[str, Any]]: """Execute a stored procedure and return results. Args: proc_name: Name of the stored procedure params: Optional procedure parameters Returns: List of result rows as dicts Raises: QueryError: If execution fails """ conn = self.get_connection() try: cursor = conn.cursor(as_dict=True) cursor.callproc(proc_name, params or ()) # Fetch results if any results = [] if cursor.description: results = list(cursor.fetchall()) conn.commit() return results except pymssql.Error as e: logger.error(f"Stored procedure execution failed: {e}") raise QueryError(f"Stored procedure '{proc_name}' failed: {e}") from e finally: cursor.close()

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/bpamiri/mssql-mcp'

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