# Spring Boot MySQL Project

This is a Spring Boot project configured with MySQL and HikariCP connection pool.

## Prerequisites

- Java 17 or later
- Maven 3.6 or later
- MySQL 8.0 or later

## Setup

1. Create a MySQL database named `demo`:
```sql
CREATE DATABASE demo;
```

2. Update the database credentials in `src/main/resources/application.properties` if they differ from the defaults:
- username: root
- password: root

## Running the Application

1. Build the project:
```bash
mvn clean install
```

2. Run the application:
```bash
mvn spring-boot:run
```
OR
```
java -jar path/to/jar/java-mysql-mcp-0.0.1-SNAPSHOT.jar
```

The application will start on `http://localhost:8080`

## Configuration

The application uses the following main configurations:

- Server port: 8080
- HikariCP connection pool size: 10
- Hibernate ddl-auto: update (automatically updates database schema)

You can modify these settings in `src/main/resources/application.properties`

`spring.main.web-application-type: none` is mandatory for connect to server via stdio, otherwise this error will be thrown:
```
2025-03-25T09:21:30.352-03:00  WARN 25352 --- [main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.context.ApplicationContextException: Failed to start bean 'webServerStartStop'
```

## Usage on MCP clients
db.hostenv value is the host and port of the database server, for example: `host:port`, eg: `localhost:3306`
```
{
  "mcpServers": {
    "blue-hero-database": {
      "command": "java",
      "args": [
        "-Dspring.ai.mcp.server.stdio=true",
        "-Dserver.port=8080",
        "-Ddb.hostenv=host:port",
        "-Ddb.schema=/demo",
        "-Ddb.user=username",
        "-Ddb.passwordenv=password",
        "-jar",
        "/path/to/java-mysql-mcp/target/java-mysql-mcp-0.0.1-SNAPSHOT.jar"
      ]
    }
  }
}
```

### Debug
You can use the mcp inspector for testing and debugging with the following command:
```
npx @modelcontextprotocol/inspector java -Dspring.ai.mcp.server.stdio=true -jar /path/to/project/target/java-mysql-mcp-0.0.1-SNAPSHOT.jar
```
The logs output will be created in ./mcp-mysql-stdio-server.log
