@hypnosis/docker-mcp-server 1.0.1 → 1.0.3

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.
Files changed (53) hide show
  1. package/dist/adapters/adapter-registry.d.ts +5 -5
  2. package/dist/adapters/adapter-registry.js +5 -5
  3. package/dist/adapters/database-adapter.d.ts +8 -8
  4. package/dist/adapters/database-adapter.js +1 -1
  5. package/dist/adapters/postgresql.d.ts +8 -8
  6. package/dist/adapters/postgresql.js +26 -26
  7. package/dist/adapters/postgresql.js.map +1 -1
  8. package/dist/adapters/redis.d.ts +9 -9
  9. package/dist/adapters/redis.js +23 -23
  10. package/dist/adapters/redis.js.map +1 -1
  11. package/dist/adapters/sqlite.d.ts +6 -6
  12. package/dist/adapters/sqlite.js +14 -14
  13. package/dist/adapters/sqlite.js.map +1 -1
  14. package/dist/adapters/types.d.ts +6 -6
  15. package/dist/adapters/types.js +1 -1
  16. package/dist/discovery/project-discovery.d.ts.map +1 -1
  17. package/dist/discovery/project-discovery.js +17 -3
  18. package/dist/discovery/project-discovery.js.map +1 -1
  19. package/dist/index.js +55 -17
  20. package/dist/index.js.map +1 -1
  21. package/dist/managers/compose-manager.d.ts.map +1 -1
  22. package/dist/managers/compose-manager.js +33 -4
  23. package/dist/managers/compose-manager.js.map +1 -1
  24. package/dist/managers/container-manager.d.ts +13 -13
  25. package/dist/managers/container-manager.js +28 -28
  26. package/dist/managers/container-manager.js.map +1 -1
  27. package/dist/tools/container-tools.d.ts +4 -4
  28. package/dist/tools/container-tools.js +8 -8
  29. package/dist/tools/container-tools.js.map +1 -1
  30. package/dist/tools/database-tools.d.ts +3 -3
  31. package/dist/tools/database-tools.js +4 -4
  32. package/dist/tools/database-tools.js.map +1 -1
  33. package/dist/tools/env-tools.d.ts +4 -4
  34. package/dist/tools/env-tools.js +9 -9
  35. package/dist/tools/env-tools.js.map +1 -1
  36. package/dist/tools/executor-tool.d.ts +3 -3
  37. package/dist/tools/executor-tool.js +6 -6
  38. package/dist/tools/executor-tool.js.map +1 -1
  39. package/dist/tools/mcp-health-tool.d.ts +4 -4
  40. package/dist/tools/mcp-health-tool.js +5 -5
  41. package/dist/tools/mcp-health-tool.js.map +1 -1
  42. package/dist/utils/compose-exec.d.ts.map +1 -1
  43. package/dist/utils/compose-exec.js +16 -1
  44. package/dist/utils/compose-exec.js.map +1 -1
  45. package/dist/utils/port-utils.d.ts +24 -0
  46. package/dist/utils/port-utils.d.ts.map +1 -0
  47. package/dist/utils/port-utils.js +89 -0
  48. package/dist/utils/port-utils.js.map +1 -0
  49. package/dist/utils/workspace.d.ts +34 -0
  50. package/dist/utils/workspace.d.ts.map +1 -0
  51. package/dist/utils/workspace.js +52 -0
  52. package/dist/utils/workspace.js.map +1 -0
  53. package/package.json +1 -1
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * SQLite Adapter
3
- * Реализация DatabaseAdapter для SQLite
3
+ * DatabaseAdapter implementation for SQLite
4
4
  */
5
5
  import type { DatabaseAdapter } from './database-adapter.js';
6
6
  import type { QueryOptions, BackupOptions, RestoreOptions, DBStatus, ConnectionInfo } from './types.js';
@@ -11,23 +11,23 @@ export declare class SQLiteAdapter implements DatabaseAdapter {
11
11
  private envManager;
12
12
  constructor();
13
13
  /**
14
- * Выполнить SQL query или мета-команду
14
+ * Execute SQL query or meta-command
15
15
  */
16
16
  query(service: string, query: string, options?: QueryOptions): Promise<string>;
17
17
  /**
18
- * Создать backup
18
+ * Create backup
19
19
  */
20
20
  backup(service: string, options: BackupOptions): Promise<string>;
21
21
  /**
22
- * Восстановить из backup
22
+ * Restore from backup
23
23
  */
24
24
  restore(service: string, backupPath: string, options?: RestoreOptions): Promise<void>;
25
25
  /**
26
- * Получить статус БД
26
+ * Get database status
27
27
  */
28
28
  status(service: string): Promise<DBStatus>;
29
29
  /**
30
- * Получить connection info из environment
30
+ * Get connection info from environment
31
31
  */
32
32
  getConnectionInfo(service: ServiceConfig, env: Record<string, string>): ConnectionInfo;
33
33
  }
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * SQLite Adapter
3
- * Реализация DatabaseAdapter для SQLite
3
+ * DatabaseAdapter implementation for SQLite
4
4
  */
5
5
  import { ContainerManager } from '../managers/container-manager.js';
6
6
  import { ProjectDiscovery } from '../discovery/project-discovery.js';
@@ -17,10 +17,10 @@ export class SQLiteAdapter {
17
17
  this.envManager = new EnvManager();
18
18
  }
19
19
  /**
20
- * Выполнить SQL query или мета-команду
20
+ * Execute SQL query or meta-command
21
21
  */
22
22
  async query(service, query, options) {
23
- // Валидация SQL (если включена, только для SQL запросов, не для мета-команд)
23
+ // SQL validation (if enabled, only for SQL queries, not for meta-commands)
24
24
  if (!query.startsWith('.')) {
25
25
  sqlValidator.validate(query);
26
26
  }
@@ -32,14 +32,14 @@ export class SQLiteAdapter {
32
32
  const env = this.envManager.loadEnv(project.projectDir, service, serviceConfig);
33
33
  const conn = this.getConnectionInfo(serviceConfig, env);
34
34
  const dbPath = conn.database;
35
- // Строим команду sqlite3
35
+ // Build sqlite3 command
36
36
  let cmd;
37
37
  if (query.startsWith('.')) {
38
- // Мета-команда (например, .tables, .schema)
38
+ // Meta-command (e.g., .tables, .schema)
39
39
  cmd = ['sqlite3', dbPath, query];
40
40
  }
41
41
  else {
42
- // SQL запрос
42
+ // SQL query
43
43
  cmd = ['sqlite3', dbPath, query];
44
44
  }
45
45
  logger.debug(`Executing SQLite query in ${service}: ${query}`);
@@ -47,7 +47,7 @@ export class SQLiteAdapter {
47
47
  return output;
48
48
  }
49
49
  /**
50
- * Создать backup
50
+ * Create backup
51
51
  */
52
52
  async backup(service, options) {
53
53
  const project = await this.projectDiscovery.findProject();
@@ -59,14 +59,14 @@ export class SQLiteAdapter {
59
59
  const conn = this.getConnectionInfo(serviceConfig, env);
60
60
  const dbPath = conn.database;
61
61
  const output = options.output || `/backups/sqlite-backup-${Date.now()}.db`;
62
- // Используем .backup команду (безопасно, работает даже если БД используется)
62
+ // Use .backup command (safe, works even if database is in use)
63
63
  logger.info(`Creating SQLite backup: ${output}`);
64
64
  const cmd = ['sqlite3', dbPath, `.backup ${output}`];
65
65
  await this.containerManager.exec(service, project.name, cmd);
66
66
  return output;
67
67
  }
68
68
  /**
69
- * Восстановить из backup
69
+ * Restore from backup
70
70
  */
71
71
  async restore(service, backupPath, options) {
72
72
  const project = await this.projectDiscovery.findProject();
@@ -78,13 +78,13 @@ export class SQLiteAdapter {
78
78
  const conn = this.getConnectionInfo(serviceConfig, env);
79
79
  const dbPath = conn.database;
80
80
  logger.info(`Restoring SQLite from backup: ${backupPath}`);
81
- // Простое копирование файла (SQLite - это файловая БД)
81
+ // Simple file copy (SQLite is a file-based database)
82
82
  const cmd = ['cp', backupPath, dbPath];
83
83
  await this.containerManager.exec(service, project.name, cmd);
84
84
  logger.info('SQLite restore completed');
85
85
  }
86
86
  /**
87
- * Получить статус БД
87
+ * Get database status
88
88
  */
89
89
  async status(service) {
90
90
  const project = await this.projectDiscovery.findProject();
@@ -95,10 +95,10 @@ export class SQLiteAdapter {
95
95
  const env = this.envManager.loadEnv(project.projectDir, service, serviceConfig);
96
96
  const conn = this.getConnectionInfo(serviceConfig, env);
97
97
  const dbPath = conn.database;
98
- // Получаем версию SQLite
98
+ // Get SQLite version
99
99
  const versionOutput = await this.query(service, 'SELECT sqlite_version();');
100
100
  const version = versionOutput.trim();
101
- // Получаем количество таблиц
101
+ // Get table count
102
102
  const tablesOutput = await this.query(service, "SELECT COUNT(*) FROM sqlite_master WHERE type='table';");
103
103
  const tables = parseInt(tablesOutput.trim() || '0');
104
104
  return {
@@ -112,7 +112,7 @@ export class SQLiteAdapter {
112
112
  };
113
113
  }
114
114
  /**
115
- * Получить connection info из environment
115
+ * Get connection info from environment
116
116
  */
117
117
  getConnectionInfo(service, env) {
118
118
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"sqlite.js","sourceRoot":"","sources":["../../src/adapters/sqlite.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sqlite.js","sourceRoot":"","sources":["../../src/adapters/sqlite.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAWH,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,MAAM,OAAO,aAAa;IAChB,gBAAgB,CAAmB;IACnC,gBAAgB,CAAmB;IACnC,UAAU,CAAa;IAE/B;QACE,IAAI,CAAC,gBAAgB,GAAG,IAAI,gBAAgB,EAAE,CAAC;QAC/C,IAAI,CAAC,gBAAgB,GAAG,IAAI,gBAAgB,EAAE,CAAC;QAC/C,IAAI,CAAC,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK,CAAC,OAAe,EAAE,KAAa,EAAE,OAAsB;QAChE,2EAA2E;QAC3E,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3B,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC;QAC1D,MAAM,aAAa,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAChD,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,YAAY,OAAO,wBAAwB,CAAC,CAAC;QAC/D,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC;QAChF,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;QACxD,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC;QAE7B,wBAAwB;QACxB,IAAI,GAAa,CAAC;QAElB,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1B,wCAAwC;YACxC,GAAG,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QACnC,CAAC;aAAM,CAAC;YACN,YAAY;YACZ,GAAG,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QACnC,CAAC;QAED,MAAM,CAAC,KAAK,CAAC,6BAA6B,OAAO,KAAK,KAAK,EAAE,CAAC,CAAC;QAE/D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAE5E,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,OAAe,EAAE,OAAsB;QAClD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC;QAC1D,MAAM,aAAa,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAChD,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,YAAY,OAAO,wBAAwB,CAAC,CAAC;QAC/D,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC;QAChF,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;QACxD,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC;QAE7B,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,0BAA0B,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC;QAE3E,+DAA+D;QAC/D,MAAM,CAAC,IAAI,CAAC,2BAA2B,MAAM,EAAE,CAAC,CAAC;QACjD,MAAM,GAAG,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,MAAM,EAAE,CAAC,CAAC;QAErD,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAE7D,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,CACX,OAAe,EACf,UAAkB,EAClB,OAAwB;QAExB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC;QAC1D,MAAM,aAAa,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAChD,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,YAAY,OAAO,wBAAwB,CAAC,CAAC;QAC/D,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC;QAChF,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;QACxD,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC;QAE7B,MAAM,CAAC,IAAI,CAAC,iCAAiC,UAAU,EAAE,CAAC,CAAC;QAE3D,qDAAqD;QACrD,MAAM,GAAG,GAAG,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;QAEvC,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAE7D,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,OAAe;QAC1B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC;QAC1D,MAAM,aAAa,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAChD,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,YAAY,OAAO,wBAAwB,CAAC,CAAC;QAC/D,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC;QAChF,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;QACxD,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC;QAE7B,qBAAqB;QACrB,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,0BAA0B,CAAC,CAAC;QAC5E,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,EAAE,CAAC;QAErC,kBAAkB;QAClB,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,KAAK,CACnC,OAAO,EACP,wDAAwD,CACzD,CAAC;QACF,MAAM,MAAM,GAAG,QAAQ,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC;QAEpD,OAAO;YACL,IAAI,EAAE,QAAQ;YACd,OAAO;YACP,MAAM,EAAE,SAAS;YACjB,UAAU,EAAE;gBACV,MAAM;gBACN,aAAa,EAAE,MAAM;aACtB;SACF,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,iBAAiB,CAAC,OAAsB,EAAE,GAA2B;QACnE,OAAO;YACL,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,CAAC;YACP,IAAI,EAAE,EAAE;YACR,QAAQ,EAAE,GAAG,CAAC,eAAe,IAAI,iBAAiB;SACnD,CAAC;IACJ,CAAC;CACF"}
@@ -1,8 +1,8 @@
1
1
  /**
2
- * Types для Database Adapters
2
+ * Types for Database Adapters
3
3
  */
4
4
  /**
5
- * Опции для query
5
+ * Options for query
6
6
  */
7
7
  export interface QueryOptions {
8
8
  database?: string;
@@ -10,7 +10,7 @@ export interface QueryOptions {
10
10
  format?: 'table' | 'json' | 'csv';
11
11
  }
12
12
  /**
13
- * Опции для backup
13
+ * Options for backup
14
14
  */
15
15
  export interface BackupOptions {
16
16
  output?: string;
@@ -19,7 +19,7 @@ export interface BackupOptions {
19
19
  tables?: string[];
20
20
  }
21
21
  /**
22
- * Опции для restore
22
+ * Options for restore
23
23
  */
24
24
  export interface RestoreOptions {
25
25
  database?: string;
@@ -28,7 +28,7 @@ export interface RestoreOptions {
28
28
  schemaOnly?: boolean;
29
29
  }
30
30
  /**
31
- * Статус БД
31
+ * Database status
32
32
  */
33
33
  export interface DBStatus {
34
34
  type: string;
@@ -41,7 +41,7 @@ export interface DBStatus {
41
41
  additional?: Record<string, any>;
42
42
  }
43
43
  /**
44
- * Connection Info для БД
44
+ * Connection Info for database
45
45
  */
46
46
  export interface ConnectionInfo {
47
47
  host: string;
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Types для Database Adapters
2
+ * Types for Database Adapters
3
3
  */
4
4
  export {};
5
5
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"project-discovery.d.ts","sourceRoot":"","sources":["../../src/discovery/project-discovery.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAiB,MAAM,YAAY,CAAC;AAEjF,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAKhC;IAEF,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,MAAM,CAAe;;IAO7B;;OAEG;IACG,WAAW,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,aAAa,CAAC;IAkDzE;;OAEG;IACH,OAAO,CAAC,WAAW;IASnB;;OAEG;IACH,OAAO,CAAC,eAAe;IA2BvB;;OAEG;IACH,OAAO,CAAC,eAAe;IAqCvB;;;OAGG;YACW,WAAW;IAoCzB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAS1B;;OAEG;IACH,OAAO,CAAC,aAAa;IAkBrB;;OAEG;IACH,OAAO,CAAC,UAAU;IAkBlB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAiBxB;;OAEG;IACH,OAAO,CAAC,iBAAiB;CAW1B"}
1
+ {"version":3,"file":"project-discovery.d.ts","sourceRoot":"","sources":["../../src/discovery/project-discovery.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAiB,MAAM,YAAY,CAAC;AAEjF,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAKhC;IAEF,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,MAAM,CAAe;;IAO7B;;OAEG;IACG,WAAW,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,aAAa,CAAC;IAgEzE;;OAEG;IACH,OAAO,CAAC,WAAW;IAUnB;;OAEG;IACH,OAAO,CAAC,eAAe;IA2BvB;;OAEG;IACH,OAAO,CAAC,eAAe;IAqCvB;;;OAGG;YACW,WAAW;IAoCzB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAS1B;;OAEG;IACH,OAAO,CAAC,aAAa;IAkBrB;;OAEG;IACH,OAAO,CAAC,UAAU;IAkBlB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAiBxB;;OAEG;IACH,OAAO,CAAC,iBAAiB;CAW1B"}
@@ -5,6 +5,7 @@
5
5
  import { existsSync } from 'fs';
6
6
  import { dirname, join, basename } from 'path';
7
7
  import { logger } from '../utils/logger.js';
8
+ import { workspaceManager } from '../utils/workspace.js';
8
9
  import { projectConfigCache } from '../utils/cache.js';
9
10
  import { ComposeParser } from './compose-parser.js';
10
11
  import { ConfigMerger } from './config-merger.js';
@@ -45,12 +46,24 @@ export class ProjectDiscovery {
45
46
  }
46
47
  else {
47
48
  // Auto-detect multiple compose files
48
- const cwd = options.cwd || process.cwd();
49
+ // Используем workspace root от MCP клиента или fallback на process.cwd()
50
+ const cwd = options.cwd || workspaceManager.getWorkspaceRoot() || process.cwd();
49
51
  const composeFiles = this.autoDetectFiles(cwd);
50
52
  if (composeFiles.length === 0) {
53
+ const workspaceInfo = workspaceManager.hasWorkspaceRoot()
54
+ ? 'MCP workspace root'
55
+ : 'process.cwd() (MCP workspace root not available)';
56
+ // Предлагаем возможные решения
57
+ const suggestions = [
58
+ 'Make sure you are in a directory with docker-compose.yml',
59
+ 'Or specify the project path explicitly',
60
+ 'Supported filenames: docker-compose.yml, docker-compose.yaml, compose.yml, compose.yaml'
61
+ ];
51
62
  throw new Error('docker-compose.yml not found. Please run from project directory.\n' +
52
63
  'Searched directories:\n' +
53
- ` ${cwd} (and parent directories)`);
64
+ ` ${cwd} (${workspaceInfo}) (and parent directories)\n\n` +
65
+ 'Suggestions:\n' +
66
+ suggestions.map(s => ` - ${s}`).join('\n'));
54
67
  }
55
68
  config = await this.loadProject(composeFiles);
56
69
  }
@@ -72,7 +85,8 @@ export class ProjectDiscovery {
72
85
  if (options.explicitPath) {
73
86
  return `project:${options.explicitPath}`;
74
87
  }
75
- const cwd = options.cwd || process.cwd();
88
+ // Используем workspace root от MCP клиента или fallback на process.cwd()
89
+ const cwd = options.cwd || workspaceManager.getWorkspaceRoot() || process.cwd();
76
90
  return `project:${cwd}`;
77
91
  }
78
92
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"project-discovery.js","sourceRoot":"","sources":["../../src/discovery/project-discovery.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"project-discovery.js","sourceRoot":"","sources":["../../src/discovery/project-discovery.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -6,8 +6,12 @@
6
6
  import { Server } from '@modelcontextprotocol/sdk/server/index.js';
7
7
  import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
8
8
  import { CallToolRequestSchema, ListToolsRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
9
+ import { readFileSync } from 'fs';
10
+ import { fileURLToPath } from 'url';
11
+ import { dirname, join } from 'path';
9
12
  import { logger } from './utils/logger.js';
10
13
  import { getDockerClient } from './utils/docker-client.js';
14
+ import { workspaceManager } from './utils/workspace.js';
11
15
  import { ContainerTools } from './tools/container-tools.js';
12
16
  import { ExecutorTool } from './tools/executor-tool.js';
13
17
  import { DatabaseTools } from './tools/database-tools.js';
@@ -18,14 +22,20 @@ import { PostgreSQLAdapter } from './adapters/postgresql.js';
18
22
  import { RedisAdapter } from './adapters/redis.js';
19
23
  import { SQLiteAdapter } from './adapters/sqlite.js';
20
24
  async function main() {
21
- // Если есть аргументы командной строки, используем CLI режим
25
+ // If command line arguments exist, use CLI mode
22
26
  if (process.argv.length > 2) {
23
- // CLI режим обрабатывается в cli.ts
27
+ // CLI mode is handled in cli.ts
24
28
  console.error('Use "docker-mcp-server-cli" for CLI mode or run without arguments for MCP mode');
25
29
  process.exit(1);
26
30
  }
27
- logger.info('Starting Docker MCP Server v1.0.0');
28
- // Проверка Docker
31
+ // Get version from package.json
32
+ const __filename = fileURLToPath(import.meta.url);
33
+ const __dirname = dirname(__filename);
34
+ const packageJsonPath = join(__dirname, '../package.json');
35
+ const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf-8'));
36
+ const version = packageJson.version || '1.0.0';
37
+ logger.info(`Starting Docker MCP Server v${version}`);
38
+ // Docker check
29
39
  try {
30
40
  const docker = getDockerClient();
31
41
  await docker.ping();
@@ -34,29 +44,57 @@ async function main() {
34
44
  logger.error('Docker check failed:', error);
35
45
  process.exit(1);
36
46
  }
37
- // Регистрация Database Adapters
47
+ // Register Database Adapters
38
48
  adapterRegistry.register('postgresql', new PostgreSQLAdapter());
39
49
  adapterRegistry.register('postgres', new PostgreSQLAdapter()); // alias
40
50
  adapterRegistry.register('redis', new RedisAdapter());
41
51
  adapterRegistry.register('sqlite', new SQLiteAdapter());
42
52
  adapterRegistry.register('sqlite3', new SQLiteAdapter()); // alias
43
53
  logger.info('Database adapters registered: PostgreSQL, Redis, SQLite');
44
- // Инициализация tools
54
+ // Initialize tools
45
55
  const containerTools = new ContainerTools();
46
56
  const executorTool = new ExecutorTool();
47
57
  const databaseTools = new DatabaseTools();
48
58
  const envTools = new EnvTools();
49
59
  const mcpHealthTool = new MCPHealthTool();
50
- // Создание MCP Server
60
+ // Create MCP Server
51
61
  const server = new Server({
52
62
  name: 'docker-mcp-server',
53
- version: '0.1.0',
63
+ version: version,
54
64
  }, {
55
65
  capabilities: {
56
66
  tools: {},
57
67
  },
58
68
  });
59
- // Регистрация tools
69
+ // Setup workspace root from MCP client
70
+ server.oninitialized = async () => {
71
+ logger.info('MCP Server initialized, requesting workspace roots...');
72
+ try {
73
+ // Request workspace roots from client
74
+ const clientCapabilities = server.getClientCapabilities();
75
+ // Проверяем, поддерживает ли клиент roots
76
+ if (clientCapabilities?.roots) {
77
+ const rootsResult = await server.listRoots();
78
+ if (rootsResult.roots && rootsResult.roots.length > 0) {
79
+ // Используем первый root как workspace root
80
+ const primaryRoot = rootsResult.roots[0];
81
+ workspaceManager.setWorkspaceRoot(primaryRoot.uri);
82
+ logger.info(`Using workspace root: ${primaryRoot.uri} (${primaryRoot.name || 'unnamed'})`);
83
+ }
84
+ else {
85
+ logger.warn('No workspace roots provided by client, using process.cwd()');
86
+ }
87
+ }
88
+ else {
89
+ logger.warn('Client does not support roots capability, using process.cwd()');
90
+ }
91
+ }
92
+ catch (error) {
93
+ logger.error('Failed to get workspace roots:', error);
94
+ logger.warn('Falling back to process.cwd()');
95
+ }
96
+ };
97
+ // Register tools
60
98
  server.setRequestHandler(ListToolsRequestSchema, async () => {
61
99
  logger.debug('ListTools request received');
62
100
  return {
@@ -69,12 +107,16 @@ async function main() {
69
107
  ],
70
108
  };
71
109
  });
72
- // Обработка вызовов
110
+ // Handle tool calls
73
111
  server.setRequestHandler(CallToolRequestSchema, async (request) => {
74
112
  logger.debug('CallTool request:', request.params.name);
75
113
  const toolName = request.params.name;
76
- // Container tools
77
- if (toolName.startsWith('docker_container_')) {
114
+ // Environment tools (check BEFORE docker_compose_ to catch docker_compose_config)
115
+ if (toolName.startsWith('docker_env_') || toolName === 'docker_compose_config' || toolName === 'docker_healthcheck') {
116
+ return envTools.handleCall(request);
117
+ }
118
+ // Container tools (including compose up/down commands)
119
+ if (toolName.startsWith('docker_container_') || toolName === 'docker_compose_up' || toolName === 'docker_compose_down') {
78
120
  return containerTools.handleCall(request);
79
121
  }
80
122
  // Executor tool
@@ -85,17 +127,13 @@ async function main() {
85
127
  if (toolName.startsWith('docker_db_')) {
86
128
  return databaseTools.handleCall(request);
87
129
  }
88
- // Environment tools
89
- if (toolName.startsWith('docker_env_') || toolName === 'docker_compose_config' || toolName === 'docker_healthcheck') {
90
- return envTools.handleCall(request);
91
- }
92
130
  // MCP Health tool
93
131
  if (toolName === 'docker_mcp_health') {
94
132
  return mcpHealthTool.handleCall(request);
95
133
  }
96
134
  throw new Error(`Unknown tool: ${toolName}`);
97
135
  });
98
- // Подключение transport
136
+ // Connect transport
99
137
  const transport = new StdioServerTransport();
100
138
  await server.connect(transport);
101
139
  logger.info('Docker MCP Server started successfully');
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"compose-manager.d.ts","sourceRoot":"","sources":["../../src/managers/compose-manager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,gBAAgB,CAAmB;;IAM3C;;;OAGG;IACG,SAAS,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAkC9D;;;OAGG;IACG,WAAW,CAAC,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC;CA0BnE"}
1
+ {"version":3,"file":"compose-manager.d.ts","sourceRoot":"","sources":["../../src/managers/compose-manager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,gBAAgB,CAAmB;;IAM3C;;;OAGG;IACG,SAAS,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAyE9D;;;OAGG;IACG,WAAW,CAAC,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC;CA0BnE"}
@@ -5,6 +5,7 @@
5
5
  import { ComposeExec } from '../utils/compose-exec.js';
6
6
  import { ProjectDiscovery } from '../discovery/project-discovery.js';
7
7
  import { logger } from '../utils/logger.js';
8
+ import { extractPortFromError, findContainerByPort } from '../utils/port-utils.js';
8
9
  export class ComposeManager {
9
10
  projectDiscovery;
10
11
  constructor() {
@@ -36,10 +37,38 @@ export class ComposeManager {
36
37
  args.push(...options.services);
37
38
  }
38
39
  logger.info('Starting services with docker-compose up');
39
- ComposeExec.run(project.composeFile, args, {
40
- cwd: project.projectDir,
41
- });
42
- logger.info('Services started successfully');
40
+ try {
41
+ ComposeExec.run(project.composeFile, args, {
42
+ cwd: project.projectDir,
43
+ });
44
+ logger.info('Services started successfully');
45
+ }
46
+ catch (error) {
47
+ const errorMessage = error.message || String(error);
48
+ logger.debug('Error message for port detection:', errorMessage);
49
+ // Проверяем, является ли это ошибкой занятого порта
50
+ const port = extractPortFromError(errorMessage);
51
+ logger.debug(`Extracted port from error: ${port}`);
52
+ if (port) {
53
+ logger.warn(`Port ${port} is already in use. Attempting to find and handle conflict...`);
54
+ const conflict = await findContainerByPort(port);
55
+ if (conflict) {
56
+ const suggestion = `Port ${port} is already allocated by container "${conflict.containerName}" (${conflict.containerId.substring(0, 12)}). ` +
57
+ `Status: ${conflict.status}. ` +
58
+ `You can stop it with: docker_container_stop({service: "${conflict.containerName}"}) or manually stop the container.`;
59
+ throw new Error(`Port conflict detected: ${suggestion}\n\n` +
60
+ `Original error: ${errorMessage}`);
61
+ }
62
+ else {
63
+ // Порт занят, но контейнер не найден (возможно, не через Docker)
64
+ throw new Error(`Port ${port} is already in use, but conflicting container not found via Docker API. ` +
65
+ `Please check if another process is using port ${port}.\n\n` +
66
+ `Original error: ${errorMessage}`);
67
+ }
68
+ }
69
+ // Если это не ошибка порта, пробрасываем оригинальную ошибку
70
+ throw error;
71
+ }
43
72
  }
44
73
  /**
45
74
  * docker-compose down
@@ -1 +1 @@
1
- {"version":3,"file":"compose-manager.js","sourceRoot":"","sources":["../../src/managers/compose-manager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAe5C,MAAM,OAAO,cAAc;IACjB,gBAAgB,CAAmB;IAE3C;QACE,IAAI,CAAC,gBAAgB,GAAG,IAAI,gBAAgB,EAAE,CAAC;IACjD,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,SAAS,CAAC,UAA4B,EAAE;QAC5C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC;QAE1D,MAAM,IAAI,GAAa,CAAC,IAAI,CAAC,CAAC;QAE9B,6BAA6B;QAC7B,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;YAC7B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClB,CAAC;QAED,+BAA+B;QAC/B,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACvB,CAAC;QAED,iBAAiB;QACjB,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,KAAK,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC7D,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,OAAO,IAAI,KAAK,EAAE,CAAC,CAAC;YAC9C,CAAC;QACH,CAAC;QAED,oBAAoB;QACpB,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpD,IAAI,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;QACjC,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;QACxD,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,EAAE;YACzC,GAAG,EAAE,OAAO,CAAC,UAAU;SACxB,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;IAC/C,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,WAAW,CAAC,UAA8B,EAAE;QAChD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC;QAE1D,MAAM,IAAI,GAAa,CAAC,MAAM,CAAC,CAAC;QAEhC,iBAAiB;QACjB,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClB,CAAC;QAED,6BAA6B;QAC7B,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;YAC1B,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAChC,CAAC;QAED,mBAAmB;QACnB,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC9C,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;QAC1D,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,EAAE;YACzC,GAAG,EAAE,OAAO,CAAC,UAAU;SACxB,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;IAC/C,CAAC;CACF"}
1
+ {"version":3,"file":"compose-manager.js","sourceRoot":"","sources":["../../src/managers/compose-manager.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Container Manager
3
- * Управление Docker контейнерами
3
+ * Docker container management
4
4
  */
5
5
  export interface ContainerInfo {
6
6
  id: string;
@@ -26,32 +26,32 @@ export declare class ContainerManager {
26
26
  private docker;
27
27
  constructor();
28
28
  /**
29
- * Список контейнеров проекта
29
+ * List project containers
30
30
  */
31
31
  listContainers(projectName: string, composeFile?: string, projectDir?: string): Promise<ContainerInfo[]>;
32
32
  /**
33
- * Запустить контейнер
33
+ * Start container
34
34
  */
35
35
  startContainer(serviceName: string, projectName: string, composeFile?: string, projectDir?: string): Promise<void>;
36
36
  /**
37
- * Остановить контейнер
37
+ * Stop container
38
38
  */
39
39
  stopContainer(serviceName: string, projectName: string, timeout?: number, composeFile?: string, projectDir?: string): Promise<void>;
40
40
  /**
41
- * Перезапустить контейнер
41
+ * Restart container
42
42
  */
43
43
  restartContainer(serviceName: string, projectName: string, timeout?: number, composeFile?: string, projectDir?: string): Promise<void>;
44
44
  /**
45
- * Получить логи контейнера
46
- * Возвращает string для обычного режима или stream для follow mode
45
+ * Get container logs
46
+ * Returns string for normal mode or stream for follow mode
47
47
  */
48
48
  getLogs(serviceName: string, projectName: string, options?: LogOptions, composeFile?: string, projectDir?: string): Promise<string | NodeJS.ReadableStream>;
49
49
  /**
50
- * Получить health status контейнера
50
+ * Get container health status
51
51
  */
52
52
  getHealthStatus(serviceName: string, projectName: string, composeFile?: string, projectDir?: string): Promise<ContainerHealthStatus>;
53
53
  /**
54
- * Выполнить команду в контейнере
54
+ * Execute command in container
55
55
  */
56
56
  exec(serviceName: string, projectName: string, command: string[], options?: {
57
57
  user?: string;
@@ -60,19 +60,19 @@ export declare class ContainerManager {
60
60
  interactive?: boolean;
61
61
  }, composeFile?: string, projectDir?: string): Promise<string>;
62
62
  /**
63
- * Найти контейнер по имени сервиса
63
+ * Find container by service name
64
64
  */
65
65
  private findContainer;
66
66
  /**
67
- * Маппинг Docker ContainerInfo → наш формат
67
+ * Map Docker ContainerInfo → our format
68
68
  */
69
69
  private mapContainerInfo;
70
70
  /**
71
- * Извлекает порты из Docker container info
71
+ * Extract ports from Docker container info
72
72
  */
73
73
  private extractPorts;
74
74
  /**
75
- * Извлекает имя сервиса из имени контейнера
75
+ * Extract service name from container name
76
76
  * project_service_1 → service
77
77
  * project-service-1 → service
78
78
  */