mysql-mcp-server

MIT License
521
9
  • Linux
  • Apple

remote-capable server

The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.

Integrations

  • Provides read-only access to MySQL databases with tools for listing databases, exploring table schemas, and executing secure SQL queries with protection against data modification.

MySQL 데이터베이스 액세스 MCP 서버

이 MCP 서버는 MySQL 데이터베이스에 대한 읽기 전용 액세스를 제공합니다. 다음을 수행할 수 있습니다.

  • 사용 가능한 데이터베이스 나열
  • 데이터베이스의 테이블 나열
  • 테이블 스키마 설명
  • 읽기 전용 SQL 쿼리 실행

보안 기능

  • 읽기 전용 액세스 : SELECT, SHOW, DESCRIBE 및 EXPLAIN 문만 허용됩니다.
  • 쿼리 검증 : SQL 주입을 방지하고 모든 데이터 수정 시도를 차단합니다.
  • 쿼리 시간 초과 : 장기 실행 쿼리가 리소스를 소모하는 것을 방지합니다.
  • 행 제한 : 과도한 데이터 반환을 방지합니다.

설치

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": {} }

리스트_테이블

지정된 데이터베이스의 모든 테이블을 나열합니다.

매개변수 :

  • database (선택 사항): 데이터베이스 이름(지정하지 않으면 기본값 사용)

:

{ "server_name": "mysql", "tool_name": "list_tables", "arguments": { "database": "my_database" } }

설명_테이블

특정 테이블에 대한 스키마를 보여줍니다.

매개변수 :

  • database (선택 사항): 데이터베이스 이름(지정하지 않으면 기본값 사용)
  • table (필수): 테이블 이름

:

{ "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 설정의 기능을 검증하기 위한 테스트 스크립트가 포함되어 있습니다.

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

문제 해결

문제가 발생하는 경우:

  1. 오류 메시지는 서버 로그에서 확인하세요.
  2. MySQL 자격 증명 및 연결 세부 정보를 확인하세요
  3. MySQL 사용자에게 적절한 권한이 있는지 확인하세요.
  4. 귀하의 쿼리가 읽기 전용이고 올바르게 형식화되었는지 확인하십시오.

특허

이 프로젝트는 MIT 라이선스에 따라 라이선스가 부여되었습니다. 자세한 내용은 라이선스 파일을 참조하세요.

ID: ddav9xbsbv