#!/bin/bash
# Add a MySQL connection to the MCP server
#
# Usage: ./add.sh <name> <host> <user> <password> [port] [database]
#
# Examples:
# ./add.sh prod db.example.com admin secret
# ./add.sh dev localhost root password 3306 mydb
CONTAINER_NAME="${MCP_CONTAINER:-mysql-mcp}"
usage() {
echo "Usage: $0 <name> <host> <user> <password> [port] [database]"
echo ""
echo "Arguments:"
echo " name Unique name for this connection"
echo " host MySQL server hostname"
echo " user MySQL username"
echo " password MySQL password"
echo " port MySQL port (default: 3306)"
echo " database Default database (optional)"
echo ""
echo "Examples:"
echo " $0 prod db.example.com admin secret"
echo " $0 dev localhost root password 3306 mydb"
exit 1
}
if [ $# -lt 4 ]; then
usage
fi
NAME="$1"
HOST="$2"
USER="$3"
PASSWORD="$4"
PORT="${5:-3306}"
DATABASE="${6:-}"
# 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
# Build the arguments JSON
if [ -n "$DATABASE" ]; then
ARGS_JSON="{\"name\": \"$NAME\", \"host\": \"$HOST\", \"port\": $PORT, \"user\": \"$USER\", \"password\": \"$PASSWORD\", \"database\": \"$DATABASE\"}"
else
ARGS_JSON="{\"name\": \"$NAME\", \"host\": \"$HOST\", \"port\": $PORT, \"user\": \"$USER\", \"password\": \"$PASSWORD\"}"
fi
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():
args = $ARGS_JSON
result = await call_tool('add_connection', args)
for content in result:
if hasattr(content, 'text'):
print(content.text)
asyncio.run(main())
"