Skip to main content
Glama
Himanshu-Agg12

mcp-mysql-lens

MCP MySQL Lens

A Model Context Protocol (MCP) server that enables Claude Desktop to interact with MySQL databases directly. This server allows Claude to query, analyze, and manage your MySQL databases through natural language.

Features

  • 🔍 Query Execution: Run SQL queries directly from Claude Desktop

  • 📊 Schema Inspection: Explore database structure, tables, and relationships

  • 🔄 Data Analysis: Analyze and visualize data patterns

  • 🛡️ Safe Operations: Built-in safeguards for database operations

  • 🚀 Easy Setup: Simple configuration with environment variables

Related MCP server: mysql-mcp

Prerequisites

  • Claude Desktop installed

  • Node.js (v16 or higher)

  • MySQL Server (v5.7 or higher)

  • install npm

  • Valid MySQL credentials with appropriate permissions

Visit npm package mcp-mysql-lens

Installation

1. Install the MCP Server

npm install -g mcp-mysql-lens

2. Configure Claude Desktop

Add this configuration to your Claude Desktop config file:

{
  "mcpServers": {
    "mysql": {
      "command": "npx",
      "args": [
        "mcp-mysql-lens"
      ],
      "env": {
        "MYSQL_HOST": "<YOUR_MYSQL_HOST>",
        "MYSQL_PORT": "<YOUR_MYSQL_PORT>",
        "MYSQL_USER": "<YOUR_MYSQL_USERNAME>",
        "MYSQL_PASSWORD": "<YOUR_MYSQL_PASSWORD>",
        "MYSQL_DATABASE": "<YOUR_MYSQL_DEFAULT_DB>"
      }
    }
  }
}

Configuration File Location:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

  • Linux: ~/.config/Claude/claude_desktop_config.json

3. Restart Claude Desktop

After saving the configuration, restart Claude Desktop for the changes to take effect.

Configuration Parameters

Parameter

Description

Default

Required

MYSQL_HOST

MySQL server hostname

-

Yes

MYSQL_PORT

MySQL server port

3306

Yes

MYSQL_USER

Database username

-

Yes

MYSQL_PASSWORD

Database password

-

Yes

MYSQL_DATABASE

Default database to connect to

-

Yes

Usage Examples

Once configured, you can interact with your MySQL database through Claude Desktop:

Query Data

"Show me all users from the users table"
"What are the top 10 products by sales?"
"Find all orders from the last 30 days"

Analyze Schema

"What tables are in my database?"
"Describe the structure of the customers table"
"Show me the relationships between tables"

Data Analysis

"Calculate the average order value by month"
"Find duplicate records in the products table"
"Show me user registration trends"

Security Best Practices

⚠️ Important Security Considerations:

  1. Use Read-Only Credentials: Create a dedicated MySQL user with read-only permissions for data analysis tasks

  2. Never Commit Credentials: Don't commit the claude_desktop_config.json file with actual credentials to version control

  3. Use Environment Variables: For production environments, consider using environment variable substitution

  4. Limit Database Access: Only grant access to specific databases that Claude needs to work with

  5. Use Strong Passwords: Ensure your MySQL password is strong and unique

  6. Enable SSL/TLS: For remote connections, always use SSL/TLS encryption

  7. Regular Auditing: Monitor database access logs regularly

Troubleshooting

Connection Issues

Problem: "Cannot connect to MySQL server"

  • Verify MySQL server is running: systemctl status mysql (Linux) or check Services (Windows)

  • Check host and port are correct

  • Ensure firewall allows connections on MySQL port (default 3306)

  • Verify credentials are correct

Problem: "Access denied for user"

  • Confirm username and password are correct

  • Check user has appropriate permissions: SHOW GRANTS FOR 'your_user'@'localhost';

  • Verify user can connect from the specified host

Configuration Issues

Problem: Claude Desktop doesn't show the MySQL server

  • Ensure the config file is in the correct location

  • Check JSON syntax is valid (use a JSON validator)

  • Restart Claude Desktop after making changes

  • Check Claude Desktop logs for errors

Performance Issues

Problem: Queries are slow

  • Add appropriate indexes to frequently queried columns

  • Optimize complex queries

  • Consider increasing MySQL connection timeout

  • Check database server resources (CPU, memory)

Limitations

  • Query Timeout: Long-running queries may timeout (default: 30 seconds)

  • Result Size: Large result sets may be truncated

  • Write Operations: Currently not supported

  • Concurrent Connections: Limited by MySQL server's max_connections setting

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository

  2. Create your feature branch (git checkout -b feature/AmazingFeature)

  3. Commit your changes (git commit -m 'Add some AmazingFeature')

  4. Push to the branch (git push origin feature/AmazingFeature)

  5. Open a Pull Request

License

This project is licensed under the MIT License - see the LICENSE file for details.

Acknowledgments


Available Tools

4 tools
describe_tableB

Show the schema for a specific table

ParametersJSON Schema
NameRequiredDescriptionDefault
databaseNoDatabase name (optional, uses default if not specified)
tableYesTable name

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool shows a schema, implying a read-only operation, but doesn't cover aspects like permissions needed, error handling, response format, or any side effects. For a tool with no annotation coverage, this is a significant gap in transparency.

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 a single, clear sentence that efficiently conveys the core function without any wasted words. It's front-loaded with the essential information, making it easy for an agent to parse quickly. This is an excellent example of conciseness.

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 moderate complexity (2 parameters, no output schema, no annotations), the description is minimally adequate. It states what the tool does but lacks details on usage, behavior, or output. Without annotations or an output schema, more context would be helpful, but it meets a basic threshold for a simple read operation.

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

Parameters3/5

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

The input schema has 100% description coverage, clearly documenting both parameters ('database' as optional with default, 'table' as required). The description adds no additional meaning beyond this, such as examples or constraints not in the schema. Given the high schema coverage, a baseline score of 3 is appropriate, as the schema does the heavy lifting.

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 the tool's purpose with a specific verb ('Show') and resource ('schema for a specific table'), making it easy to understand what it does. However, it doesn't explicitly differentiate from sibling tools like 'list_tables' (which might list table names without schemas) or 'execute_query' (which could return data rather than metadata), so it falls short of a perfect score.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'list_tables' (for listing tables) or 'execute_query' (for querying data), nor does it specify prerequisites or contexts for usage. This leaves the agent with minimal direction on tool selection.

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

execute_queryB

Execute a read-only SQL query

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSQL query (only SELECT, SHOW, DESCRIBE, and EXPLAIN statements are allowed)
databaseNoDatabase name (optional, uses default if not specified)

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states 'read-only,' which is useful, but doesn't cover other critical aspects like permissions needed, rate limits, error handling, or what the output looks like (e.g., result format, pagination). This leaves significant gaps for a tool that executes queries.

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 a single, efficient sentence that front-loads the core purpose ('Execute a read-only SQL query') with zero waste. Every word earns its place, making it highly concise and well-structured.

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

Completeness2/5

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

Given the complexity of executing SQL queries, no annotations, and no output schema, the description is incomplete. It lacks details on behavioral traits (e.g., safety, performance), output format, and usage context relative to siblings, making it inadequate for full agent understanding.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents both parameters (query and database) thoroughly. The description adds no additional meaning beyond what's in the schema, such as query syntax examples or database context. Baseline 3 is appropriate when the schema does the heavy lifting.

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 the action ('execute') and resource ('read-only SQL query'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from sibling tools like list_databases or describe_table, which might also involve querying but serve different specific purposes.

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

Usage Guidelines3/5

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

The description implies usage for SQL queries, particularly read-only ones, but doesn't specify when to use this tool versus alternatives like list_databases or describe_table. It provides some context (read-only) but lacks explicit guidance on exclusions or preferred scenarios.

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

list_databasesA

List all accessible databases on the MySQL server

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It indicates a read operation ('List') and implies accessibility constraints ('accessible databases'), but lacks details on permissions, rate limits, or output format. It adds some context but doesn't fully compensate for the absence of annotations, resulting in moderate transparency.

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 a single, efficient sentence that directly states the tool's purpose without any wasted words. It's front-loaded with the key action and resource, making it easy to understand quickly. Every part of the sentence contributes meaningfully to the tool's definition.

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 low complexity (0 parameters, no output schema) and no annotations, the description is minimally adequate. It covers the basic purpose and scope but lacks details on behavioral aspects like permissions or output format. For a simple list tool, it's complete enough to be functional but could be enhanced with more context.

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?

The input schema has 0 parameters with 100% coverage, so no parameter information is needed. The description doesn't mention parameters, which is appropriate, and it adds value by clarifying the scope ('all accessible databases'). This exceeds the baseline of 3 for high schema coverage by providing useful context without redundancy.

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 specific action ('List') and resource ('all accessible databases on the MySQL server'), distinguishing it from siblings like list_tables (which lists tables within a database) and describe_table (which describes table structure). It precisely communicates what the tool does without being vague or tautological.

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

Usage Guidelines3/5

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

The description implies usage by stating 'all accessible databases,' suggesting it's for discovering available databases, but it doesn't explicitly guide when to use this versus alternatives like list_tables or describe_table. No exclusions or specific contexts are provided, leaving usage somewhat inferred rather than clearly directed.

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

list_tablesC

List all tables in a specified database

ParametersJSON Schema
NameRequiredDescriptionDefault
databaseNoDatabase name (optional, uses default if not specified)

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but only mentions the basic action. It lacks details on behavioral traits like whether it requires authentication, returns paginated results, includes system tables, or has rate limits, leaving significant gaps for a tool with potential complexity.

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 a single, clear sentence with zero wasted words, front-loading the core purpose efficiently. It's appropriately sized for a simple tool, making it easy to parse quickly.

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

Completeness2/5

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

Given no annotations and no output schema, the description is incomplete for a tool that might involve database interactions. It doesn't explain return values, error conditions, or prerequisites, leaving the agent with insufficient context for reliable use.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema fully documents the single optional parameter 'database'. The description adds no additional parameter semantics beyond implying a database context, aligning with the baseline for high schema coverage.

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 the action ('List all tables') and resource ('in a specified database'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'list_databases' or 'describe_table' beyond the basic scope, missing explicit distinction.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives such as 'list_databases' for database-level listing or 'describe_table' for detailed table information. The description only states what it does without context for selection among siblings.

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. 4 tool updates
    • First observeddescribe_table
    • First observedexecute_query
    • First observedlist_databases
    • First observedlist_tables

TDQS

A3.5/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose: describe_table shows schema, execute_query runs SQL queries, list_databases lists databases, and list_tables lists tables. There is no overlap or ambiguity between these functions.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern (describe_table, execute_query, list_databases, list_tables) with clear, descriptive verbs and nouns that match their functions.

Tool Count4/5

With 4 tools, the count is reasonable for a MySQL server interface, though it feels slightly thin as it lacks write operations (e.g., insert, update, delete) which are common in database contexts. However, the tools cover essential read and metadata functions well.

Completeness3/5

The tool surface covers read operations and metadata well (list databases/tables, describe schema, execute queries), but there are notable gaps: no write operations (insert, update, delete), no transaction management, and no user or permission management tools, which limits full database lifecycle coverage.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

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/Himanshu-Agg12/mcp-mysql-lens'

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