mysql_query
Execute SQL queries on MySQL databases to retrieve, modify, or manage data, supporting prepared statements for secure parameter handling.
Instructions
Execute a SQL query on the connected MySQL database
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | SQL query to execute | |
| parameters | No | Parameters for prepared statement (optional) |
Implementation Reference
- src/index.ts:306-344 (handler)The handler function that executes the provided SQL query (with optional parameters) on the connected MySQL database using the pool.execute method. Handles both SELECT (returns rows) and other queries (affected rows, insert ID).private async handleQuery(args: any) { if (!this.pool) { throw new Error("Not connected to MySQL. Use mysql_connect first."); } const { query, parameters = [] } = args; if (!query || typeof query !== "string") { throw new Error("Query is required and must be a string"); } try { const [results, fields] = await this.pool.execute(query, parameters); // Handle different types of results if (Array.isArray(results)) { return { content: [ { type: "text", text: `Query executed successfully. ${results.length} rows affected.\n\nResults:\n${JSON.stringify(results, null, 2)}`, }, ], }; } else { const resultInfo = results as mysql.ResultSetHeader; return { content: [ { type: "text", text: `Query executed successfully.\nAffected rows: ${resultInfo.affectedRows}\nInserted ID: ${resultInfo.insertId || "N/A"}`, }, ], }; } } catch (error) { throw new Error(`Query execution failed: ${error instanceof Error ? error.message : String(error)}`); } }
- src/index.ts:136-156 (schema)The input schema for the mysql_query tool, defining the expected parameters: query (required string) and optional parameters array.{ name: "mysql_query", description: "Execute a SQL query on the connected MySQL database", inputSchema: { type: "object", properties: { query: { type: "string", description: "SQL query to execute", }, parameters: { type: "array", description: "Parameters for prepared statement (optional)", items: { type: "string", }, }, }, required: ["query"], }, },
- src/index.ts:251-252 (registration)The switch case that registers and dispatches calls to the mysql_query handler function within the CallToolRequestSchema handler.case "mysql_query": return await this.handleQuery(args);