Skip to main content
Glama
designcomputer

MySQL MCP Server

테스트PyPI - 다운로드 대장간 배지

MySQL MCP 서버

MySQL 데이터베이스와의 안전한 상호작용을 지원하는 모델 컨텍스트 프로토콜(MCP) 구현입니다. 이 서버 구성 요소는 AI 애플리케이션(호스트/클라이언트)과 MySQL 데이터베이스 간의 통신을 원활하게 하여, 제어된 인터페이스를 통해 데이터베이스 탐색 및 분석을 더욱 안전하고 체계적으로 수행합니다.

참고 : MySQL MCP 서버는 독립형 서버로 사용하도록 설계된 것이 아니라 AI 애플리케이션과 MySQL 데이터베이스 간의 통신 프로토콜 구현으로 설계되었습니다.

특징

  • 사용 가능한 MySQL 테이블을 리소스로 나열합니다.

  • 표의 내용을 읽어보세요

  • 적절한 오류 처리를 통해 SQL 쿼리 실행

  • 환경 변수를 통한 안전한 데이터베이스 액세스

  • 종합 로깅

Related MCP server: PostgreSQL MCP Server

설치

수동 설치

지엑스피1

Smithery를 통해 설치

Smithery를 통해 Claude Desktop에 MySQL MCP 서버를 자동으로 설치하려면:

npx -y @smithery/cli install mysql-mcp-server --client claude

구성

다음 환경 변수를 설정하세요.

MYSQL_HOST=localhost     # Database host
MYSQL_PORT=3306         # Optional: Database port (defaults to 3306 if not specified)
MYSQL_USER=your_username
MYSQL_PASSWORD=your_password
MYSQL_DATABASE=your_database

용법

클로드 데스크톱과 함께

claude_desktop_config.json 에 다음을 추가하세요:

{
  "mcpServers": {
    "mysql": {
      "command": "uv",
      "args": [
        "--directory", 
        "path/to/mysql_mcp_server",
        "run",
        "mysql_mcp_server"
      ],
      "env": {
        "MYSQL_HOST": "localhost",
        "MYSQL_PORT": "3306",
        "MYSQL_USER": "your_username",
        "MYSQL_PASSWORD": "your_password",
        "MYSQL_DATABASE": "your_database"
      }
    }
  }
}

Visual Studio Code를 사용하여

mcp.json 에 다음을 추가하세요:

{
  "servers": {
      "mysql": {
            "type": "stdio",
            "command": "uvx",
            "args": [
                "--from",
                "mysql-mcp-server",
                "mysql_mcp_server"
            ],
      "env": {
        "MYSQL_HOST": "localhost",
        "MYSQL_PORT": "3306",
        "MYSQL_USER": "your_username",
        "MYSQL_PASSWORD": "your_password",
        "MYSQL_DATABASE": "your_database"
      }
  }
}

참고: 이 기능을 사용하려면 uv를 설치해야 합니다.

MCP Inspector를 사용한 디버깅

MySQL MCP 서버는 단독으로 실행하거나 Python 명령줄에서 직접 실행하도록 설계되지 않았지만 MCP Inspector를 사용하여 디버깅할 수 있습니다.

MCP Inspector는 MCP 구현을 테스트하고 디버깅하는 편리한 방법을 제공합니다.

# Install dependencies
pip install -r requirements.txt
# Use the MCP Inspector for debugging (do not run directly with Python)

MySQL MCP 서버는 Claude Desktop과 같은 AI 애플리케이션과 통합되도록 설계되었으며 독립형 Python 프로그램으로 직접 실행하면 안 됩니다.

개발

# Clone the repository
git clone https://github.com/yourusername/mysql_mcp_server.git
cd mysql_mcp_server
# Create virtual environment
python -m venv venv
source venv/bin/activate  # or `venv\Scripts\activate` on Windows
# Install development dependencies
pip install -r requirements-dev.txt
# Run tests
pytest

보안 고려 사항

  • 환경 변수나 자격 증명을 커밋하지 마십시오.

  • 최소한의 필수 권한이 있는 데이터베이스 사용자를 사용하세요

  • 프로덕션 사용을 위해 쿼리 허용 목록을 구현하는 것을 고려하세요.

  • 모든 데이터베이스 작업을 모니터링하고 기록합니다.

보안 모범 사례

이 MCP 구현이 작동하려면 데이터베이스 액세스가 필요합니다. 보안을 위해:

  1. 최소한의 권한이 있는 전담 MySQL 사용자 생성

  2. 루트 자격 증명이나 관리 계정을 사용하지 마십시오.

  3. 필요한 작업에만 데이터베이스 액세스를 제한합니다.

  4. 감사 목적으로 로깅을 활성화합니다 .

  5. 데이터베이스 접근에 대한 정기적인 보안 검토

자세한 지침은 MySQL 보안 구성 가이드를 참조하세요.

  • 제한된 MySQL 사용자 생성

  • 적절한 권한 설정

  • 데이터베이스 액세스 모니터링

  • 보안 모범 사례

⚠️ 중요: 데이터베이스 액세스를 구성할 때는 항상 최소 권한 원칙을 따르세요.

특허

MIT 라이센스 - 자세한 내용은 라이센스 파일을 참조하세요.

기여하다

  1. 저장소를 포크하세요

  2. 기능 브랜치를 생성합니다( git checkout -b feature/amazing-feature )

  3. 변경 사항을 커밋하세요( git commit -m 'Add some amazing feature' )

  4. 브랜치에 푸시( git push origin feature/amazing-feature )

  5. 풀 리퀘스트 열기

Available Tools

3 tools
execute_sqlA
Destructive

Execute a SQL statement against the MySQL server. Use for SELECT, DML (INSERT/UPDATE/DELETE), SHOW, DESCRIBE, and ad-hoc queries. Supports cross-database queries using database.table notation. Single statements only — use fully qualified names instead of USE statements.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesThe SQL statement to execute. Single statements only.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already indicate destructiveHint=true, so the destructive nature is clear. The description adds behavioral info: single statements only, cross-database support, and avoidance of USE statements. This adds value beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences long, well-structured, and front-loaded with the core action. Every sentence adds value without redundancy. No fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (SQL execution), the description covers usage guidelines and parameter semantics well. However, it lacks any mention of output format (e.g., rows for SELECT, affected rows for DML) or error handling, which would be helpful since no output schema exists.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents the 'query' parameter. The description adds practical guidance like using fully qualified names and avoiding USE statements, which enriches understanding beyond the schema's basic description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it executes SQL statements against MySQL server and lists supported statement types (SELECT, DML, SHOW, DESCRIBE, ad-hoc). It distinguishes from USE statements and mentions cross-database queries. However, it doesn't explicitly differentiate from sibling tools like get_schema_info, so a 4 is appropriate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use the tool: for SELECT, DML, SHOW, DESCRIBE, and ad-hoc queries. It also provides guidance to use fully qualified names instead of USE statements and to use single statements only. This gives clear context for appropriate usage, though it doesn't mention when not to use it (e.g., for metadata queries).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_schema_infoA
Read-only

Get column metadata for a table or all tables in the configured database: column names, data types, nullability, default values, and comments. Call this before querying an unfamiliar table. Omit table_name to see all tables at once. Accepts bare table names (uses MYSQL_DATABASE) or database.table for cross-database lookups.

ParametersJSON Schema
NameRequiredDescriptionDefault
table_nameNoOptional: bare table name, or database.table for a cross-database lookup.

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds that it returns specific metadata and uses MYSQL_DATABASE, which is useful but not extensive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences: first states purpose, second gives usage advice, third explains parameter usage. Front-loaded and no superfluous wording.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only metadata tool with one optional parameter, the description covers what it returns and how to use it. Output schema is absent, but the description lists the metadata fields, which is sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with a description for the parameter. The description adds valuable context: omitting table_name returns all tables, and bare names use MYSQL_DATABASE. This goes beyond the schema description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Get column metadata for a table or all tables in the configured database' with a specific list of metadata included (column names, data types, etc.). It distinguishes from siblings by implying it's for schema exploration before querying.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly advises 'Call this before querying an unfamiliar table' and explains optional usage with 'Omit table_name to see all tables at once.' Lacks direct comparison with sibling tools but provides clear context for when to use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_table_sampleA
Read-only

Fetch a small sample of rows from a table to understand its data format and content. Use alongside get_schema_info before writing complex queries. Accepts bare table names (uses MYSQL_DATABASE) or database.table for cross-database lookups.

ParametersJSON Schema
NameRequiredDescriptionDefault
table_nameYesTable to sample. Use database.table notation for cross-database queries.
limitNoNumber of rows to return (default 5, max 20).

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark the tool as readOnlyHint=true and destructiveHint=false. The description adds transparency by specifying 'small sample' and the default/max limit behavior, which is valuable beyond annotations. No contradictions detected.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, no redundant words. The first sentence front-loads the core purpose; the second adds usage and naming tips. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with two parameters and no output schema, the description covers the essential aspects: what it does, how to use it, and naming conventions. It is complete enough for an AI agent to select and invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% (both parameters described). The description adds value by explaining that table_name can be bare (using MYSQL_DATABASE) or in database.table format, which goes beyond the schema's description. For limit, the schema already states default and max, so no further addition needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Fetch a small sample'), the resource ('from a table'), and the purpose ('to understand its data format and content'). It distinguishes itself from sibling tools by mentioning alongside get_schema_info and before writing complex queries, implying this tool is for exploration, not execution or schema understanding.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly advises using the tool alongside get_schema_info before writing complex queries, providing clear context for when to use it. It also explains naming conventions (bare table vs database.table). However, it lacks explicit guidance on when not to use it or comparison to execute_sql for arbitrary queries.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 3 tool updatesv0.4.1
    • Changedexecute_sql1 field changed
      • changedInput schema / properties / query / description
        Previous value: -"The SQL query to execute"New value: +"The SQL statement to execute. Single statements only."
    • Addedget_schema_info
    • Addedget_table_sample
  2. 1 tool updatev1.0.0
    • First observedexecute_sql

TDQS

A4.3/5.0
Disambiguation5/5

Each tool has a distinct and clear purpose: executing SQL, retrieving schema metadata, and fetching sample data. No overlap in functionality.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in snake_case (execute_sql, get_schema_info, get_table_sample), making them predictable.

Tool Count5/5

Three tools is appropriate for the server's scope—covering query execution, schema inspection, and data sampling. Not too few or excessive.

Completeness4/5

Covers core database interaction needs (query, schema, sample). Minor gaps like database listing or DDL support exist but are acceptable for the stated purpose.

Maintenance

ActivityMaintained
ResponsivenessSyncing

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables secure interaction with MySQL databases, allowing AI assistants to list tables, read data, and execute SQL queries through a controlled interface.
    -
  • A
    license
    Not graded
    quality
    Not graded
    maintenance
    Provides AI assistants with safe, controlled access to PostgreSQL databases with read-only defaults, granular permissions, query safety features, and schema introspection capabilities.
    1
    -
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables read-only SQL database access for AI assistants, allowing schema exploration and safe query execution without risk of data modification.
    -
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI assistants to safely query and explore SQL Server and PostgreSQL databases with read-only access, supporting schema discovery, relationship exploration, and query execution.
    37
    3
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/designcomputer/mysql_mcp_server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server