Skip to main content
Glama
tannerpace

Oracle Database MCP Server

query_database

Execute read-only SQL SELECT queries against Oracle databases to retrieve data, column information, and query performance metrics for analysis and reporting.

Instructions

Execute a read-only SQL SELECT query against the Oracle database. Returns rows, column names, and execution metrics.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
maxRowsNoMaximum number of rows to return (optional)
queryYesThe SQL query to execute (SELECT statements only)
timeoutNoQuery timeout in milliseconds (optional)

Implementation Reference

  • The handler function for the query_database tool. Validates input using Zod schema, logs the execution, calls executeQuery helper, and returns structured success/error response.
    export async function queryDatabase(input: QueryDatabaseInput) { try { // Validate input const validated = QueryDatabaseSchema.parse(input); logger.info('Executing query via MCP tool', { queryLength: validated.query.length, maxRows: validated.maxRows, }); // Execute the query const result = await executeQuery(validated.query, { maxRows: validated.maxRows, timeout: validated.timeout, }); return { success: true, data: result, }; } catch (err: any) { logger.error('Query database tool failed', { error: err.message }); return { success: false, error: err.message || 'Unknown error occurred', }; } }
  • Zod input schema for validating query_database tool parameters: query (required string), maxRows and timeout (optional numbers).
    export const QueryDatabaseSchema = z.object({ query: z.string().min(1, 'Query cannot be empty'), maxRows: z.number().int().positive().optional(), timeout: z.number().int().positive().optional(), });
  • src/server.ts:38-60 (registration)
    Registration of query_database tool in the tools list returned by tools/list, including JSON schema equivalent for input.
    { name: 'query_database', description: 'Execute a read-only SQL SELECT query against the Oracle database. Returns rows, column names, and execution metrics.', inputSchema: { type: 'object', properties: { query: { type: 'string', description: 'The SQL query to execute (SELECT statements only)', }, maxRows: { type: 'number', description: 'Maximum number of rows to return (optional)', }, timeout: { type: 'number', description: 'Query timeout in milliseconds (optional)', }, }, required: ['query'], }, },
  • src/server.ts:90-101 (registration)
    Dispatch logic in tools/call handler: validates args with schema and invokes the queryDatabase handler.
    if (name === 'query_database') { const validated = QueryDatabaseSchema.parse(args); const result = await queryDatabase(validated); return { content: [ { type: 'text' as const, text: JSON.stringify(result, null, 2), }, ], };

Other 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/tannerpace/mcp-oracle-database'

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