Skip to main content
Glama
xuejike

Database Query MCP Server

by xuejike

query_oracle

Execute read-only Oracle database queries to retrieve data safely. Run SELECT statements and other non-modifying operations to access database information without risk of data changes.

Instructions

执行Oracle数据库查询(只读模式)

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
dbYes数据库名称
hostYes数据库主机地址
portYes数据库端口
pwdYes数据库密码
querySqlYes要执行的SQL查询语句(仅支持SELECT等只读操作)
userYes数据库用户名

Implementation Reference

  • Main handler function for 'query_oracle' tool. Validates the SQL is read-only, connects to Oracle database using oracledb, executes the query, returns structured results or error, and ensures connection cleanup.
    async executeOracle(config) { const { querySql } = config; // 检查是否为只读查询 if (!this.isReadOnlyQuery(querySql)) { return { success: false, error: "不允许执行非只读操作。仅支持SELECT、SHOW、DESCRIBE等查询语句。", code: "READONLY_VIOLATION" }; } let connection; try { // 建立数据库连接 connection = await this.getOracleConnection(config); // 执行查询 const result = await this.executeOracleQuery(connection, querySql); // 返回结果 return { success: true, data: result.data, columns: result.columns, rowCount: result.rowCount }; } catch (error) { // 错误处理 return { success: false, error: error.message, code: error.code || 'DATABASE_ERROR' }; } finally { // 关闭数据库连接 await this.closeOracleConnection(connection); } }
  • Input schema definition, description, name, required parameters, and annotations for the 'query_oracle' tool.
    query_oracle: { name: "query_oracle", description: "执行Oracle数据库查询(只读模式)", inputSchema: { type: "object", properties: { host: { type: "string", description: "数据库主机地址" }, port: { type: "integer", description: "数据库端口" }, user: { type: "string", description: "数据库用户名" }, pwd: { type: "string", description: "数据库密码" }, db: { type: "string", description: "数据库名称" }, querySql: { type: "string", description: "要执行的SQL查询语句(仅支持SELECT等只读操作)" } }, required: ["host", "port", "user", "pwd", "db", "querySql"] }, annotations: { title: "Oracle数据库查询工具(只读)", readOnlyHint: true, destructiveHint: false, idempotentHint: false, openWorldHint: false }
  • mcp-server.js:48-50 (registration)
    Tool dispatch registration in CallToolRequestSchema handler: maps 'query_oracle' calls to dbTool.executeOracle method.
    case config.tools.query_oracle.name: result = await dbTool.executeOracle(request.params.arguments); break;
  • mcp-server.js:80-84 (registration)
    Tool list registration in ListToolsRequestSchema handler: includes 'query_oracle' in the advertised tools list.
    config.tools.query_mysql, config.tools.query_postgresql, config.tools.query_mssql, config.tools.query_oracle ]
  • Helper function to establish Oracle database connection using oracledb library.
    async getOracleConnection(config) { const { host, port, user, pwd, db } = config; const oracledb = require('oracledb'); return await oracledb.getConnection({ host, port, user, password: pwd, database: db }); }

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/xuejike/coding-db-mcp'

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