Skip to main content
Glama
1Levick3

PostgreSQL MCP Server

by 1Levick3

execute_custom_query

Run custom SQL queries on PostgreSQL databases using a secure connection. Manage schemas, debug issues, migrate data, and monitor performance with controlled access and optional query timeout.

Instructions

Execute a custom SQL query against the database. WARNING: Use with care. Do not expose to untrusted input.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
connectionStringYesPostgreSQL connection string
queryYesSQL query to execute
timeoutNoOptional query timeout in milliseconds
valuesNoOptional parameter values for the query

Implementation Reference

  • The main handler function that executes the custom SQL query against PostgreSQL using DatabaseConnection, handles connection, execution, error catching, and returns a CustomQueryResult.
    export async function executeCustomQuery( connectionString: string, query: string, values: unknown[] = [], options: { timeout?: number } = {} ): Promise<CustomQueryResult> { const db = DatabaseConnection.getInstance(); try { await db.connect(connectionString); const result = await db.query(query, values, options); return { success: true, message: 'Query executed successfully', details: result }; } catch (error) { return { success: false, message: `Query execution failed: ${error instanceof Error ? error.message : String(error)}`, details: null }; } finally { await db.disconnect(); } }
  • Input JSON Schema for the execute_custom_query tool, specifying required connectionString and query, optional values and timeout.
    inputSchema: { type: 'object', properties: { connectionString: { type: 'string', description: 'PostgreSQL connection string' }, query: { type: 'string', description: 'SQL query to execute' }, values: { type: 'array', description: 'Optional parameter values for the query', items: { type: 'string' } }, timeout: { type: 'number', description: 'Optional query timeout in milliseconds' } }, required: ['connectionString', 'query'] }
  • src/index.ts:28-56 (registration)
    Tool definition object for 'execute_custom_query' including name, description, and inputSchema, used to populate server capabilities.tools.
    const TOOL_DEFINITIONS = [ { name: 'execute_custom_query', description: 'Execute a custom SQL query against the database. WARNING: Use with care. Do not expose to untrusted input.', inputSchema: { type: 'object', properties: { connectionString: { type: 'string', description: 'PostgreSQL connection string' }, query: { type: 'string', description: 'SQL query to execute' }, values: { type: 'array', description: 'Optional parameter values for the query', items: { type: 'string' } }, timeout: { type: 'number', description: 'Optional query timeout in milliseconds' } }, required: ['connectionString', 'query'] } } ];
  • src/index.ts:101-117 (registration)
    Switch case in CallToolRequestSchema handler that dispatches to executeCustomQuery for the 'execute_custom_query' tool and formats the MCP response.
    case 'execute_custom_query': { const { connectionString, query, values, timeout } = request.params.arguments as { connectionString: string; query: string; values?: unknown[]; timeout?: number; }; const result = await executeCustomQuery(connectionString, query, values ?? [], { timeout }); return { content: [ { type: 'text', text: JSON.stringify(result, null, 2) } ] }; }
  • TypeScript interface defining the output structure returned by the executeCustomQuery handler.
    export interface CustomQueryResult { success: boolean; message: string; details: unknown; }

Other Tools

Related Tools

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/1Levick3/postgresql-mcp-server'

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