{"_id":"@edjl/mysql-mcp","_rev":"7-92c33a0e5dff414597337a2608cb7ab8","name":"@edjl/mysql-mcp","dist-tags":{"latest":"1.0.8"},"versions":{"1.0.2":{"name":"@edjl/mysql-mcp","version":"1.0.2","keywords":["mcp","modelcontextprotocol","mysql","database"],"author":{"name":"Eduardo Lorenzo","email":"contact@edjl.dev"},"license":"MIT","_id":"@edjl/mysql-mcp@1.0.2","maintainers":[{"name":"portujua","email":"ejlorenzo19@gmail.com"}],"bin":{"mysql-mcp":"build/index.js"},"dist":{"shasum":"58dc8b232e7259b14e24d3f86482fc25e65ac1b4","tarball":"https://registry.npmjs.org/@edjl/mysql-mcp/-/mysql-mcp-1.0.2.tgz","fileCount":46,"integrity":"sha512-DjbbZXE/n6UXeon4ZTK6/t+hgs3ieCgl514Y1znReWFWjUgUaj6coJhyLoHMfznJD+yrtKMC0SwYHx3ll597uw==","signatures":[{"sig":"MEUCIQCnCuvgX8gwLuBm2tGLQ+V+zbBmy4+5QYOGMfoqMsnkOwIgKJ/TqWCNciz1zJu3uyKjtfw+XH3qHn25VA3wEsG6zuM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":82402},"main":"./build/index.js","type":"module","types":"./build/index.d.ts","gitHead":"929b7ad6cf00ce4f3b5834fa9825932f7ccc3f01","scripts":{"dev":"tsc --watch","build":"tsc","clean":"rm -rf build","start":"node build/index.js","prebuild":"npm run clean"},"_npmUser":{"name":"portujua","actor":{"name":"portujua","type":"user","email":"ejlorenzo19@gmail.com"},"email":"ejlorenzo19@gmail.com"},"_npmVersion":"10.9.2","description":"MySQL read-only tools for MCP (Model Context Protocol)","directories":{},"_nodeVersion":"22.16.0","dependencies":{"zod":"^3.24.2","mysql2":"^3.11.5","zod-to-json-schema":"^3.24.6","@modelcontextprotocol/sdk":"^1.13.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.3.3","@types/node":"^20.11.0"},"_npmOperationalInternal":{"tmp":"tmp/mysql-mcp_1.0.2_1751443300304_0.7853005904439656","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@edjl/mysql-mcp","version":"1.0.3","keywords":["mcp","modelcontextprotocol","mysql","database"],"author":{"name":"Eduardo Lorenzo","email":"contact@edjl.dev"},"license":"MIT","_id":"@edjl/mysql-mcp@1.0.3","maintainers":[{"name":"portujua","email":"ejlorenzo19@gmail.com"}],"bin":{"mysql-mcp":"build/index.js"},"dist":{"shasum":"33dd1e01b9407dd34a2fe5c591dd07bcb0028d58","tarball":"https://registry.npmjs.org/@edjl/mysql-mcp/-/mysql-mcp-1.0.3.tgz","fileCount":46,"integrity":"sha512-qyy/r2gsdOPF+0L6Se0trWahHRDIV6g58hSQl/R11SFr+d+6b/R5RUlJlRAdnXTj+0pVRZy7FndMr3Cwl+LYdw==","signatures":[{"sig":"MEUCIDkWoBGyKJC9qnQkjaomd+zz+BnoFNslMB1x22AB1806AiEAgHOLEEJ1IgekrxCe5mHzle6fVd3bQ2NBkxizZLgoU9w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":82402},"main":"./build/index.js","type":"module","types":"./build/index.d.ts","gitHead":"f10a2d36629e331a1757d8f8797a58cd622d2523","scripts":{"dev":"tsc --watch","build":"tsc","clean":"rm -rf build","start":"node build/index.js","prebuild":"npm run clean"},"_npmUser":{"name":"portujua","actor":{"name":"portujua","type":"user","email":"ejlorenzo19@gmail.com"},"email":"ejlorenzo19@gmail.com"},"_npmVersion":"10.9.2","description":"MySQL read-only tools for MCP (Model Context Protocol)","directories":{},"_nodeVersion":"22.16.0","dependencies":{"zod":"^3.24.2","mysql2":"^3.11.5","zod-to-json-schema":"^3.24.6","@modelcontextprotocol/sdk":"^1.13.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.3.3","@types/node":"^20.11.0"},"_npmOperationalInternal":{"tmp":"tmp/mysql-mcp_1.0.3_1751481373223_0.7332019941791721","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@edjl/mysql-mcp","version":"1.0.4","keywords":["mcp","modelcontextprotocol","mysql","database"],"author":{"name":"Eduardo Lorenzo","email":"contact@edjl.dev"},"license":"MIT","_id":"@edjl/mysql-mcp@1.0.4","maintainers":[{"name":"portujua","email":"ejlorenzo19@gmail.com"}],"bin":{"mysql-mcp":"build/index.js"},"dist":{"shasum":"a7ef1d35da9d161251052beb100604e3308a9439","tarball":"https://registry.npmjs.org/@edjl/mysql-mcp/-/mysql-mcp-1.0.4.tgz","fileCount":46,"integrity":"sha512-wujmtXFagZ84a6piEm2hnnm0ffjvOnR56YOpkcsYQntlSK8gb2CP3xeubxClFcZNrUGZ9IzG8GzTco09515M0w==","signatures":[{"sig":"MEUCIGIpAdRylAVRds4ZcL+pzRuWlzRNOAoSrc6i2io67BsgAiEAuOHiciB4R1zGeKgPzSqar7QGvHYfnrZLB5231o4YCS0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":82402},"main":"./build/index.js","type":"module","types":"./build/index.d.ts","gitHead":"a95cb8ed7fc0da6897b30d1ce7c5fa40b2b2a035","scripts":{"dev":"tsc --watch","build":"tsc","clean":"rm -rf build","start":"node build/index.js","prebuild":"npm run clean"},"_npmUser":{"name":"portujua","actor":{"name":"portujua","type":"user","email":"ejlorenzo19@gmail.com"},"email":"ejlorenzo19@gmail.com"},"_npmVersion":"10.9.2","description":"MySQL read-only tools for MCP (Model Context Protocol)","directories":{},"_nodeVersion":"22.16.0","dependencies":{"zod":"^3.24.2","mysql2":"^3.11.5","zod-to-json-schema":"^3.24.6","@modelcontextprotocol/sdk":"^1.13.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.3.3","@types/node":"^20.11.0"},"_npmOperationalInternal":{"tmp":"tmp/mysql-mcp_1.0.4_1751649144870_0.6618075047038225","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@edjl/mysql-mcp","version":"1.0.5","keywords":["mcp","modelcontextprotocol","mysql","database"],"author":{"name":"Eduardo Lorenzo","email":"contact@edjl.dev"},"license":"MIT","_id":"@edjl/mysql-mcp@1.0.5","maintainers":[{"name":"portujua","email":"ejlorenzo19@gmail.com"}],"bin":{"mysql-mcp":"build/index.js"},"dist":{"shasum":"e42714f256a6c054237f8989281e1fafc79d6c96","tarball":"https://registry.npmjs.org/@edjl/mysql-mcp/-/mysql-mcp-1.0.5.tgz","fileCount":46,"integrity":"sha512-SfP9POtqHb0XsOMmXadyvDSRWqp9dUnUVbBrv6blBDMTxvIGjvSLeQxWugzacjPYE9TT58t0RgnrJZSDtOnI1A==","signatures":[{"sig":"MEQCIAKl6tcJiZuWHSIqWH71hCBklGG39dqmlOYaxcT1JGdWAiAn2iNpewoThrViFPIFhSTYZL0yAf+ZSYPMtOJpajbn9A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":82402},"main":"./build/index.js","type":"module","types":"./build/index.d.ts","gitHead":"d335c1a301ba644746d9d0e66897f3a2e764099c","scripts":{"dev":"tsc --watch","build":"tsc","clean":"rm -rf build","start":"node build/index.js","prebuild":"npm run clean"},"_npmUser":{"name":"portujua","actor":{"name":"portujua","type":"user","email":"ejlorenzo19@gmail.com"},"email":"ejlorenzo19@gmail.com"},"_npmVersion":"10.9.2","description":"MySQL read-only tools for MCP (Model Context Protocol)","directories":{},"_nodeVersion":"22.16.0","dependencies":{"zod":"^3.24.2","mysql2":"^3.11.5","zod-to-json-schema":"^3.24.6","@modelcontextprotocol/sdk":"^1.13.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.3.3","@types/node":"^20.11.0"},"_npmOperationalInternal":{"tmp":"tmp/mysql-mcp_1.0.5_1751909452648_0.7946460155643786","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"@edjl/mysql-mcp","version":"1.0.6","keywords":["mcp","modelcontextprotocol","mysql","database"],"author":{"name":"Eduardo Lorenzo","email":"contact@edjl.dev"},"license":"MIT","_id":"@edjl/mysql-mcp@1.0.6","maintainers":[{"name":"portujua","email":"ejlorenzo19@gmail.com"}],"bin":{"mysql-mcp":"build/index.js"},"dist":{"shasum":"9e206490cbd56e6f9357ad8c136cb34e8c93f530","tarball":"https://registry.npmjs.org/@edjl/mysql-mcp/-/mysql-mcp-1.0.6.tgz","fileCount":46,"integrity":"sha512-xYneVZ2JiK1hfrkJiLn+3FUKYY9HD6o1HMR8+Vi+WA/RdlcIbWK6kfUbDg6R8E12QXZA1Hi6leHQpI0m+kr29w==","signatures":[{"sig":"MEUCIQDgexRwVyTpKK3UxbzGlJ3X2b6hH1WOQO16oipyVXg8uwIgNkiUaEvQvhnkHgWa95LXWjgPACtfhrOQKt2OLC1Ev8I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":82402},"main":"./build/index.js","type":"module","types":"./build/index.d.ts","gitHead":"f61a11f87d460f031881077a00e4219002c6f919","scripts":{"dev":"tsc --watch","build":"tsc","clean":"rm -rf build","start":"node build/index.js","prebuild":"npm run clean"},"_npmUser":{"name":"portujua","email":"ejlorenzo19@gmail.com"},"_npmVersion":"10.9.2","description":"MySQL read-only tools for MCP (Model Context Protocol)","directories":{},"_nodeVersion":"22.17.1","dependencies":{"zod":"^3.24.2","mysql2":"^3.11.5","zod-to-json-schema":"^3.24.6","@modelcontextprotocol/sdk":"^1.13.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.3.3","@types/node":"^20.11.0"},"_npmOperationalInternal":{"tmp":"tmp/mysql-mcp_1.0.6_1753463168857_0.15085771134647818","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"@edjl/mysql-mcp","version":"1.0.7","keywords":["mcp","modelcontextprotocol","mysql","database"],"author":{"name":"Eduardo Lorenzo","email":"contact@edjl.dev"},"license":"MIT","_id":"@edjl/mysql-mcp@1.0.7","maintainers":[{"name":"portujua","email":"ejlorenzo19@gmail.com"}],"bin":{"mysql-mcp":"build/index.js"},"dist":{"shasum":"f62baaac858bd5d0a343c07a28c54e1706c059cd","tarball":"https://registry.npmjs.org/@edjl/mysql-mcp/-/mysql-mcp-1.0.7.tgz","fileCount":46,"integrity":"sha512-wcfE+YKRkY80Okg7DeS14Q4ydAPxPLIzkk6n+RsdVsoZgubKl1hu1ihlqvs/CONvRgx8Citj28uJ07yRFavbyg==","signatures":[{"sig":"MEUCICm3XUDwLsJ0r6N5CSRSvxaLVd+siMxEY46MoNna+zq7AiEAqB+93TSCgqxPxy0fJDst7dcp+8ld387oHWhcXtWQpw8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":82402},"main":"./build/index.js","type":"module","types":"./build/index.d.ts","gitHead":"4432f791bfada1420f99d9e25f3120916dad588d","scripts":{"dev":"tsc --watch","build":"tsc","clean":"rm -rf build","start":"node build/index.js","prebuild":"npm run clean"},"_npmUser":{"name":"portujua","email":"ejlorenzo19@gmail.com"},"_npmVersion":"10.9.2","description":"MySQL read-only tools for MCP (Model Context Protocol)","directories":{},"_nodeVersion":"22.17.1","dependencies":{"zod":"^3.24.2","mysql2":"^3.11.5","zod-to-json-schema":"^3.24.6","@modelcontextprotocol/sdk":"^1.13.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.3.3","@types/node":"^20.11.0"},"_npmOperationalInternal":{"tmp":"tmp/mysql-mcp_1.0.7_1753463969501_0.030694691070591862","host":"s3://npm-registry-packages-npm-production"}},"1.0.8":{"name":"@edjl/mysql-mcp","version":"1.0.8","description":"MySQL read-only tools for MCP (Model Context Protocol)","type":"module","main":"./build/index.js","bin":{"mysql-mcp":"build/index.js"},"scripts":{"build":"tsc","start":"node build/index.js","dev":"tsc --watch","clean":"rm -rf build","prebuild":"npm run clean"},"keywords":["mcp","modelcontextprotocol","mysql","database"],"author":{"name":"Eduardo Lorenzo","email":"contact@edjl.dev"},"license":"MIT","dependencies":{"@modelcontextprotocol/sdk":"^1.13.2","mysql2":"^3.11.5","zod":"^3.24.2","zod-to-json-schema":"^3.24.6"},"devDependencies":{"@types/node":"^20.11.0","typescript":"^5.3.3"},"publishConfig":{"access":"public"},"_id":"@edjl/mysql-mcp@1.0.8","gitHead":"f406322d878ed03679d7958181fa3e7f7ccf845a","types":"./build/index.d.ts","_nodeVersion":"22.21.1","_npmVersion":"10.9.4","dist":{"integrity":"sha512-apF8ma7R981da8/q2D0KS5Vn1ygEsi/l3ZDi/KVt8wyZ6EVRegWTrhtBPWjZeczSp1Ou/c+or04752AUXBxXZw==","shasum":"8c9120eb1490f4e558174ed5f87a8357be6b7b78","tarball":"https://registry.npmjs.org/@edjl/mysql-mcp/-/mysql-mcp-1.0.8.tgz","fileCount":46,"unpackedSize":82402,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDpzb1HWcKo7yosmgvwDT+Fuo2qeCS+u/Y93sAOln4quwIhANrQWwGwClIL+vyHGuPFcCqudPXu6mXuM0laF99Zy3BK"}]},"_npmUser":{"name":"portujua","email":"ejlorenzo19@gmail.com"},"directories":{},"maintainers":[{"name":"portujua","email":"ejlorenzo19@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mysql-mcp_1.0.8_1764704231292_0.6330818733348811"},"_hasShrinkwrap":false}},"time":{"created":"2025-07-02T08:01:40.159Z","modified":"2025-12-02T19:37:11.711Z","1.0.2":"2025-07-02T08:01:40.502Z","1.0.3":"2025-07-02T18:36:13.401Z","1.0.4":"2025-07-04T17:12:25.079Z","1.0.5":"2025-07-07T17:30:52.825Z","1.0.6":"2025-07-25T17:06:09.068Z","1.0.7":"2025-07-25T17:19:29.722Z","1.0.8":"2025-12-02T19:37:11.480Z"},"author":{"name":"Eduardo Lorenzo","email":"contact@edjl.dev"},"license":"MIT","keywords":["mcp","modelcontextprotocol","mysql","database"],"description":"MySQL read-only tools for MCP (Model Context Protocol)","maintainers":[{"name":"portujua","email":"ejlorenzo19@gmail.com"}],"readme":"# MySQL MCP\n\nA Model Context Protocol (MCP) server that provides tools for interacting with MySQL databases.\n\n## Features\n\nThis MCP server provides the following tools:\n\n### Read Operations\n- `mysql_databases` - List all databases\n- `mysql_tables` - List all tables in a database\n- `mysql_columns` - List columns of a table\n- `mysql_describe` - Show detailed table structure\n- `mysql_query` - Execute SELECT queries (read-only)\n- `mysql_count` - Count rows with optional filtering\n\n### Write Operations\n- `mysql_update` - Update rows with safety checks\n- `mysql_delete` - Delete rows with safety checks\n\n## Installation\n\n1. Clone this repository\n2. Install dependencies:\n   ```bash\n   npm install\n   ```\n3. Build the project:\n   ```bash\n   npm run build\n   ```\n\n## Configuration\n\n### Option 1: Environment Variables in mcp.json (Recommended)\n\nAdd the server to your `~/.cursor/mcp.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"mysql-mcp\": {\n      \"command\": \"node\",\n      \"args\": [\n        \"/path/to/mysql-mcp/build/index.js\"\n      ],\n      \"env\": {\n        \"MYSQL_HOST\": \"localhost\",\n        \"MYSQL_PORT\": \"3306\",\n        \"MYSQL_USER\": \"your_username\",\n        \"MYSQL_PASSWORD\": \"your_password\",\n        \"MYSQL_DATABASE\": \"default_database\"\n      }\n    }\n  }\n}\n```\n\n### Option 2: Per-Tool Configuration\n\nEach tool accepts connection parameters that override the environment variables:\n\n```typescript\n{\n  host: \"localhost\",      // Optional, defaults to MYSQL_HOST or 'localhost'\n  port: 3306,            // Optional, defaults to MYSQL_PORT or 3306\n  user: \"root\",          // Optional, defaults to MYSQL_USER or 'root'\n  password: \"password\",  // Optional, defaults to MYSQL_PASSWORD\n  database: \"mydb\"       // Required for most tools\n}\n```\n\n### Option 3: System Environment Variables\n\nYou can also set system environment variables:\n\n```bash\nexport MYSQL_HOST=localhost\nexport MYSQL_PORT=3306\nexport MYSQL_USER=root\nexport MYSQL_PASSWORD=your_password\nexport MYSQL_DATABASE=default_db\n```\n\n## Usage Examples\n\n### List all databases\n```\nmysql_databases\n```\n\n### List tables in a database\n```\nmysql_tables database: \"myapp\"\n```\n\n### Query data\n```\nmysql_query database: \"myapp\", query: \"SELECT * FROM users WHERE active = 1\", limit: 10\n```\n\n### Update with dry run\n```\nmysql_update database: \"myapp\", table: \"users\", set: {status: \"inactive\"}, where: \"last_login < '2023-01-01'\", dryRun: true\n```\n\n### Delete with safety\n```\nmysql_delete database: \"myapp\", table: \"logs\", where: \"created_at < '2023-01-01'\", limit: 1000, dryRun: true\n```\n\n## Safety Features\n\n1. **Required WHERE clause**: Both UPDATE and DELETE operations require a WHERE clause to prevent accidental operations on all rows\n2. **Dry run mode**: Preview changes before executing with `dryRun: true`\n3. **Limit support**: Restrict the number of affected rows\n4. **Query validation**: The query tool validates and prevents non-SELECT operations\n5. **Connection timeout**: 10-second timeout on database connections\n\n## Development\n\n### Project Structure\n```\nmysql-mcp/\n├── src/\n│   ├── index.ts           # Main server file\n│   ├── types.ts           # TypeScript types\n│   ├── database/\n│   │   └── connection.ts  # Database connection handling\n│   └── tools/            # Individual tool implementations\n│       ├── databases.ts\n│       ├── tables.ts\n│       ├── columns.ts\n│       ├── describe.ts\n│       ├── query.ts\n│       ├── count.ts\n│       ├── update.ts\n│       └── delete.ts\n├── package.json\n├── tsconfig.json\n└── README.md\n```\n\n### Adding New Tools\n\n1. Create a new file in `src/tools/`\n2. Implement the `ToolDefinition` interface\n3. Export as default\n4. The tool will be automatically loaded with the `mysql_` prefix\n\n## License\n\nMIT","readmeFilename":"README.md"}