#!/bin/bash
# Execute a SQL query on a MySQL connection
#
# Usage: ./query.sh <connection> <query>
#
# Examples:
# ./query.sh prod "SELECT * FROM users LIMIT 10"
# ./query.sh dev "SHOW DATABASES"
CONTAINER_NAME="${MCP_CONTAINER:-mysql-mcp}"
usage() {
echo "Usage: $0 <connection> <query>"
echo ""
echo "Arguments:"
echo " connection Name of the connection to use"
echo " query SQL query to execute"
echo ""
echo "Examples:"
echo " $0 prod \"SELECT * FROM users LIMIT 10\""
echo " $0 dev \"SHOW DATABASES\""
exit 1
}
if [ $# -lt 2 ]; then
usage
fi
CONNECTION="$1"
QUERY="$2"
# Check if container is running
if ! docker ps --format '{{.Names}}' | grep -q "^${CONTAINER_NAME}$"; then
echo "Error: Container '${CONTAINER_NAME}' is not running."
exit 1
fi
# Escape the query for Python
ESCAPED_QUERY=$(printf '%s' "$QUERY" | sed 's/\\/\\\\/g; s/"/\\"/g')
docker exec -i "${CONTAINER_NAME}" python -c "
import asyncio
import json
import sys
sys.path.insert(0, '/app/src')
from server import call_tool
async def main():
result = await call_tool('execute_query', {'connection': '$CONNECTION', 'query': \"$ESCAPED_QUERY\"})
for content in result:
if hasattr(content, 'text'):
print(content.text)
asyncio.run(main())
"