
MySQL 데이터베이스 액세스 MCP 서버
이 MCP 서버는 MySQL 데이터베이스에 대한 읽기 전용 액세스를 제공합니다. 다음을 수행할 수 있습니다.
사용 가능한 데이터베이스 나열
데이터베이스의 테이블 나열
테이블 스키마 설명
읽기 전용 SQL 쿼리 실행
보안 기능
읽기 전용 액세스 : SELECT, SHOW, DESCRIBE 및 EXPLAIN 문만 허용됩니다.
쿼리 검증 : SQL 주입을 방지하고 모든 데이터 수정 시도를 차단합니다.
쿼리 시간 초과 : 장기 실행 쿼리가 리소스를 소모하는 것을 방지합니다.
행 제한 : 과도한 데이터 반환을 방지합니다.
Related MCP server: MCP Server for MySQL
설치
1. 다음 방법 중 하나를 사용하여 설치하세요.
NPM에서 설치
지엑스피1
소스에서 빌드
# Clone the repository
git clone https://github.com/dpflucas/mysql-mcp-server.git
cd mysql-mcp-server
# Install dependencies and build
npm install
npm run build
Smithery를 통해 설치
Smithery를 통해 Claude AI용 MySQL 데이터베이스 액세스 MCP 서버를 자동으로 설치하려면:
npx -y @smithery/cli install @dpflucas/mysql-mcp-server --client claude
2. 환경 변수 구성
서버에는 다음과 같은 환경 변수가 필요합니다.
MYSQL_HOST : 데이터베이스 서버 호스트 이름
MYSQL_PORT : 데이터베이스 서버 포트(기본값: 3306)
MYSQL_USER : 데이터베이스 사용자 이름
MYSQL_PASSWORD : 데이터베이스 비밀번호(선택 사항이지만 보안 연결에 권장됨)
MYSQL_DATABASE : 기본 데이터베이스 이름(선택 사항)
3. MCP 설정에 추가
MCP 설정 파일에 다음 구성을 추가하세요.
npm을 통해 설치한 경우(옵션 1):
{
"mcpServers": {
"mysql": {
"command": "npx",
"args": ["mysql-mcp-server"],
"env": {
"MYSQL_HOST": "your-mysql-host",
"MYSQL_PORT": "3306",
"MYSQL_USER": "your-mysql-user",
"MYSQL_PASSWORD": "your-mysql-password",
"MYSQL_DATABASE": "your-default-database"
},
"disabled": false,
"autoApprove": []
}
}
}
소스에서 빌드한 경우(옵션 2):
{
"mcpServers": {
"mysql": {
"command": "node",
"args": ["/path/to/mysql-mcp-server/build/index.js"],
"env": {
"MYSQL_HOST": "your-mysql-host",
"MYSQL_PORT": "3306",
"MYSQL_USER": "your-mysql-user",
"MYSQL_PASSWORD": "your-mysql-password",
"MYSQL_DATABASE": "your-default-database"
},
"disabled": false,
"autoApprove": []
}
}
}
사용 가능한 도구
목록_데이터베이스
MySQL 서버에서 접근 가능한 모든 데이터베이스를 나열합니다.
매개변수 : 없음
예 :
{
"server_name": "mysql",
"tool_name": "list_databases",
"arguments": {}
}
리스트_테이블
지정된 데이터베이스의 모든 테이블을 나열합니다.
매개변수 :
예 :
{
"server_name": "mysql",
"tool_name": "list_tables",
"arguments": {
"database": "my_database"
}
}
설명_테이블
특정 테이블에 대한 스키마를 보여줍니다.
매개변수 :
예 :
{
"server_name": "mysql",
"tool_name": "describe_table",
"arguments": {
"database": "my_database",
"table": "my_table"
}
}
실행_쿼리
읽기 전용 SQL 쿼리를 실행합니다.
매개변수 :
query (필수): SQL 쿼리(SELECT, SHOW, DESCRIBE 및 EXPLAIN 문만 허용됨)
database (선택 사항): 데이터베이스 이름(지정하지 않으면 기본값 사용)
예 :
{
"server_name": "mysql",
"tool_name": "execute_query",
"arguments": {
"database": "my_database",
"query": "SELECT * FROM my_table LIMIT 10"
}
}
고급 연결 풀 구성
MySQL 연결 풀 동작을 더 세밀하게 제어하려면 추가 매개변수를 구성할 수 있습니다.
{
"mcpServers": {
"mysql": {
"command": "npx",
"args": ["mysql-mcp-server"],
"env": {
"MYSQL_HOST": "your-mysql-host",
"MYSQL_PORT": "3306",
"MYSQL_USER": "your-mysql-user",
"MYSQL_PASSWORD": "your-mysql-password",
"MYSQL_DATABASE": "your-default-database",
"MYSQL_CONNECTION_LIMIT": "10",
"MYSQL_QUEUE_LIMIT": "0",
"MYSQL_CONNECT_TIMEOUT": "10000",
"MYSQL_IDLE_TIMEOUT": "60000",
"MYSQL_MAX_IDLE": "10"
},
"disabled": false,
"autoApprove": []
}
}
}
이러한 고급 옵션을 사용하면 다음을 수행할 수 있습니다.
MYSQL_CONNECTION_LIMIT : 풀의 최대 연결 수를 제어합니다(기본값: 10)
MYSQL_QUEUE_LIMIT : 대기열에 대한 최대 연결 요청 수를 설정합니다(기본값: 0, 무제한)
MYSQL_CONNECT_TIMEOUT : 연결 시간 초과를 밀리초 단위로 조정합니다(기본값: 10000)
MYSQL_IDLE_TIMEOUT : 연결이 해제되기 전에 유휴 상태로 유지될 수 있는 시간(밀리초)을 구성합니다.
MYSQL_MAX_IDLE : 풀에 보관할 최대 유휴 연결 수를 설정합니다.
테스트
서버에는 MySQL 설정의 기능을 검증하기 위한 테스트 스크립트가 포함되어 있습니다.
1. 테스트 데이터베이스 설정
이 스크립트는 테스트 데이터베이스, 테이블 및 샘플 데이터를 생성합니다.
# Set your MySQL credentials as environment variables
export MYSQL_HOST=localhost
export MYSQL_PORT=3306
export MYSQL_USER=your_username
export MYSQL_PASSWORD=your_password
# Run the setup script
npm run test:setup
2. MCP 도구 테스트
이 스크립트는 각 MCP 도구를 테스트 데이터베이스와 비교 테스트합니다.
# Set your MySQL credentials as environment variables
export MYSQL_HOST=localhost
export MYSQL_PORT=3306
export MYSQL_USER=your_username
export MYSQL_PASSWORD=your_password
export MYSQL_DATABASE=mcp_test_db
# Run the tools test script
npm run test:tools
3. 모든 테스트 실행
설정 및 도구 테스트를 모두 실행하려면:
# Set your MySQL credentials as environment variables
export MYSQL_HOST=localhost
export MYSQL_PORT=3306
export MYSQL_USER=your_username
export MYSQL_PASSWORD=your_password
# Run all tests
npm test
문제 해결
문제가 발생하는 경우:
오류 메시지는 서버 로그에서 확인하세요.
MySQL 자격 증명 및 연결 세부 정보를 확인하세요
MySQL 사용자에게 적절한 권한이 있는지 확인하세요.
귀하의 쿼리가 읽기 전용이고 올바르게 형식화되었는지 확인하십시오.
특허
이 프로젝트는 MIT 라이선스에 따라 라이선스가 부여되었습니다. 자세한 내용은 라이선스 파일을 참조하세요.