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
| Name | Required | Description | Default |
|---|---|---|---|
| db | Yes | 数据库名称 | |
| host | Yes | 数据库主机地址 | |
| port | Yes | 数据库端口 | |
| pwd | Yes | 数据库密码 | |
| querySql | Yes | 要执行的SQL查询语句(仅支持SELECT等只读操作) | |
| user | Yes | 数据库用户名 |
Implementation Reference
- db-query-tool.js:296-335 (handler)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); } }
- mcp.full.config.js:159-198 (schema)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 ]
- db-query-tool.js:115-125 (helper)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 }); }