@neverinfamous/mysql-mcp 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.dockerignore +41 -0
- package/.env.example +33 -0
- package/.github/ISSUE_TEMPLATE/bug_report.md +29 -0
- package/.github/ISSUE_TEMPLATE/feature_request.md +21 -0
- package/.github/dependabot.yml +19 -0
- package/.github/pull_request_template.md +23 -0
- package/.github/workflows/codeql.yml +64 -0
- package/.github/workflows/docker-publish.yml +285 -0
- package/.github/workflows/publish-npm.yml +75 -0
- package/CHANGELOG.md +481 -0
- package/CODE_OF_CONDUCT.md +29 -0
- package/CONTRIBUTING.md +57 -0
- package/DOCKER_README.md +482 -0
- package/Dockerfile +78 -0
- package/LICENSE +21 -0
- package/README.md +594 -0
- package/SECURITY.md +66 -0
- package/VERSION +1 -0
- package/dist/__tests__/mocks/adapter.d.ts +80 -0
- package/dist/__tests__/mocks/adapter.d.ts.map +1 -0
- package/dist/__tests__/mocks/adapter.js +202 -0
- package/dist/__tests__/mocks/adapter.js.map +1 -0
- package/dist/__tests__/mocks/index.d.ts +11 -0
- package/dist/__tests__/mocks/index.d.ts.map +1 -0
- package/dist/__tests__/mocks/index.js +11 -0
- package/dist/__tests__/mocks/index.js.map +1 -0
- package/dist/__tests__/mocks/mysql.d.ts +36 -0
- package/dist/__tests__/mocks/mysql.d.ts.map +1 -0
- package/dist/__tests__/mocks/mysql.js +110 -0
- package/dist/__tests__/mocks/mysql.js.map +1 -0
- package/dist/__tests__/setup.d.ts +40 -0
- package/dist/__tests__/setup.d.ts.map +1 -0
- package/dist/__tests__/setup.js +45 -0
- package/dist/__tests__/setup.js.map +1 -0
- package/dist/adapters/DatabaseAdapter.d.ts +134 -0
- package/dist/adapters/DatabaseAdapter.d.ts.map +1 -0
- package/dist/adapters/DatabaseAdapter.js +211 -0
- package/dist/adapters/DatabaseAdapter.js.map +1 -0
- package/dist/adapters/mysql/MySQLAdapter.d.ts +88 -0
- package/dist/adapters/mysql/MySQLAdapter.d.ts.map +1 -0
- package/dist/adapters/mysql/MySQLAdapter.js +469 -0
- package/dist/adapters/mysql/MySQLAdapter.js.map +1 -0
- package/dist/adapters/mysql/SchemaManager.d.ts +36 -0
- package/dist/adapters/mysql/SchemaManager.d.ts.map +1 -0
- package/dist/adapters/mysql/SchemaManager.js +260 -0
- package/dist/adapters/mysql/SchemaManager.js.map +1 -0
- package/dist/adapters/mysql/index.d.ts +6 -0
- package/dist/adapters/mysql/index.d.ts.map +1 -0
- package/dist/adapters/mysql/index.js +7 -0
- package/dist/adapters/mysql/index.js.map +1 -0
- package/dist/adapters/mysql/prompts/backupStrategy.d.ts +8 -0
- package/dist/adapters/mysql/prompts/backupStrategy.d.ts.map +1 -0
- package/dist/adapters/mysql/prompts/backupStrategy.js +74 -0
- package/dist/adapters/mysql/prompts/backupStrategy.js.map +1 -0
- package/dist/adapters/mysql/prompts/clusterSetup.d.ts +8 -0
- package/dist/adapters/mysql/prompts/clusterSetup.d.ts.map +1 -0
- package/dist/adapters/mysql/prompts/clusterSetup.js +112 -0
- package/dist/adapters/mysql/prompts/clusterSetup.js.map +1 -0
- package/dist/adapters/mysql/prompts/docstoreSetup.d.ts +8 -0
- package/dist/adapters/mysql/prompts/docstoreSetup.d.ts.map +1 -0
- package/dist/adapters/mysql/prompts/docstoreSetup.js +117 -0
- package/dist/adapters/mysql/prompts/docstoreSetup.js.map +1 -0
- package/dist/adapters/mysql/prompts/eventScheduler.d.ts +8 -0
- package/dist/adapters/mysql/prompts/eventScheduler.d.ts.map +1 -0
- package/dist/adapters/mysql/prompts/eventScheduler.js +97 -0
- package/dist/adapters/mysql/prompts/eventScheduler.js.map +1 -0
- package/dist/adapters/mysql/prompts/healthCheck.d.ts +8 -0
- package/dist/adapters/mysql/prompts/healthCheck.d.ts.map +1 -0
- package/dist/adapters/mysql/prompts/healthCheck.js +49 -0
- package/dist/adapters/mysql/prompts/healthCheck.js.map +1 -0
- package/dist/adapters/mysql/prompts/index.d.ts +31 -0
- package/dist/adapters/mysql/prompts/index.d.ts.map +1 -0
- package/dist/adapters/mysql/prompts/index.js +308 -0
- package/dist/adapters/mysql/prompts/index.js.map +1 -0
- package/dist/adapters/mysql/prompts/indexTuning.d.ts +8 -0
- package/dist/adapters/mysql/prompts/indexTuning.d.ts.map +1 -0
- package/dist/adapters/mysql/prompts/indexTuning.js +83 -0
- package/dist/adapters/mysql/prompts/indexTuning.js.map +1 -0
- package/dist/adapters/mysql/prompts/mysqlshSetup.d.ts +8 -0
- package/dist/adapters/mysql/prompts/mysqlshSetup.d.ts.map +1 -0
- package/dist/adapters/mysql/prompts/mysqlshSetup.js +113 -0
- package/dist/adapters/mysql/prompts/mysqlshSetup.js.map +1 -0
- package/dist/adapters/mysql/prompts/proxysqlSetup.d.ts +8 -0
- package/dist/adapters/mysql/prompts/proxysqlSetup.d.ts.map +1 -0
- package/dist/adapters/mysql/prompts/proxysqlSetup.js +109 -0
- package/dist/adapters/mysql/prompts/proxysqlSetup.js.map +1 -0
- package/dist/adapters/mysql/prompts/replicationSetup.d.ts +8 -0
- package/dist/adapters/mysql/prompts/replicationSetup.d.ts.map +1 -0
- package/dist/adapters/mysql/prompts/replicationSetup.js +140 -0
- package/dist/adapters/mysql/prompts/replicationSetup.js.map +1 -0
- package/dist/adapters/mysql/prompts/routerSetup.d.ts +8 -0
- package/dist/adapters/mysql/prompts/routerSetup.d.ts.map +1 -0
- package/dist/adapters/mysql/prompts/routerSetup.js +100 -0
- package/dist/adapters/mysql/prompts/routerSetup.js.map +1 -0
- package/dist/adapters/mysql/prompts/spatialSetup.d.ts +8 -0
- package/dist/adapters/mysql/prompts/spatialSetup.d.ts.map +1 -0
- package/dist/adapters/mysql/prompts/spatialSetup.js +103 -0
- package/dist/adapters/mysql/prompts/spatialSetup.js.map +1 -0
- package/dist/adapters/mysql/prompts/sysSchema.d.ts +8 -0
- package/dist/adapters/mysql/prompts/sysSchema.d.ts.map +1 -0
- package/dist/adapters/mysql/prompts/sysSchema.js +103 -0
- package/dist/adapters/mysql/prompts/sysSchema.js.map +1 -0
- package/dist/adapters/mysql/resources/capabilities.d.ts +9 -0
- package/dist/adapters/mysql/resources/capabilities.d.ts.map +1 -0
- package/dist/adapters/mysql/resources/capabilities.js +41 -0
- package/dist/adapters/mysql/resources/capabilities.js.map +1 -0
- package/dist/adapters/mysql/resources/cluster.d.ts +7 -0
- package/dist/adapters/mysql/resources/cluster.d.ts.map +1 -0
- package/dist/adapters/mysql/resources/cluster.js +61 -0
- package/dist/adapters/mysql/resources/cluster.js.map +1 -0
- package/dist/adapters/mysql/resources/docstore.d.ts +7 -0
- package/dist/adapters/mysql/resources/docstore.d.ts.map +1 -0
- package/dist/adapters/mysql/resources/docstore.js +61 -0
- package/dist/adapters/mysql/resources/docstore.js.map +1 -0
- package/dist/adapters/mysql/resources/events.d.ts +7 -0
- package/dist/adapters/mysql/resources/events.d.ts.map +1 -0
- package/dist/adapters/mysql/resources/events.js +41 -0
- package/dist/adapters/mysql/resources/events.js.map +1 -0
- package/dist/adapters/mysql/resources/health.d.ts +10 -0
- package/dist/adapters/mysql/resources/health.d.ts.map +1 -0
- package/dist/adapters/mysql/resources/health.js +76 -0
- package/dist/adapters/mysql/resources/health.js.map +1 -0
- package/dist/adapters/mysql/resources/index.d.ts +29 -0
- package/dist/adapters/mysql/resources/index.d.ts.map +1 -0
- package/dist/adapters/mysql/resources/index.js +66 -0
- package/dist/adapters/mysql/resources/index.js.map +1 -0
- package/dist/adapters/mysql/resources/indexes.d.ts +9 -0
- package/dist/adapters/mysql/resources/indexes.d.ts.map +1 -0
- package/dist/adapters/mysql/resources/indexes.js +88 -0
- package/dist/adapters/mysql/resources/indexes.js.map +1 -0
- package/dist/adapters/mysql/resources/innodb.d.ts +9 -0
- package/dist/adapters/mysql/resources/innodb.d.ts.map +1 -0
- package/dist/adapters/mysql/resources/innodb.js +95 -0
- package/dist/adapters/mysql/resources/innodb.js.map +1 -0
- package/dist/adapters/mysql/resources/locks.d.ts +7 -0
- package/dist/adapters/mysql/resources/locks.d.ts.map +1 -0
- package/dist/adapters/mysql/resources/locks.js +57 -0
- package/dist/adapters/mysql/resources/locks.js.map +1 -0
- package/dist/adapters/mysql/resources/performance.d.ts +9 -0
- package/dist/adapters/mysql/resources/performance.d.ts.map +1 -0
- package/dist/adapters/mysql/resources/performance.js +89 -0
- package/dist/adapters/mysql/resources/performance.js.map +1 -0
- package/dist/adapters/mysql/resources/pool.d.ts +7 -0
- package/dist/adapters/mysql/resources/pool.d.ts.map +1 -0
- package/dist/adapters/mysql/resources/pool.js +21 -0
- package/dist/adapters/mysql/resources/pool.js.map +1 -0
- package/dist/adapters/mysql/resources/processlist.d.ts +7 -0
- package/dist/adapters/mysql/resources/processlist.d.ts.map +1 -0
- package/dist/adapters/mysql/resources/processlist.js +18 -0
- package/dist/adapters/mysql/resources/processlist.js.map +1 -0
- package/dist/adapters/mysql/resources/replication.d.ts +9 -0
- package/dist/adapters/mysql/resources/replication.d.ts.map +1 -0
- package/dist/adapters/mysql/resources/replication.js +116 -0
- package/dist/adapters/mysql/resources/replication.js.map +1 -0
- package/dist/adapters/mysql/resources/schema.d.ts +7 -0
- package/dist/adapters/mysql/resources/schema.d.ts.map +1 -0
- package/dist/adapters/mysql/resources/schema.js +18 -0
- package/dist/adapters/mysql/resources/schema.js.map +1 -0
- package/dist/adapters/mysql/resources/spatial.d.ts +7 -0
- package/dist/adapters/mysql/resources/spatial.d.ts.map +1 -0
- package/dist/adapters/mysql/resources/spatial.js +47 -0
- package/dist/adapters/mysql/resources/spatial.js.map +1 -0
- package/dist/adapters/mysql/resources/status.d.ts +7 -0
- package/dist/adapters/mysql/resources/status.d.ts.map +1 -0
- package/dist/adapters/mysql/resources/status.js +22 -0
- package/dist/adapters/mysql/resources/status.js.map +1 -0
- package/dist/adapters/mysql/resources/sysschema.d.ts +7 -0
- package/dist/adapters/mysql/resources/sysschema.d.ts.map +1 -0
- package/dist/adapters/mysql/resources/sysschema.js +50 -0
- package/dist/adapters/mysql/resources/sysschema.js.map +1 -0
- package/dist/adapters/mysql/resources/tables.d.ts +7 -0
- package/dist/adapters/mysql/resources/tables.d.ts.map +1 -0
- package/dist/adapters/mysql/resources/tables.js +18 -0
- package/dist/adapters/mysql/resources/tables.js.map +1 -0
- package/dist/adapters/mysql/resources/variables.d.ts +7 -0
- package/dist/adapters/mysql/resources/variables.d.ts.map +1 -0
- package/dist/adapters/mysql/resources/variables.js +22 -0
- package/dist/adapters/mysql/resources/variables.js.map +1 -0
- package/dist/adapters/mysql/tools/admin/backup.d.ts +13 -0
- package/dist/adapters/mysql/tools/admin/backup.d.ts.map +1 -0
- package/dist/adapters/mysql/tools/admin/backup.js +208 -0
- package/dist/adapters/mysql/tools/admin/backup.js.map +1 -0
- package/dist/adapters/mysql/tools/admin/index.d.ts +21 -0
- package/dist/adapters/mysql/tools/admin/index.d.ts.map +1 -0
- package/dist/adapters/mysql/tools/admin/index.js +49 -0
- package/dist/adapters/mysql/tools/admin/index.js.map +1 -0
- package/dist/adapters/mysql/tools/admin/maintenance.d.ts +15 -0
- package/dist/adapters/mysql/tools/admin/maintenance.d.ts.map +1 -0
- package/dist/adapters/mysql/tools/admin/maintenance.js +143 -0
- package/dist/adapters/mysql/tools/admin/maintenance.js.map +1 -0
- package/dist/adapters/mysql/tools/admin/monitoring.d.ts +16 -0
- package/dist/adapters/mysql/tools/admin/monitoring.d.ts.map +1 -0
- package/dist/adapters/mysql/tools/admin/monitoring.js +199 -0
- package/dist/adapters/mysql/tools/admin/monitoring.js.map +1 -0
- package/dist/adapters/mysql/tools/cluster/group-replication.d.ts +29 -0
- package/dist/adapters/mysql/tools/cluster/group-replication.d.ts.map +1 -0
- package/dist/adapters/mysql/tools/cluster/group-replication.js +290 -0
- package/dist/adapters/mysql/tools/cluster/group-replication.js.map +1 -0
- package/dist/adapters/mysql/tools/cluster/index.d.ts +13 -0
- package/dist/adapters/mysql/tools/cluster/index.d.ts.map +1 -0
- package/dist/adapters/mysql/tools/cluster/index.js +27 -0
- package/dist/adapters/mysql/tools/cluster/index.js.map +1 -0
- package/dist/adapters/mysql/tools/cluster/innodb-cluster.d.ts +29 -0
- package/dist/adapters/mysql/tools/cluster/innodb-cluster.d.ts.map +1 -0
- package/dist/adapters/mysql/tools/cluster/innodb-cluster.js +351 -0
- package/dist/adapters/mysql/tools/cluster/innodb-cluster.js.map +1 -0
- package/dist/adapters/mysql/tools/core.d.ts +13 -0
- package/dist/adapters/mysql/tools/core.d.ts.map +1 -0
- package/dist/adapters/mysql/tools/core.js +308 -0
- package/dist/adapters/mysql/tools/core.js.map +1 -0
- package/dist/adapters/mysql/tools/docstore.d.ts +10 -0
- package/dist/adapters/mysql/tools/docstore.d.ts.map +1 -0
- package/dist/adapters/mysql/tools/docstore.js +320 -0
- package/dist/adapters/mysql/tools/docstore.js.map +1 -0
- package/dist/adapters/mysql/tools/events.d.ts +13 -0
- package/dist/adapters/mysql/tools/events.d.ts.map +1 -0
- package/dist/adapters/mysql/tools/events.js +367 -0
- package/dist/adapters/mysql/tools/events.js.map +1 -0
- package/dist/adapters/mysql/tools/index.d.ts +25 -0
- package/dist/adapters/mysql/tools/index.d.ts.map +1 -0
- package/dist/adapters/mysql/tools/index.js +43 -0
- package/dist/adapters/mysql/tools/index.js.map +1 -0
- package/dist/adapters/mysql/tools/json/core.d.ts +17 -0
- package/dist/adapters/mysql/tools/json/core.d.ts.map +1 -0
- package/dist/adapters/mysql/tools/json/core.js +264 -0
- package/dist/adapters/mysql/tools/json/core.js.map +1 -0
- package/dist/adapters/mysql/tools/json/enhanced.d.ts +14 -0
- package/dist/adapters/mysql/tools/json/enhanced.d.ts.map +1 -0
- package/dist/adapters/mysql/tools/json/enhanced.js +305 -0
- package/dist/adapters/mysql/tools/json/enhanced.js.map +1 -0
- package/dist/adapters/mysql/tools/json/helpers.d.ts +16 -0
- package/dist/adapters/mysql/tools/json/helpers.d.ts.map +1 -0
- package/dist/adapters/mysql/tools/json/helpers.js +118 -0
- package/dist/adapters/mysql/tools/json/helpers.js.map +1 -0
- package/dist/adapters/mysql/tools/json/index.d.ts +21 -0
- package/dist/adapters/mysql/tools/json/index.d.ts.map +1 -0
- package/dist/adapters/mysql/tools/json/index.js +49 -0
- package/dist/adapters/mysql/tools/json/index.js.map +1 -0
- package/dist/adapters/mysql/tools/partitioning.d.ts +13 -0
- package/dist/adapters/mysql/tools/partitioning.d.ts.map +1 -0
- package/dist/adapters/mysql/tools/partitioning.js +160 -0
- package/dist/adapters/mysql/tools/partitioning.js.map +1 -0
- package/dist/adapters/mysql/tools/performance/analysis.d.ts +17 -0
- package/dist/adapters/mysql/tools/performance/analysis.d.ts.map +1 -0
- package/dist/adapters/mysql/tools/performance/analysis.js +278 -0
- package/dist/adapters/mysql/tools/performance/analysis.js.map +1 -0
- package/dist/adapters/mysql/tools/performance/index.d.ts +17 -0
- package/dist/adapters/mysql/tools/performance/index.d.ts.map +1 -0
- package/dist/adapters/mysql/tools/performance/index.js +36 -0
- package/dist/adapters/mysql/tools/performance/index.js.map +1 -0
- package/dist/adapters/mysql/tools/performance/optimization.d.ts +13 -0
- package/dist/adapters/mysql/tools/performance/optimization.d.ts.map +1 -0
- package/dist/adapters/mysql/tools/performance/optimization.js +187 -0
- package/dist/adapters/mysql/tools/performance/optimization.js.map +1 -0
- package/dist/adapters/mysql/tools/proxysql.d.ts +16 -0
- package/dist/adapters/mysql/tools/proxysql.d.ts.map +1 -0
- package/dist/adapters/mysql/tools/proxysql.js +427 -0
- package/dist/adapters/mysql/tools/proxysql.js.map +1 -0
- package/dist/adapters/mysql/tools/replication.d.ts +13 -0
- package/dist/adapters/mysql/tools/replication.d.ts.map +1 -0
- package/dist/adapters/mysql/tools/replication.js +191 -0
- package/dist/adapters/mysql/tools/replication.js.map +1 -0
- package/dist/adapters/mysql/tools/roles.d.ts +7 -0
- package/dist/adapters/mysql/tools/roles.d.ts.map +1 -0
- package/dist/adapters/mysql/tools/roles.js +190 -0
- package/dist/adapters/mysql/tools/roles.js.map +1 -0
- package/dist/adapters/mysql/tools/router.d.ts +16 -0
- package/dist/adapters/mysql/tools/router.d.ts.map +1 -0
- package/dist/adapters/mysql/tools/router.js +369 -0
- package/dist/adapters/mysql/tools/router.js.map +1 -0
- package/dist/adapters/mysql/tools/schema/constraints.d.ts +7 -0
- package/dist/adapters/mysql/tools/schema/constraints.d.ts.map +1 -0
- package/dist/adapters/mysql/tools/schema/constraints.js +67 -0
- package/dist/adapters/mysql/tools/schema/constraints.js.map +1 -0
- package/dist/adapters/mysql/tools/schema/index.d.ts +12 -0
- package/dist/adapters/mysql/tools/schema/index.d.ts.map +1 -0
- package/dist/adapters/mysql/tools/schema/index.js +29 -0
- package/dist/adapters/mysql/tools/schema/index.js.map +1 -0
- package/dist/adapters/mysql/tools/schema/management.d.ts +15 -0
- package/dist/adapters/mysql/tools/schema/management.d.ts.map +1 -0
- package/dist/adapters/mysql/tools/schema/management.js +113 -0
- package/dist/adapters/mysql/tools/schema/management.js.map +1 -0
- package/dist/adapters/mysql/tools/schema/routines.d.ts +11 -0
- package/dist/adapters/mysql/tools/schema/routines.d.ts.map +1 -0
- package/dist/adapters/mysql/tools/schema/routines.js +98 -0
- package/dist/adapters/mysql/tools/schema/routines.js.map +1 -0
- package/dist/adapters/mysql/tools/schema/scheduled_events.d.ts +7 -0
- package/dist/adapters/mysql/tools/schema/scheduled_events.d.ts.map +1 -0
- package/dist/adapters/mysql/tools/schema/scheduled_events.js +58 -0
- package/dist/adapters/mysql/tools/schema/scheduled_events.js.map +1 -0
- package/dist/adapters/mysql/tools/schema/triggers.d.ts +7 -0
- package/dist/adapters/mysql/tools/schema/triggers.d.ts.map +1 -0
- package/dist/adapters/mysql/tools/schema/triggers.js +49 -0
- package/dist/adapters/mysql/tools/schema/triggers.js.map +1 -0
- package/dist/adapters/mysql/tools/schema/views.d.ts +11 -0
- package/dist/adapters/mysql/tools/schema/views.d.ts.map +1 -0
- package/dist/adapters/mysql/tools/schema/views.js +78 -0
- package/dist/adapters/mysql/tools/schema/views.js.map +1 -0
- package/dist/adapters/mysql/tools/security/audit.d.ts +20 -0
- package/dist/adapters/mysql/tools/security/audit.d.ts.map +1 -0
- package/dist/adapters/mysql/tools/security/audit.js +233 -0
- package/dist/adapters/mysql/tools/security/audit.js.map +1 -0
- package/dist/adapters/mysql/tools/security/data-protection.d.ts +20 -0
- package/dist/adapters/mysql/tools/security/data-protection.d.ts.map +1 -0
- package/dist/adapters/mysql/tools/security/data-protection.js +243 -0
- package/dist/adapters/mysql/tools/security/data-protection.js.map +1 -0
- package/dist/adapters/mysql/tools/security/encryption.d.ts +20 -0
- package/dist/adapters/mysql/tools/security/encryption.d.ts.map +1 -0
- package/dist/adapters/mysql/tools/security/encryption.js +191 -0
- package/dist/adapters/mysql/tools/security/encryption.js.map +1 -0
- package/dist/adapters/mysql/tools/security/index.d.ts +13 -0
- package/dist/adapters/mysql/tools/security/index.d.ts.map +1 -0
- package/dist/adapters/mysql/tools/security/index.js +27 -0
- package/dist/adapters/mysql/tools/security/index.js.map +1 -0
- package/dist/adapters/mysql/tools/shell/backup.d.ts +19 -0
- package/dist/adapters/mysql/tools/shell/backup.d.ts.map +1 -0
- package/dist/adapters/mysql/tools/shell/backup.js +187 -0
- package/dist/adapters/mysql/tools/shell/backup.js.map +1 -0
- package/dist/adapters/mysql/tools/shell/common.d.ts +41 -0
- package/dist/adapters/mysql/tools/shell/common.d.ts.map +1 -0
- package/dist/adapters/mysql/tools/shell/common.js +167 -0
- package/dist/adapters/mysql/tools/shell/common.js.map +1 -0
- package/dist/adapters/mysql/tools/shell/data-transfer.d.ts +19 -0
- package/dist/adapters/mysql/tools/shell/data-transfer.d.ts.map +1 -0
- package/dist/adapters/mysql/tools/shell/data-transfer.js +226 -0
- package/dist/adapters/mysql/tools/shell/data-transfer.js.map +1 -0
- package/dist/adapters/mysql/tools/shell/index.d.ts +17 -0
- package/dist/adapters/mysql/tools/shell/index.d.ts.map +1 -0
- package/dist/adapters/mysql/tools/shell/index.js +34 -0
- package/dist/adapters/mysql/tools/shell/index.js.map +1 -0
- package/dist/adapters/mysql/tools/shell/info.d.ts +11 -0
- package/dist/adapters/mysql/tools/shell/info.d.ts.map +1 -0
- package/dist/adapters/mysql/tools/shell/info.js +40 -0
- package/dist/adapters/mysql/tools/shell/info.js.map +1 -0
- package/dist/adapters/mysql/tools/shell/restore.d.ts +15 -0
- package/dist/adapters/mysql/tools/shell/restore.d.ts.map +1 -0
- package/dist/adapters/mysql/tools/shell/restore.js +135 -0
- package/dist/adapters/mysql/tools/shell/restore.js.map +1 -0
- package/dist/adapters/mysql/tools/shell/utilities.d.ts +11 -0
- package/dist/adapters/mysql/tools/shell/utilities.d.ts.map +1 -0
- package/dist/adapters/mysql/tools/shell/utilities.js +49 -0
- package/dist/adapters/mysql/tools/shell/utilities.js.map +1 -0
- package/dist/adapters/mysql/tools/spatial/geometry.d.ts +17 -0
- package/dist/adapters/mysql/tools/spatial/geometry.d.ts.map +1 -0
- package/dist/adapters/mysql/tools/spatial/geometry.js +87 -0
- package/dist/adapters/mysql/tools/spatial/geometry.js.map +1 -0
- package/dist/adapters/mysql/tools/spatial/index.d.ts +13 -0
- package/dist/adapters/mysql/tools/spatial/index.d.ts.map +1 -0
- package/dist/adapters/mysql/tools/spatial/index.js +31 -0
- package/dist/adapters/mysql/tools/spatial/index.js.map +1 -0
- package/dist/adapters/mysql/tools/spatial/operations.d.ts +25 -0
- package/dist/adapters/mysql/tools/spatial/operations.d.ts.map +1 -0
- package/dist/adapters/mysql/tools/spatial/operations.js +179 -0
- package/dist/adapters/mysql/tools/spatial/operations.js.map +1 -0
- package/dist/adapters/mysql/tools/spatial/queries.d.ts +25 -0
- package/dist/adapters/mysql/tools/spatial/queries.d.ts.map +1 -0
- package/dist/adapters/mysql/tools/spatial/queries.js +205 -0
- package/dist/adapters/mysql/tools/spatial/queries.js.map +1 -0
- package/dist/adapters/mysql/tools/spatial/setup.d.ts +17 -0
- package/dist/adapters/mysql/tools/spatial/setup.d.ts.map +1 -0
- package/dist/adapters/mysql/tools/spatial/setup.js +85 -0
- package/dist/adapters/mysql/tools/spatial/setup.js.map +1 -0
- package/dist/adapters/mysql/tools/stats/comparative.d.ts +21 -0
- package/dist/adapters/mysql/tools/stats/comparative.d.ts.map +1 -0
- package/dist/adapters/mysql/tools/stats/comparative.js +247 -0
- package/dist/adapters/mysql/tools/stats/comparative.js.map +1 -0
- package/dist/adapters/mysql/tools/stats/descriptive.d.ts +30 -0
- package/dist/adapters/mysql/tools/stats/descriptive.d.ts.map +1 -0
- package/dist/adapters/mysql/tools/stats/descriptive.js +403 -0
- package/dist/adapters/mysql/tools/stats/descriptive.js.map +1 -0
- package/dist/adapters/mysql/tools/stats/index.d.ts +13 -0
- package/dist/adapters/mysql/tools/stats/index.d.ts.map +1 -0
- package/dist/adapters/mysql/tools/stats/index.js +25 -0
- package/dist/adapters/mysql/tools/stats/index.js.map +1 -0
- package/dist/adapters/mysql/tools/sysschema/activity.d.ts +17 -0
- package/dist/adapters/mysql/tools/sysschema/activity.d.ts.map +1 -0
- package/dist/adapters/mysql/tools/sysschema/activity.js +107 -0
- package/dist/adapters/mysql/tools/sysschema/activity.js.map +1 -0
- package/dist/adapters/mysql/tools/sysschema/index.d.ts +13 -0
- package/dist/adapters/mysql/tools/sysschema/index.d.ts.map +1 -0
- package/dist/adapters/mysql/tools/sysschema/index.js +26 -0
- package/dist/adapters/mysql/tools/sysschema/index.js.map +1 -0
- package/dist/adapters/mysql/tools/sysschema/performance.d.ts +21 -0
- package/dist/adapters/mysql/tools/sysschema/performance.d.ts.map +1 -0
- package/dist/adapters/mysql/tools/sysschema/performance.js +220 -0
- package/dist/adapters/mysql/tools/sysschema/performance.js.map +1 -0
- package/dist/adapters/mysql/tools/sysschema/resources.d.ts +21 -0
- package/dist/adapters/mysql/tools/sysschema/resources.d.ts.map +1 -0
- package/dist/adapters/mysql/tools/sysschema/resources.js +214 -0
- package/dist/adapters/mysql/tools/sysschema/resources.js.map +1 -0
- package/dist/adapters/mysql/tools/text/fulltext.d.ts +13 -0
- package/dist/adapters/mysql/tools/text/fulltext.d.ts.map +1 -0
- package/dist/adapters/mysql/tools/text/fulltext.js +116 -0
- package/dist/adapters/mysql/tools/text/fulltext.js.map +1 -0
- package/dist/adapters/mysql/tools/text/index.d.ts +17 -0
- package/dist/adapters/mysql/tools/text/index.d.ts.map +1 -0
- package/dist/adapters/mysql/tools/text/index.js +34 -0
- package/dist/adapters/mysql/tools/text/index.js.map +1 -0
- package/dist/adapters/mysql/tools/text/processing.d.ts +15 -0
- package/dist/adapters/mysql/tools/text/processing.d.ts.map +1 -0
- package/dist/adapters/mysql/tools/text/processing.js +203 -0
- package/dist/adapters/mysql/tools/text/processing.js.map +1 -0
- package/dist/adapters/mysql/tools/transactions.d.ts +13 -0
- package/dist/adapters/mysql/tools/transactions.d.ts.map +1 -0
- package/dist/adapters/mysql/tools/transactions.js +224 -0
- package/dist/adapters/mysql/tools/transactions.js.map +1 -0
- package/dist/adapters/mysql/types/proxysql-types.d.ts +156 -0
- package/dist/adapters/mysql/types/proxysql-types.d.ts.map +1 -0
- package/dist/adapters/mysql/types/proxysql-types.js +150 -0
- package/dist/adapters/mysql/types/proxysql-types.js.map +1 -0
- package/dist/adapters/mysql/types/router-types.d.ts +97 -0
- package/dist/adapters/mysql/types/router-types.d.ts.map +1 -0
- package/dist/adapters/mysql/types/router-types.js +89 -0
- package/dist/adapters/mysql/types/router-types.js.map +1 -0
- package/dist/adapters/mysql/types/shell-types.d.ts +109 -0
- package/dist/adapters/mysql/types/shell-types.d.ts.map +1 -0
- package/dist/adapters/mysql/types/shell-types.js +119 -0
- package/dist/adapters/mysql/types/shell-types.js.map +1 -0
- package/dist/adapters/mysql/types.d.ts +257 -0
- package/dist/adapters/mysql/types.d.ts.map +1 -0
- package/dist/adapters/mysql/types.js +245 -0
- package/dist/adapters/mysql/types.js.map +1 -0
- package/dist/auth/AuthorizationServerDiscovery.d.ts +44 -0
- package/dist/auth/AuthorizationServerDiscovery.d.ts.map +1 -0
- package/dist/auth/AuthorizationServerDiscovery.js +110 -0
- package/dist/auth/AuthorizationServerDiscovery.js.map +1 -0
- package/dist/auth/OAuthResourceServer.d.ts +42 -0
- package/dist/auth/OAuthResourceServer.d.ts.map +1 -0
- package/dist/auth/OAuthResourceServer.js +75 -0
- package/dist/auth/OAuthResourceServer.js.map +1 -0
- package/dist/auth/TokenValidator.d.ts +36 -0
- package/dist/auth/TokenValidator.d.ts.map +1 -0
- package/dist/auth/TokenValidator.js +125 -0
- package/dist/auth/TokenValidator.js.map +1 -0
- package/dist/auth/errors.d.ts +63 -0
- package/dist/auth/errors.d.ts.map +1 -0
- package/dist/auth/errors.js +102 -0
- package/dist/auth/errors.js.map +1 -0
- package/dist/auth/index.d.ts +13 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +15 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/middleware.d.ts +61 -0
- package/dist/auth/middleware.d.ts.map +1 -0
- package/dist/auth/middleware.js +152 -0
- package/dist/auth/middleware.js.map +1 -0
- package/dist/auth/scopes.d.ts +61 -0
- package/dist/auth/scopes.d.ts.map +1 -0
- package/dist/auth/scopes.js +167 -0
- package/dist/auth/scopes.js.map +1 -0
- package/dist/auth/types.d.ts +208 -0
- package/dist/auth/types.d.ts.map +1 -0
- package/dist/auth/types.js +8 -0
- package/dist/auth/types.js.map +1 -0
- package/dist/cli/args.d.ts +15 -0
- package/dist/cli/args.d.ts.map +1 -0
- package/dist/cli/args.js +303 -0
- package/dist/cli/args.js.map +1 -0
- package/dist/cli.d.ts +17 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +141 -0
- package/dist/cli.js.map +1 -0
- package/dist/constants/ServerInstructions.d.ts +17 -0
- package/dist/constants/ServerInstructions.d.ts.map +1 -0
- package/dist/constants/ServerInstructions.js +143 -0
- package/dist/constants/ServerInstructions.js.map +1 -0
- package/dist/filtering/ToolConstants.d.ts +32 -0
- package/dist/filtering/ToolConstants.d.ts.map +1 -0
- package/dist/filtering/ToolConstants.js +290 -0
- package/dist/filtering/ToolConstants.js.map +1 -0
- package/dist/filtering/ToolFilter.d.ts +82 -0
- package/dist/filtering/ToolFilter.d.ts.map +1 -0
- package/dist/filtering/ToolFilter.js +319 -0
- package/dist/filtering/ToolFilter.js.map +1 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +19 -0
- package/dist/index.js.map +1 -0
- package/dist/logging/McpLogging.d.ts +81 -0
- package/dist/logging/McpLogging.d.ts.map +1 -0
- package/dist/logging/McpLogging.js +129 -0
- package/dist/logging/McpLogging.js.map +1 -0
- package/dist/logging/index.d.ts +7 -0
- package/dist/logging/index.d.ts.map +1 -0
- package/dist/logging/index.js +7 -0
- package/dist/logging/index.js.map +1 -0
- package/dist/pool/ConnectionPool.d.ts +76 -0
- package/dist/pool/ConnectionPool.d.ts.map +1 -0
- package/dist/pool/ConnectionPool.js +238 -0
- package/dist/pool/ConnectionPool.js.map +1 -0
- package/dist/progress/ProgressReporter.d.ts +101 -0
- package/dist/progress/ProgressReporter.d.ts.map +1 -0
- package/dist/progress/ProgressReporter.js +153 -0
- package/dist/progress/ProgressReporter.js.map +1 -0
- package/dist/progress/index.d.ts +7 -0
- package/dist/progress/index.d.ts.map +1 -0
- package/dist/progress/index.js +7 -0
- package/dist/progress/index.js.map +1 -0
- package/dist/server/McpServer.d.ts +86 -0
- package/dist/server/McpServer.d.ts.map +1 -0
- package/dist/server/McpServer.js +289 -0
- package/dist/server/McpServer.js.map +1 -0
- package/dist/transports/http.d.ts +74 -0
- package/dist/transports/http.d.ts.map +1 -0
- package/dist/transports/http.js +199 -0
- package/dist/transports/http.js.map +1 -0
- package/dist/transports/index.d.ts +7 -0
- package/dist/transports/index.d.ts.map +1 -0
- package/dist/transports/index.js +7 -0
- package/dist/transports/index.js.map +1 -0
- package/dist/types/index.d.ts +15 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +11 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/modules/database.d.ts +101 -0
- package/dist/types/modules/database.d.ts.map +1 -0
- package/dist/types/modules/database.js +8 -0
- package/dist/types/modules/database.js.map +1 -0
- package/dist/types/modules/errors.d.ts +56 -0
- package/dist/types/modules/errors.d.ts.map +1 -0
- package/dist/types/modules/errors.js +82 -0
- package/dist/types/modules/errors.js.map +1 -0
- package/dist/types/modules/oauth.d.ts +66 -0
- package/dist/types/modules/oauth.d.ts.map +1 -0
- package/dist/types/modules/oauth.js +8 -0
- package/dist/types/modules/oauth.js.map +1 -0
- package/dist/types/modules/query.d.ts +126 -0
- package/dist/types/modules/query.d.ts.map +1 -0
- package/dist/types/modules/query.js +8 -0
- package/dist/types/modules/query.js.map +1 -0
- package/dist/types/modules/server.d.ts +31 -0
- package/dist/types/modules/server.d.ts.map +1 -0
- package/dist/types/modules/server.js +7 -0
- package/dist/types/modules/server.js.map +1 -0
- package/dist/types/modules/tools.d.ts +202 -0
- package/dist/types/modules/tools.d.ts.map +1 -0
- package/dist/types/modules/tools.js +8 -0
- package/dist/types/modules/tools.js.map +1 -0
- package/dist/utils/logger.d.ts +116 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +315 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/promptGenerator.d.ts +15 -0
- package/dist/utils/promptGenerator.d.ts.map +1 -0
- package/dist/utils/promptGenerator.js +51 -0
- package/dist/utils/promptGenerator.js.map +1 -0
- package/dist/utils/validators.d.ts +59 -0
- package/dist/utils/validators.d.ts.map +1 -0
- package/dist/utils/validators.js +145 -0
- package/dist/utils/validators.js.map +1 -0
- package/eslint.config.js +86 -0
- package/package.json +66 -0
- package/releases/release-notes.md +134 -0
- package/releases/v2.0.0-release-notes.md +522 -0
- package/releases/v2.1.0-release-notes.md +145 -0
- package/server.json +33 -0
- package/src/__tests__/cli.test.ts +304 -0
- package/src/__tests__/index.test.ts +25 -0
- package/src/__tests__/mocks/adapter.ts +265 -0
- package/src/__tests__/mocks/index.ts +36 -0
- package/src/__tests__/mocks/mysql.ts +135 -0
- package/src/__tests__/perf.test.ts +224 -0
- package/src/__tests__/performance.test.ts +181 -0
- package/src/__tests__/setup.ts +55 -0
- package/src/adapters/DatabaseAdapter.ts +376 -0
- package/src/adapters/__tests__/DatabaseAdapter.test.ts +441 -0
- package/src/adapters/mysql/MySQLAdapter.ts +544 -0
- package/src/adapters/mysql/SchemaManager.ts +298 -0
- package/src/adapters/mysql/__tests__/MySQLAdapter.integration.test.ts +155 -0
- package/src/adapters/mysql/__tests__/MySQLAdapter.test.ts +510 -0
- package/src/adapters/mysql/__tests__/SchemaManager.test.ts +165 -0
- package/src/adapters/mysql/index.ts +8 -0
- package/src/adapters/mysql/prompts/__tests__/indexTuning.test.ts +32 -0
- package/src/adapters/mysql/prompts/__tests__/prompts.test.ts +301 -0
- package/src/adapters/mysql/prompts/backupStrategy.ts +81 -0
- package/src/adapters/mysql/prompts/clusterSetup.ts +118 -0
- package/src/adapters/mysql/prompts/docstoreSetup.ts +123 -0
- package/src/adapters/mysql/prompts/eventScheduler.ts +103 -0
- package/src/adapters/mysql/prompts/healthCheck.ts +56 -0
- package/src/adapters/mysql/prompts/index.ts +329 -0
- package/src/adapters/mysql/prompts/indexTuning.ts +90 -0
- package/src/adapters/mysql/prompts/mysqlshSetup.ts +119 -0
- package/src/adapters/mysql/prompts/proxysqlSetup.ts +115 -0
- package/src/adapters/mysql/prompts/replicationSetup.ts +147 -0
- package/src/adapters/mysql/prompts/routerSetup.ts +106 -0
- package/src/adapters/mysql/prompts/spatialSetup.ts +109 -0
- package/src/adapters/mysql/prompts/sysSchema.ts +109 -0
- package/src/adapters/mysql/resources/__tests__/capabilities.test.ts +52 -0
- package/src/adapters/mysql/resources/__tests__/cluster.test.ts +105 -0
- package/src/adapters/mysql/resources/__tests__/docstore.test.ts +97 -0
- package/src/adapters/mysql/resources/__tests__/events.test.ts +97 -0
- package/src/adapters/mysql/resources/__tests__/health.test.ts +92 -0
- package/src/adapters/mysql/resources/__tests__/indexes.test.ts +106 -0
- package/src/adapters/mysql/resources/__tests__/innodb.test.ts +74 -0
- package/src/adapters/mysql/resources/__tests__/locks.test.ts +110 -0
- package/src/adapters/mysql/resources/__tests__/performance.test.ts +60 -0
- package/src/adapters/mysql/resources/__tests__/pool.test.ts +50 -0
- package/src/adapters/mysql/resources/__tests__/processlist.test.ts +29 -0
- package/src/adapters/mysql/resources/__tests__/replication.test.ts +213 -0
- package/src/adapters/mysql/resources/__tests__/resources.test.ts +117 -0
- package/src/adapters/mysql/resources/__tests__/schema.test.ts +30 -0
- package/src/adapters/mysql/resources/__tests__/spatial.test.ts +47 -0
- package/src/adapters/mysql/resources/__tests__/status.test.ts +58 -0
- package/src/adapters/mysql/resources/__tests__/sysschema.test.ts +62 -0
- package/src/adapters/mysql/resources/__tests__/tables.test.ts +37 -0
- package/src/adapters/mysql/resources/__tests__/variables.test.ts +70 -0
- package/src/adapters/mysql/resources/capabilities.ts +51 -0
- package/src/adapters/mysql/resources/cluster.ts +71 -0
- package/src/adapters/mysql/resources/docstore.ts +69 -0
- package/src/adapters/mysql/resources/events.ts +50 -0
- package/src/adapters/mysql/resources/health.ts +96 -0
- package/src/adapters/mysql/resources/index.ts +77 -0
- package/src/adapters/mysql/resources/indexes.ts +98 -0
- package/src/adapters/mysql/resources/innodb.ts +110 -0
- package/src/adapters/mysql/resources/locks.ts +64 -0
- package/src/adapters/mysql/resources/performance.ts +100 -0
- package/src/adapters/mysql/resources/pool.ts +26 -0
- package/src/adapters/mysql/resources/processlist.ts +23 -0
- package/src/adapters/mysql/resources/replication.ts +120 -0
- package/src/adapters/mysql/resources/schema.ts +23 -0
- package/src/adapters/mysql/resources/spatial.ts +54 -0
- package/src/adapters/mysql/resources/status.ts +27 -0
- package/src/adapters/mysql/resources/sysschema.ts +57 -0
- package/src/adapters/mysql/resources/tables.ts +23 -0
- package/src/adapters/mysql/resources/variables.ts +27 -0
- package/src/adapters/mysql/tools/__tests__/cluster.test.ts +349 -0
- package/src/adapters/mysql/tools/__tests__/core.test.ts +439 -0
- package/src/adapters/mysql/tools/__tests__/docstore.test.ts +459 -0
- package/src/adapters/mysql/tools/__tests__/events.test.ts +515 -0
- package/src/adapters/mysql/tools/__tests__/json_core.test.ts +285 -0
- package/src/adapters/mysql/tools/__tests__/json_enhanced.test.ts +380 -0
- package/src/adapters/mysql/tools/__tests__/json_helpers.test.ts +151 -0
- package/src/adapters/mysql/tools/__tests__/proxysql.test.ts +422 -0
- package/src/adapters/mysql/tools/__tests__/replication.test.ts +478 -0
- package/src/adapters/mysql/tools/__tests__/roles.test.ts +217 -0
- package/src/adapters/mysql/tools/__tests__/router.test.ts +603 -0
- package/src/adapters/mysql/tools/__tests__/security.test.ts +466 -0
- package/src/adapters/mysql/tools/__tests__/security_injection.test.ts +188 -0
- package/src/adapters/mysql/tools/__tests__/security_integration.test.ts +223 -0
- package/src/adapters/mysql/tools/__tests__/spatial.test.ts +333 -0
- package/src/adapters/mysql/tools/__tests__/spatial_handler.test.ts +153 -0
- package/src/adapters/mysql/tools/__tests__/stats.test.ts +577 -0
- package/src/adapters/mysql/tools/__tests__/transactions.test.ts +311 -0
- package/src/adapters/mysql/tools/admin/__tests__/backup.test.ts +400 -0
- package/src/adapters/mysql/tools/admin/__tests__/maintenance.test.ts +343 -0
- package/src/adapters/mysql/tools/admin/__tests__/monitoring.test.ts +402 -0
- package/src/adapters/mysql/tools/admin/backup.ts +238 -0
- package/src/adapters/mysql/tools/admin/index.ts +77 -0
- package/src/adapters/mysql/tools/admin/maintenance.ts +160 -0
- package/src/adapters/mysql/tools/admin/monitoring.ts +229 -0
- package/src/adapters/mysql/tools/cluster/__tests__/group-replication.test.ts +204 -0
- package/src/adapters/mysql/tools/cluster/__tests__/innodb-cluster.test.ts +130 -0
- package/src/adapters/mysql/tools/cluster/group-replication.ts +324 -0
- package/src/adapters/mysql/tools/cluster/index.ts +44 -0
- package/src/adapters/mysql/tools/cluster/innodb-cluster.ts +384 -0
- package/src/adapters/mysql/tools/core.ts +363 -0
- package/src/adapters/mysql/tools/docstore.ts +346 -0
- package/src/adapters/mysql/tools/events.ts +419 -0
- package/src/adapters/mysql/tools/index.ts +60 -0
- package/src/adapters/mysql/tools/json/__tests__/core.test.ts +207 -0
- package/src/adapters/mysql/tools/json/__tests__/enhanced.test.ts +316 -0
- package/src/adapters/mysql/tools/json/__tests__/helpers.test.ts +94 -0
- package/src/adapters/mysql/tools/json/__tests__/validation.test.ts +83 -0
- package/src/adapters/mysql/tools/json/core.ts +309 -0
- package/src/adapters/mysql/tools/json/enhanced.ts +346 -0
- package/src/adapters/mysql/tools/json/helpers.ts +137 -0
- package/src/adapters/mysql/tools/json/index.ts +77 -0
- package/src/adapters/mysql/tools/partitioning.ts +184 -0
- package/src/adapters/mysql/tools/performance/__tests__/analysis.test.ts +302 -0
- package/src/adapters/mysql/tools/performance/__tests__/optimization.test.ts +201 -0
- package/src/adapters/mysql/tools/performance/analysis.ts +322 -0
- package/src/adapters/mysql/tools/performance/index.ts +56 -0
- package/src/adapters/mysql/tools/performance/optimization.ts +218 -0
- package/src/adapters/mysql/tools/proxysql.ts +465 -0
- package/src/adapters/mysql/tools/replication.ts +215 -0
- package/src/adapters/mysql/tools/roles.ts +202 -0
- package/src/adapters/mysql/tools/router.ts +405 -0
- package/src/adapters/mysql/tools/schema/__tests__/constraints.test.ts +91 -0
- package/src/adapters/mysql/tools/schema/__tests__/management.test.ts +122 -0
- package/src/adapters/mysql/tools/schema/__tests__/routines.test.ts +45 -0
- package/src/adapters/mysql/tools/schema/__tests__/scheduled_events.test.ts +44 -0
- package/src/adapters/mysql/tools/schema/__tests__/triggers.test.ts +44 -0
- package/src/adapters/mysql/tools/schema/__tests__/views.test.ts +85 -0
- package/src/adapters/mysql/tools/schema/constraints.ts +77 -0
- package/src/adapters/mysql/tools/schema/index.ts +54 -0
- package/src/adapters/mysql/tools/schema/management.ts +131 -0
- package/src/adapters/mysql/tools/schema/routines.ts +106 -0
- package/src/adapters/mysql/tools/schema/scheduled_events.ts +66 -0
- package/src/adapters/mysql/tools/schema/triggers.ts +57 -0
- package/src/adapters/mysql/tools/schema/views.ts +90 -0
- package/src/adapters/mysql/tools/security/__tests__/audit.test.ts +181 -0
- package/src/adapters/mysql/tools/security/__tests__/data-protection.test.ts +111 -0
- package/src/adapters/mysql/tools/security/__tests__/encryption.test.ts +156 -0
- package/src/adapters/mysql/tools/security/audit.ts +272 -0
- package/src/adapters/mysql/tools/security/data-protection.ts +274 -0
- package/src/adapters/mysql/tools/security/encryption.ts +237 -0
- package/src/adapters/mysql/tools/security/index.ts +45 -0
- package/src/adapters/mysql/tools/shell/__tests__/backup.test.ts +298 -0
- package/src/adapters/mysql/tools/shell/__tests__/common.test.ts +180 -0
- package/src/adapters/mysql/tools/shell/__tests__/data-transfer.test.ts +368 -0
- package/src/adapters/mysql/tools/shell/__tests__/info.test.ts +77 -0
- package/src/adapters/mysql/tools/shell/__tests__/restore.test.ts +187 -0
- package/src/adapters/mysql/tools/shell/__tests__/utilities.test.ts +154 -0
- package/src/adapters/mysql/tools/shell/backup.ts +215 -0
- package/src/adapters/mysql/tools/shell/common.ts +227 -0
- package/src/adapters/mysql/tools/shell/data-transfer.ts +256 -0
- package/src/adapters/mysql/tools/shell/index.ts +49 -0
- package/src/adapters/mysql/tools/shell/info.ts +45 -0
- package/src/adapters/mysql/tools/shell/restore.ts +153 -0
- package/src/adapters/mysql/tools/shell/utilities.ts +56 -0
- package/src/adapters/mysql/tools/spatial/__tests__/geometry.test.ts +101 -0
- package/src/adapters/mysql/tools/spatial/__tests__/operations.test.ts +164 -0
- package/src/adapters/mysql/tools/spatial/__tests__/queries.test.ts +253 -0
- package/src/adapters/mysql/tools/spatial/geometry.ts +106 -0
- package/src/adapters/mysql/tools/spatial/index.ts +54 -0
- package/src/adapters/mysql/tools/spatial/operations.ts +217 -0
- package/src/adapters/mysql/tools/spatial/queries.ts +235 -0
- package/src/adapters/mysql/tools/spatial/setup.ts +104 -0
- package/src/adapters/mysql/tools/stats/__tests__/comparative.test.ts +139 -0
- package/src/adapters/mysql/tools/stats/comparative.ts +272 -0
- package/src/adapters/mysql/tools/stats/descriptive.ts +452 -0
- package/src/adapters/mysql/tools/stats/index.ts +40 -0
- package/src/adapters/mysql/tools/sysschema/__tests__/activity.test.ts +89 -0
- package/src/adapters/mysql/tools/sysschema/__tests__/io_summary_fix.test.ts +24 -0
- package/src/adapters/mysql/tools/sysschema/__tests__/performance.test.ts +142 -0
- package/src/adapters/mysql/tools/sysschema/__tests__/resources.test.ts +142 -0
- package/src/adapters/mysql/tools/sysschema/activity.ts +122 -0
- package/src/adapters/mysql/tools/sysschema/index.ts +43 -0
- package/src/adapters/mysql/tools/sysschema/performance.ts +237 -0
- package/src/adapters/mysql/tools/sysschema/resources.ts +232 -0
- package/src/adapters/mysql/tools/text/__tests__/fulltext.test.ts +153 -0
- package/src/adapters/mysql/tools/text/__tests__/processing.test.ts +201 -0
- package/src/adapters/mysql/tools/text/fulltext.ts +140 -0
- package/src/adapters/mysql/tools/text/index.ts +52 -0
- package/src/adapters/mysql/tools/text/processing.ts +242 -0
- package/src/adapters/mysql/tools/transactions.ts +252 -0
- package/src/adapters/mysql/types/__tests__/shell-types.test.ts +210 -0
- package/src/adapters/mysql/types/proxysql-types.ts +190 -0
- package/src/adapters/mysql/types/router-types.ts +129 -0
- package/src/adapters/mysql/types/shell-types.ts +140 -0
- package/src/adapters/mysql/types.ts +298 -0
- package/src/auth/AuthorizationServerDiscovery.ts +133 -0
- package/src/auth/OAuthResourceServer.ts +87 -0
- package/src/auth/TokenValidator.ts +143 -0
- package/src/auth/__tests__/AuthorizationServerDiscovery.test.ts +312 -0
- package/src/auth/__tests__/OAuthResourceServer.test.ts +183 -0
- package/src/auth/__tests__/TokenValidator.test.ts +351 -0
- package/src/auth/__tests__/errors.test.ts +183 -0
- package/src/auth/__tests__/middleware.test.ts +276 -0
- package/src/auth/__tests__/scopes.test.ts +164 -0
- package/src/auth/errors.ts +116 -0
- package/src/auth/index.ts +30 -0
- package/src/auth/middleware.ts +214 -0
- package/src/auth/scopes.ts +193 -0
- package/src/auth/types.ts +303 -0
- package/src/cli/__tests__/args.test.ts +223 -0
- package/src/cli/__tests__/main.test.ts +193 -0
- package/src/cli/args.ts +343 -0
- package/src/cli.ts +168 -0
- package/src/constants/ServerInstructions.ts +159 -0
- package/src/filtering/ToolConstants.ts +297 -0
- package/src/filtering/ToolFilter.ts +363 -0
- package/src/filtering/__tests__/ToolFilter.test.ts +427 -0
- package/src/index.ts +78 -0
- package/src/logging/McpLogging.ts +163 -0
- package/src/logging/__tests__/McpLogging.test.ts +261 -0
- package/src/logging/index.ts +7 -0
- package/src/pool/ConnectionPool.ts +284 -0
- package/src/pool/__tests__/ConnectionPool.test.ts +448 -0
- package/src/progress/ProgressReporter.ts +179 -0
- package/src/progress/__tests__/ProgressReporter.test.ts +263 -0
- package/src/progress/index.ts +7 -0
- package/src/server/McpServer.ts +341 -0
- package/src/server/__tests__/McpServer.test.ts +368 -0
- package/src/transports/__tests__/http.test.ts +596 -0
- package/src/transports/http.ts +248 -0
- package/src/transports/index.ts +7 -0
- package/src/types/__tests__/types.test.ts +201 -0
- package/src/types/index.ts +58 -0
- package/src/types/modules/database.ts +127 -0
- package/src/types/modules/errors.ts +89 -0
- package/src/types/modules/oauth.ts +91 -0
- package/src/types/modules/query.ts +140 -0
- package/src/types/modules/server.ts +39 -0
- package/src/types/modules/tools.ts +296 -0
- package/src/utils/__tests__/logger.test.ts +422 -0
- package/src/utils/__tests__/validators.test.ts +172 -0
- package/src/utils/logger.ts +426 -0
- package/src/utils/promptGenerator.ts +74 -0
- package/src/utils/validators.ts +181 -0
- package/tsconfig.json +51 -0
- package/vitest.config.ts +26 -0
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
|
|
2
|
+
import { describe, it, expect } from 'vitest';
|
|
3
|
+
import { createMockRequestContext } from '../../../../__tests__/mocks/index.js';
|
|
4
|
+
import { createIndexTuningPrompt } from '../indexTuning.js';
|
|
5
|
+
|
|
6
|
+
describe('Index Tuning Prompt', () => {
|
|
7
|
+
|
|
8
|
+
it('should generate generic tuning advice when no table specified', async () => {
|
|
9
|
+
const prompt = createIndexTuningPrompt();
|
|
10
|
+
const result = await prompt.handler!({}, createMockRequestContext());
|
|
11
|
+
|
|
12
|
+
expect(result).toContain('Analyze and optimize indexes across the database');
|
|
13
|
+
expect(result).toContain('Start by reviewing the `mysql://indexes` resource.');
|
|
14
|
+
expect(result).not.toContain('table: **');
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
it('should generate table-specific tuning advice when table specified', async () => {
|
|
18
|
+
const prompt = createIndexTuningPrompt();
|
|
19
|
+
const result = await prompt.handler!({ table: 'users' }, createMockRequestContext());
|
|
20
|
+
|
|
21
|
+
expect(result).toContain('Analyze and optimize indexes for table: **users**');
|
|
22
|
+
expect(result).toContain('Start by analyzing indexes on table **users**.');
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
it('should have correct required argument metadata', () => {
|
|
26
|
+
const prompt = createIndexTuningPrompt();
|
|
27
|
+
expect(prompt.name).toBe('mysql_index_tuning');
|
|
28
|
+
expect(prompt.arguments).toHaveLength(1);
|
|
29
|
+
expect(prompt.arguments![0].name).toBe('table');
|
|
30
|
+
expect(prompt.arguments![0].required).toBe(false);
|
|
31
|
+
});
|
|
32
|
+
});
|
|
@@ -0,0 +1,301 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* mysql-mcp - Prompts Unit Tests
|
|
3
|
+
*
|
|
4
|
+
* Tests for prompt definitions using centralized mocks.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { describe, it, expect, vi, beforeEach } from 'vitest';
|
|
8
|
+
import { getMySQLPrompts } from '../index.js';
|
|
9
|
+
import type { MySQLAdapter } from '../../MySQLAdapter.js';
|
|
10
|
+
import { createMockMySQLAdapter, createMockRequestContext } from '../../../../__tests__/mocks/index.js';
|
|
11
|
+
|
|
12
|
+
describe('getMySQLPrompts', () => {
|
|
13
|
+
let prompts: ReturnType<typeof getMySQLPrompts>;
|
|
14
|
+
let mockAdapter: ReturnType<typeof createMockMySQLAdapter>;
|
|
15
|
+
|
|
16
|
+
beforeEach(() => {
|
|
17
|
+
vi.clearAllMocks();
|
|
18
|
+
mockAdapter = createMockMySQLAdapter();
|
|
19
|
+
prompts = getMySQLPrompts(mockAdapter as unknown as MySQLAdapter);
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
it('should return 19 prompts', () => {
|
|
23
|
+
expect(prompts).toHaveLength(19);
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
it('should have handler functions for all prompts', () => {
|
|
27
|
+
for (const prompt of prompts) {
|
|
28
|
+
expect(typeof prompt.handler).toBe('function');
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
it('should have descriptions for all prompts', () => {
|
|
33
|
+
for (const prompt of prompts) {
|
|
34
|
+
expect(prompt.description).toBeDefined();
|
|
35
|
+
expect(prompt.description.length).toBeGreaterThan(0);
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
it('should have unique names for all prompts', () => {
|
|
40
|
+
const names = prompts.map(p => p.name);
|
|
41
|
+
const uniqueNames = new Set(names);
|
|
42
|
+
expect(uniqueNames.size).toBe(names.length);
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
describe('Prompt Handler Execution', () => {
|
|
47
|
+
let prompts: ReturnType<typeof getMySQLPrompts>;
|
|
48
|
+
let mockContext: ReturnType<typeof createMockRequestContext>;
|
|
49
|
+
|
|
50
|
+
beforeEach(() => {
|
|
51
|
+
vi.clearAllMocks();
|
|
52
|
+
const mockAdapter = createMockMySQLAdapter();
|
|
53
|
+
prompts = getMySQLPrompts(mockAdapter as unknown as MySQLAdapter);
|
|
54
|
+
mockContext = createMockRequestContext();
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
const findPrompt = (name: string) => prompts.find(p => p.name === name);
|
|
58
|
+
|
|
59
|
+
describe('mysql_query_builder', () => {
|
|
60
|
+
it('should return message with query guidance', async () => {
|
|
61
|
+
const prompt = findPrompt('mysql_query_builder');
|
|
62
|
+
expect(prompt).toBeDefined();
|
|
63
|
+
|
|
64
|
+
const result = await prompt!.handler({ query_type: 'SELECT', table: 'users' }, mockContext) as string;
|
|
65
|
+
expect(typeof result).toBe('string');
|
|
66
|
+
expect(result).toContain('query');
|
|
67
|
+
expect(result).toContain('table');
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
describe('mysql_tool_index', () => {
|
|
72
|
+
it('should return tool index content', async () => {
|
|
73
|
+
const prompt = findPrompt('mysql_tool_index');
|
|
74
|
+
expect(prompt).toBeDefined();
|
|
75
|
+
|
|
76
|
+
const result = await prompt!.handler({}, mockContext) as string;
|
|
77
|
+
expect(typeof result).toBe('string');
|
|
78
|
+
expect(result).toContain('tool');
|
|
79
|
+
});
|
|
80
|
+
});
|
|
81
|
+
|
|
82
|
+
describe('mysql_quick_query', () => {
|
|
83
|
+
it('should return read query guidance by default', async () => {
|
|
84
|
+
const prompt = findPrompt('mysql_quick_query');
|
|
85
|
+
const result = await prompt!.handler({ query: 'SELECT * FROM users' }, mockContext) as string;
|
|
86
|
+
expect(result).toContain('mysql_read_query');
|
|
87
|
+
});
|
|
88
|
+
|
|
89
|
+
it('should return write query guidance when type is write', async () => {
|
|
90
|
+
const prompt = findPrompt('mysql_quick_query');
|
|
91
|
+
const result = await prompt!.handler({ sql: 'INSERT INTO users...', type: 'write' }, mockContext) as string;
|
|
92
|
+
expect(result).toContain('mysql_write_query');
|
|
93
|
+
});
|
|
94
|
+
});
|
|
95
|
+
|
|
96
|
+
describe('mysql_schema_design', () => {
|
|
97
|
+
it('should return schema design guidance', async () => {
|
|
98
|
+
const prompt = findPrompt('mysql_schema_design');
|
|
99
|
+
const result = await prompt!.handler({ entity: 'User' }, mockContext) as string;
|
|
100
|
+
expect(result).toContain('CREATE TABLE');
|
|
101
|
+
});
|
|
102
|
+
|
|
103
|
+
it('should include specific requirements if provided', async () => {
|
|
104
|
+
const prompt = findPrompt('mysql_schema_design');
|
|
105
|
+
const result = await prompt!.handler({ entity: 'User', requirements: 'Must include email indexing' }, mockContext) as string;
|
|
106
|
+
expect(result).toContain('Must include email indexing');
|
|
107
|
+
});
|
|
108
|
+
});
|
|
109
|
+
|
|
110
|
+
describe('mysql_performance_analysis', () => {
|
|
111
|
+
it('should return performance analysis guidance', async () => {
|
|
112
|
+
const prompt = findPrompt('mysql_performance_analysis');
|
|
113
|
+
const result = await prompt!.handler({ query: 'SELECT * FROM slow_table' }, mockContext) as string;
|
|
114
|
+
expect(result).toContain('EXPLAIN');
|
|
115
|
+
});
|
|
116
|
+
|
|
117
|
+
it('should include context if provided', async () => {
|
|
118
|
+
const prompt = findPrompt('mysql_performance_analysis');
|
|
119
|
+
const result = await prompt!.handler({ query: 'SELECT * FROM slow_table', context: 'Table has 1M rows' }, mockContext) as string;
|
|
120
|
+
expect(result).toContain('Table has 1M rows');
|
|
121
|
+
});
|
|
122
|
+
});
|
|
123
|
+
|
|
124
|
+
describe('mysql_migration', () => {
|
|
125
|
+
it('should return migration guidance', async () => {
|
|
126
|
+
const prompt = findPrompt('mysql_migration');
|
|
127
|
+
expect(prompt).toBeDefined();
|
|
128
|
+
|
|
129
|
+
const result = await prompt!.handler({ change: 'Add column', table: 'users' }, mockContext) as string;
|
|
130
|
+
expect(typeof result).toBe('string');
|
|
131
|
+
expect(result).toContain('migration');
|
|
132
|
+
});
|
|
133
|
+
});
|
|
134
|
+
|
|
135
|
+
describe('mysql_database_health_check', () => {
|
|
136
|
+
it('should return health check guidance', async () => {
|
|
137
|
+
const prompt = findPrompt('mysql_database_health_check');
|
|
138
|
+
expect(prompt).toBeDefined();
|
|
139
|
+
|
|
140
|
+
const result = await prompt!.handler({}, mockContext);
|
|
141
|
+
expect(typeof result).toBe('string');
|
|
142
|
+
expect(result).toContain('health');
|
|
143
|
+
});
|
|
144
|
+
|
|
145
|
+
it('should include focus area if provided', async () => {
|
|
146
|
+
const prompt = findPrompt('mysql_database_health_check');
|
|
147
|
+
const result = await prompt!.handler({ focus: 'security' }, mockContext) as string;
|
|
148
|
+
expect(result).toContain('**Focus area:** security');
|
|
149
|
+
});
|
|
150
|
+
});
|
|
151
|
+
|
|
152
|
+
describe('mysql_backup_strategy', () => {
|
|
153
|
+
it('should return backup strategy guidance', async () => {
|
|
154
|
+
const prompt = findPrompt('mysql_backup_strategy');
|
|
155
|
+
expect(prompt).toBeDefined();
|
|
156
|
+
|
|
157
|
+
const result = await prompt!.handler({ rto: '1 hour', rpo: '15 minutes' }, mockContext);
|
|
158
|
+
expect(typeof result).toBe('string');
|
|
159
|
+
expect(result).toContain('backup');
|
|
160
|
+
});
|
|
161
|
+
|
|
162
|
+
it('should handle missing arguments with defaults', async () => {
|
|
163
|
+
const prompt = findPrompt('mysql_backup_strategy');
|
|
164
|
+
const result = await prompt!.handler({}, mockContext) as string;
|
|
165
|
+
expect(result).toContain('to be determined');
|
|
166
|
+
expect(result).toContain('unknown');
|
|
167
|
+
});
|
|
168
|
+
});
|
|
169
|
+
|
|
170
|
+
describe('mysql_quick_schema', () => {
|
|
171
|
+
it('should return schema exploration guidance (list tables) when no table specified', async () => {
|
|
172
|
+
const prompt = findPrompt('mysql_quick_schema');
|
|
173
|
+
const result = await prompt!.handler({}, mockContext) as string;
|
|
174
|
+
expect(result).toContain('mysql_list_tables');
|
|
175
|
+
});
|
|
176
|
+
|
|
177
|
+
it('should return describe table guidance when table is specified', async () => {
|
|
178
|
+
const prompt = findPrompt('mysql_quick_schema');
|
|
179
|
+
const result = await prompt!.handler({ table: 'users' }, mockContext) as string;
|
|
180
|
+
expect(result).toContain('mysql_describe_table');
|
|
181
|
+
expect(result).toContain('users');
|
|
182
|
+
});
|
|
183
|
+
});
|
|
184
|
+
|
|
185
|
+
describe('mysql_index_tuning', () => {
|
|
186
|
+
it('should return index tuning guidance', async () => {
|
|
187
|
+
const prompt = findPrompt('mysql_index_tuning');
|
|
188
|
+
expect(prompt).toBeDefined();
|
|
189
|
+
|
|
190
|
+
const result = await prompt!.handler({ table: 'orders' }, mockContext);
|
|
191
|
+
expect(typeof result).toBe('string');
|
|
192
|
+
expect(result).toContain('orders');
|
|
193
|
+
});
|
|
194
|
+
});
|
|
195
|
+
|
|
196
|
+
describe('mysql_setup_router', () => {
|
|
197
|
+
it('should return router setup guidance', async () => {
|
|
198
|
+
const prompt = findPrompt('mysql_setup_router');
|
|
199
|
+
expect(prompt).toBeDefined();
|
|
200
|
+
|
|
201
|
+
const result = await prompt!.handler({}, mockContext);
|
|
202
|
+
expect(typeof result).toBe('string');
|
|
203
|
+
expect(result).toContain('Router');
|
|
204
|
+
});
|
|
205
|
+
});
|
|
206
|
+
|
|
207
|
+
describe('mysql_setup_proxysql', () => {
|
|
208
|
+
it('should return proxysql setup guidance', async () => {
|
|
209
|
+
const prompt = findPrompt('mysql_setup_proxysql');
|
|
210
|
+
expect(prompt).toBeDefined();
|
|
211
|
+
|
|
212
|
+
const result = await prompt!.handler({}, mockContext);
|
|
213
|
+
expect(typeof result).toBe('string');
|
|
214
|
+
expect(result).toContain('ProxySQL');
|
|
215
|
+
});
|
|
216
|
+
});
|
|
217
|
+
|
|
218
|
+
describe('mysql_setup_replication', () => {
|
|
219
|
+
it('should return replication setup guidance', async () => {
|
|
220
|
+
const prompt = findPrompt('mysql_setup_replication');
|
|
221
|
+
expect(prompt).toBeDefined();
|
|
222
|
+
|
|
223
|
+
const result = await prompt!.handler({}, mockContext);
|
|
224
|
+
expect(typeof result).toBe('string');
|
|
225
|
+
expect(result).toContain('replication');
|
|
226
|
+
});
|
|
227
|
+
|
|
228
|
+
it('should return semisync configuration when requested', async () => {
|
|
229
|
+
const prompt = findPrompt('mysql_setup_replication');
|
|
230
|
+
const result = await prompt!.handler({ type: 'semisync' }, mockContext) as string;
|
|
231
|
+
expect(result).toContain('rpl_semi_sync_replica_enabled');
|
|
232
|
+
});
|
|
233
|
+
});
|
|
234
|
+
|
|
235
|
+
|
|
236
|
+
describe('mysql_setup_shell', () => {
|
|
237
|
+
it('should return shell setup guidance', async () => {
|
|
238
|
+
const prompt = findPrompt('mysql_setup_shell');
|
|
239
|
+
expect(prompt).toBeDefined();
|
|
240
|
+
|
|
241
|
+
const result = await prompt!.handler({}, mockContext);
|
|
242
|
+
expect(typeof result).toBe('string');
|
|
243
|
+
expect(result).toContain('MySQL Shell');
|
|
244
|
+
});
|
|
245
|
+
});
|
|
246
|
+
|
|
247
|
+
describe('mysql_setup_events', () => {
|
|
248
|
+
it('should return event scheduler guidance', async () => {
|
|
249
|
+
const prompt = findPrompt('mysql_setup_events');
|
|
250
|
+
expect(prompt).toBeDefined();
|
|
251
|
+
|
|
252
|
+
const result = await prompt!.handler({}, mockContext);
|
|
253
|
+
expect(typeof result).toBe('string');
|
|
254
|
+
expect(result).toContain('event');
|
|
255
|
+
});
|
|
256
|
+
});
|
|
257
|
+
|
|
258
|
+
describe('mysql_sys_schema_guide', () => {
|
|
259
|
+
it('should return sys schema guidance', async () => {
|
|
260
|
+
const prompt = findPrompt('mysql_sys_schema_guide');
|
|
261
|
+
expect(prompt).toBeDefined();
|
|
262
|
+
|
|
263
|
+
const result = await prompt!.handler({}, mockContext);
|
|
264
|
+
expect(typeof result).toBe('string');
|
|
265
|
+
expect(result).toContain('sys');
|
|
266
|
+
});
|
|
267
|
+
});
|
|
268
|
+
|
|
269
|
+
describe('mysql_setup_spatial', () => {
|
|
270
|
+
it('should return spatial setup guidance', async () => {
|
|
271
|
+
const prompt = findPrompt('mysql_setup_spatial');
|
|
272
|
+
expect(prompt).toBeDefined();
|
|
273
|
+
|
|
274
|
+
const result = await prompt!.handler({}, mockContext);
|
|
275
|
+
expect(typeof result).toBe('string');
|
|
276
|
+
expect(result).toContain('spatial');
|
|
277
|
+
});
|
|
278
|
+
});
|
|
279
|
+
|
|
280
|
+
describe('mysql_setup_cluster', () => {
|
|
281
|
+
it('should return cluster setup guidance', async () => {
|
|
282
|
+
const prompt = findPrompt('mysql_setup_cluster');
|
|
283
|
+
expect(prompt).toBeDefined();
|
|
284
|
+
|
|
285
|
+
const result = await prompt!.handler({}, mockContext);
|
|
286
|
+
expect(typeof result).toBe('string');
|
|
287
|
+
expect(result).toContain('cluster');
|
|
288
|
+
});
|
|
289
|
+
});
|
|
290
|
+
|
|
291
|
+
describe('mysql_setup_docstore', () => {
|
|
292
|
+
it('should return docstore setup guidance', async () => {
|
|
293
|
+
const prompt = findPrompt('mysql_setup_docstore');
|
|
294
|
+
expect(prompt).toBeDefined();
|
|
295
|
+
|
|
296
|
+
const result = await prompt!.handler({}, mockContext);
|
|
297
|
+
expect(typeof result).toBe('string');
|
|
298
|
+
expect(result).toContain('document');
|
|
299
|
+
});
|
|
300
|
+
});
|
|
301
|
+
});
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MySQL Prompt - Backup Strategy
|
|
3
|
+
*
|
|
4
|
+
* Enterprise backup planning with RTO/RPO considerations.
|
|
5
|
+
*/
|
|
6
|
+
import type { PromptDefinition, RequestContext } from '../../../types/index.js';
|
|
7
|
+
|
|
8
|
+
export function createBackupStrategyPrompt(): PromptDefinition {
|
|
9
|
+
return {
|
|
10
|
+
name: 'mysql_backup_strategy',
|
|
11
|
+
description: 'Design enterprise backup strategy with RTO/RPO planning',
|
|
12
|
+
arguments: [
|
|
13
|
+
{ name: 'rpo', description: 'Recovery Point Objective (e.g., "1 hour", "15 minutes")', required: false },
|
|
14
|
+
{ name: 'rto', description: 'Recovery Time Objective (e.g., "4 hours", "30 minutes")', required: false },
|
|
15
|
+
{ name: 'data_size', description: 'Approximate database size (e.g., "100GB", "2TB")', required: false }
|
|
16
|
+
],
|
|
17
|
+
handler: (args: Record<string, string>, _context: RequestContext) => {
|
|
18
|
+
const rpo = args['rpo'] ?? 'to be determined';
|
|
19
|
+
const rto = args['rto'] ?? 'to be determined';
|
|
20
|
+
const dataSize = args['data_size'] ?? 'unknown';
|
|
21
|
+
|
|
22
|
+
return Promise.resolve(`# MySQL Backup Strategy Planning
|
|
23
|
+
|
|
24
|
+
Design a comprehensive backup strategy for this MySQL database.
|
|
25
|
+
|
|
26
|
+
**Requirements:**
|
|
27
|
+
- **RPO (Recovery Point Objective):** ${rpo}
|
|
28
|
+
- **RTO (Recovery Time Objective):** ${rto}
|
|
29
|
+
- **Database Size:** ${dataSize}
|
|
30
|
+
|
|
31
|
+
## Step 1: Assess Current State
|
|
32
|
+
- Check current binary log configuration (\`mysql://replication\`)
|
|
33
|
+
- Review storage engine (InnoDB recommended for consistent backups)
|
|
34
|
+
- Identify critical tables/databases
|
|
35
|
+
|
|
36
|
+
## Step 2: Choose Backup Method
|
|
37
|
+
|
|
38
|
+
### Option A: mysqldump (Logical Backup)
|
|
39
|
+
- **Pros:** Portable, human-readable, works with any storage engine
|
|
40
|
+
- **Cons:** Slower for large databases, locks required for consistency
|
|
41
|
+
- Use: \`mysql_create_dump\` tool
|
|
42
|
+
- Best for: < 100GB, development, cross-version migration
|
|
43
|
+
|
|
44
|
+
### Option B: MySQL Shell Dump (Parallel Logical Backup)
|
|
45
|
+
- **Pros:** 10-20x faster than mysqldump, parallel execution
|
|
46
|
+
- **Cons:** Requires MySQL Shell 8.0+
|
|
47
|
+
- Use: \`mysqlsh_dump_instance\`, \`mysqlsh_dump_schemas\`
|
|
48
|
+
- Best for: 100GB - 2TB, faster recovery needed
|
|
49
|
+
|
|
50
|
+
### Option C: Physical Backup (Percona XtraBackup)
|
|
51
|
+
- **Pros:** Hot backup, minimal locking, fast for large databases
|
|
52
|
+
- **Cons:** Same MySQL version required for restore
|
|
53
|
+
- Best for: > 500GB, production systems
|
|
54
|
+
|
|
55
|
+
## Step 3: Configure Point-in-Time Recovery
|
|
56
|
+
1. Enable binary logging:
|
|
57
|
+
- log_bin = mysql-bin
|
|
58
|
+
- expire_logs_days = 7 (or binlog_expire_logs_seconds)
|
|
59
|
+
- sync_binlog = 1 (for durability)
|
|
60
|
+
|
|
61
|
+
2. Schedule full backups:
|
|
62
|
+
- Daily for most workloads
|
|
63
|
+
- Weekly for stable, low-change databases
|
|
64
|
+
|
|
65
|
+
3. Continuously archive binary logs to separate storage
|
|
66
|
+
|
|
67
|
+
## Step 4: Test Recovery
|
|
68
|
+
1. Regularly test full restore to a different server
|
|
69
|
+
2. Test point-in-time recovery procedure
|
|
70
|
+
3. Document and automate recovery steps
|
|
71
|
+
|
|
72
|
+
## Step 5: Create Backup Schedule
|
|
73
|
+
Based on your RPO of ${rpo}:
|
|
74
|
+
- Calculate backup frequency needed
|
|
75
|
+
- Plan retention policy
|
|
76
|
+
- Set up monitoring and alerting
|
|
77
|
+
|
|
78
|
+
Please provide your RPO/RTO requirements if not specified, and I'll create a tailored backup plan.`);
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MySQL Prompt - InnoDB Cluster Setup
|
|
3
|
+
*
|
|
4
|
+
* Complete InnoDB Cluster and Group Replication setup guide.
|
|
5
|
+
*/
|
|
6
|
+
import type { PromptDefinition, RequestContext } from '../../../types/index.js';
|
|
7
|
+
|
|
8
|
+
export function createSetupClusterPrompt(): PromptDefinition {
|
|
9
|
+
return {
|
|
10
|
+
name: 'mysql_setup_cluster',
|
|
11
|
+
description: 'Complete MySQL InnoDB Cluster and Group Replication setup guide',
|
|
12
|
+
arguments: [],
|
|
13
|
+
handler: (_args: Record<string, string>, _context: RequestContext) => {
|
|
14
|
+
return Promise.resolve(`# MySQL InnoDB Cluster Setup Guide
|
|
15
|
+
|
|
16
|
+
InnoDB Cluster provides a complete high availability solution using Group Replication, MySQL Shell, and MySQL Router.
|
|
17
|
+
|
|
18
|
+
## Prerequisites
|
|
19
|
+
|
|
20
|
+
1. **MySQL 8.0+** (required for InnoDB Cluster)
|
|
21
|
+
2. **MySQL Shell** installed
|
|
22
|
+
3. **At least 3 servers** for fault tolerance
|
|
23
|
+
4. **Network connectivity** between all nodes
|
|
24
|
+
|
|
25
|
+
## Architecture
|
|
26
|
+
|
|
27
|
+
\`\`\`
|
|
28
|
+
┌─────────────────┐
|
|
29
|
+
│ MySQL Router │ ← Applications connect here
|
|
30
|
+
└────────┬────────┘
|
|
31
|
+
│
|
|
32
|
+
┌────────┴────────┐
|
|
33
|
+
│ InnoDB Cluster │
|
|
34
|
+
├─────────────────┤
|
|
35
|
+
│ Primary (R/W) │
|
|
36
|
+
│ Secondary (R/O) │
|
|
37
|
+
│ Secondary (R/O) │
|
|
38
|
+
└─────────────────┘
|
|
39
|
+
\`\`\`
|
|
40
|
+
|
|
41
|
+
## Step 1: Configure Instances
|
|
42
|
+
|
|
43
|
+
On each MySQL server, add to my.cnf:
|
|
44
|
+
\`\`\`ini
|
|
45
|
+
[mysqld]
|
|
46
|
+
server_id = 1 # Unique per server
|
|
47
|
+
gtid_mode = ON
|
|
48
|
+
enforce_gtid_consistency = ON
|
|
49
|
+
binlog_checksum = NONE
|
|
50
|
+
\`\`\`
|
|
51
|
+
|
|
52
|
+
## Step 2: Create Cluster (MySQL Shell)
|
|
53
|
+
|
|
54
|
+
\`\`\`javascript
|
|
55
|
+
// Connect to primary
|
|
56
|
+
\\connect admin@primary-host:3306
|
|
57
|
+
|
|
58
|
+
// Configure instance
|
|
59
|
+
dba.configureInstance('admin@primary-host:3306');
|
|
60
|
+
|
|
61
|
+
// Create cluster
|
|
62
|
+
var cluster = dba.createCluster('myCluster');
|
|
63
|
+
|
|
64
|
+
// Add instances
|
|
65
|
+
cluster.addInstance('admin@secondary1:3306');
|
|
66
|
+
cluster.addInstance('admin@secondary2:3306');
|
|
67
|
+
\`\`\`
|
|
68
|
+
|
|
69
|
+
## Step 3: Check Cluster Status
|
|
70
|
+
|
|
71
|
+
\`\`\`javascript
|
|
72
|
+
cluster.status()
|
|
73
|
+
\`\`\`
|
|
74
|
+
|
|
75
|
+
## Step 4: Bootstrap Router
|
|
76
|
+
|
|
77
|
+
\`\`\`bash
|
|
78
|
+
mysqlrouter --bootstrap admin@primary-host:3306 --user=mysqlrouter
|
|
79
|
+
\`\`\`
|
|
80
|
+
|
|
81
|
+
## Available MCP Tools
|
|
82
|
+
|
|
83
|
+
| Tool | Description |
|
|
84
|
+
|------|-------------|
|
|
85
|
+
| \`mysql_gr_status\` | Group Replication status |
|
|
86
|
+
| \`mysql_gr_members\` | List group members |
|
|
87
|
+
| \`mysql_gr_primary\` | Identify current primary |
|
|
88
|
+
| \`mysql_gr_transactions\` | Pending/applied transactions |
|
|
89
|
+
| \`mysql_gr_flow_control\` | Flow control stats |
|
|
90
|
+
| \`mysql_cluster_status\` | InnoDB Cluster status |
|
|
91
|
+
| \`mysql_cluster_instances\` | List cluster instances |
|
|
92
|
+
| \`mysql_cluster_topology\` | Cluster topology |
|
|
93
|
+
| \`mysql_cluster_router_status\` | Router integration |
|
|
94
|
+
| \`mysql_cluster_switchover\` | Switchover recommendation |
|
|
95
|
+
|
|
96
|
+
## Failover Handling
|
|
97
|
+
|
|
98
|
+
Automatic failover happens when:
|
|
99
|
+
1. Primary becomes unreachable
|
|
100
|
+
2. Majority of nodes agree (quorum)
|
|
101
|
+
3. New primary is elected
|
|
102
|
+
|
|
103
|
+
Manual failover:
|
|
104
|
+
\`\`\`javascript
|
|
105
|
+
cluster.setPrimaryInstance('admin@new-primary:3306')
|
|
106
|
+
\`\`\`
|
|
107
|
+
|
|
108
|
+
## Best Practices
|
|
109
|
+
|
|
110
|
+
1. **Use odd number of nodes** (3, 5, 7) for quorum
|
|
111
|
+
2. **Deploy Router on app servers** for low latency
|
|
112
|
+
3. **Monitor replication lag** with flow control
|
|
113
|
+
4. **Test failover regularly** in staging
|
|
114
|
+
|
|
115
|
+
Start by checking cluster status with \`mysql_cluster_status\`.`);
|
|
116
|
+
}
|
|
117
|
+
};
|
|
118
|
+
}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MySQL Prompt - Document Store Setup
|
|
3
|
+
*
|
|
4
|
+
* Complete Document Store / X DevAPI setup guide.
|
|
5
|
+
*/
|
|
6
|
+
import type { PromptDefinition, RequestContext } from '../../../types/index.js';
|
|
7
|
+
|
|
8
|
+
export function createSetupDocstorePrompt(): PromptDefinition {
|
|
9
|
+
return {
|
|
10
|
+
name: 'mysql_setup_docstore',
|
|
11
|
+
description: 'Complete MySQL Document Store and X DevAPI setup guide',
|
|
12
|
+
arguments: [],
|
|
13
|
+
handler: (_args: Record<string, string>, _context: RequestContext) => {
|
|
14
|
+
return Promise.resolve(`# MySQL Document Store Setup Guide
|
|
15
|
+
|
|
16
|
+
MySQL Document Store allows you to store and query JSON documents using collections, similar to NoSQL databases.
|
|
17
|
+
|
|
18
|
+
## Prerequisites
|
|
19
|
+
|
|
20
|
+
1. **MySQL 8.0+** (full Document Store support)
|
|
21
|
+
2. **X Plugin enabled** (default in 8.0)
|
|
22
|
+
3. **MySQL Shell** for X DevAPI access
|
|
23
|
+
4. **Port 33060** open (X Protocol)
|
|
24
|
+
|
|
25
|
+
## Step 1: Verify X Plugin
|
|
26
|
+
|
|
27
|
+
\`\`\`sql
|
|
28
|
+
SHOW PLUGINS WHERE Name = 'mysqlx';
|
|
29
|
+
-- Should show: mysqlx | ACTIVE
|
|
30
|
+
\`\`\`
|
|
31
|
+
|
|
32
|
+
If not enabled:
|
|
33
|
+
\`\`\`sql
|
|
34
|
+
INSTALL PLUGIN mysqlx SONAME 'mysqlx.so';
|
|
35
|
+
\`\`\`
|
|
36
|
+
|
|
37
|
+
## Step 2: Create a Collection (MySQL Shell)
|
|
38
|
+
|
|
39
|
+
\`\`\`javascript
|
|
40
|
+
// Connect using X Protocol
|
|
41
|
+
\\connect mysqlx://user@localhost:33060/mydb
|
|
42
|
+
|
|
43
|
+
// Create collection
|
|
44
|
+
db.createCollection('users')
|
|
45
|
+
|
|
46
|
+
// Add documents
|
|
47
|
+
db.users.add({
|
|
48
|
+
"_id": "user001",
|
|
49
|
+
"name": "John Doe",
|
|
50
|
+
"email": "john@example.com",
|
|
51
|
+
"tags": ["admin", "active"]
|
|
52
|
+
})
|
|
53
|
+
\`\`\`
|
|
54
|
+
|
|
55
|
+
## Step 3: Query Documents
|
|
56
|
+
|
|
57
|
+
\`\`\`javascript
|
|
58
|
+
// Find all
|
|
59
|
+
db.users.find()
|
|
60
|
+
|
|
61
|
+
// Find with filter
|
|
62
|
+
db.users.find("name = 'John Doe'")
|
|
63
|
+
|
|
64
|
+
// Find with JSON path
|
|
65
|
+
db.users.find("'admin' IN tags")
|
|
66
|
+
\`\`\`
|
|
67
|
+
|
|
68
|
+
## SQL Access to Collections
|
|
69
|
+
|
|
70
|
+
Collections are regular tables with a JSON column:
|
|
71
|
+
\`\`\`sql
|
|
72
|
+
-- View collection data
|
|
73
|
+
SELECT * FROM mydb.users;
|
|
74
|
+
|
|
75
|
+
-- Query with JSON functions
|
|
76
|
+
SELECT doc->>'$.name' AS name
|
|
77
|
+
FROM mydb.users
|
|
78
|
+
WHERE JSON_CONTAINS(doc->'$.tags', '"admin"');
|
|
79
|
+
\`\`\`
|
|
80
|
+
|
|
81
|
+
## Available MCP Tools
|
|
82
|
+
|
|
83
|
+
| Tool | Description |
|
|
84
|
+
|------|-------------|
|
|
85
|
+
| \`mysql_doc_list_collections\` | List collections |
|
|
86
|
+
| \`mysql_doc_create_collection\` | Create collection |
|
|
87
|
+
| \`mysql_doc_drop_collection\` | Drop collection |
|
|
88
|
+
| \`mysql_doc_find\` | Query documents |
|
|
89
|
+
| \`mysql_doc_add\` | Add documents |
|
|
90
|
+
| \`mysql_doc_modify\` | Update documents |
|
|
91
|
+
| \`mysql_doc_remove\` | Delete documents |
|
|
92
|
+
| \`mysql_doc_create_index\` | Create index |
|
|
93
|
+
| \`mysql_doc_collection_info\` | Collection stats |
|
|
94
|
+
|
|
95
|
+
## Creating Indexes
|
|
96
|
+
|
|
97
|
+
\`\`\`javascript
|
|
98
|
+
// Index on document field
|
|
99
|
+
db.users.createIndex("email_idx", {
|
|
100
|
+
fields: [{
|
|
101
|
+
field: "$.email",
|
|
102
|
+
type: "TEXT(100)"
|
|
103
|
+
}]
|
|
104
|
+
})
|
|
105
|
+
\`\`\`
|
|
106
|
+
|
|
107
|
+
## Best Practices
|
|
108
|
+
|
|
109
|
+
1. **Use _id field** for document identification
|
|
110
|
+
2. **Create indexes** on frequently queried fields
|
|
111
|
+
3. **Use JSON schema validation** for data integrity
|
|
112
|
+
4. **Consider hybrid approach** - mix relational and document data
|
|
113
|
+
|
|
114
|
+
## Common Issues
|
|
115
|
+
|
|
116
|
+
1. **Port 33060 blocked**: Open firewall for X Protocol
|
|
117
|
+
2. **Connection refused**: Verify mysqlx plugin is running
|
|
118
|
+
3. **Schema not found**: Create database first
|
|
119
|
+
|
|
120
|
+
Start by listing collections with \`mysql_doc_list_collections\`.`);
|
|
121
|
+
}
|
|
122
|
+
};
|
|
123
|
+
}
|