@hypnosis/docker-mcp-server 1.0.1 → 1.0.4
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/README.md +15 -1
- package/dist/adapters/adapter-registry.d.ts +5 -5
- package/dist/adapters/adapter-registry.js +5 -5
- package/dist/adapters/database-adapter.d.ts +8 -8
- package/dist/adapters/database-adapter.js +1 -1
- package/dist/adapters/postgresql.d.ts +8 -8
- package/dist/adapters/postgresql.js +26 -26
- package/dist/adapters/postgresql.js.map +1 -1
- package/dist/adapters/redis.d.ts +9 -9
- package/dist/adapters/redis.js +23 -23
- package/dist/adapters/redis.js.map +1 -1
- package/dist/adapters/sqlite.d.ts +6 -6
- package/dist/adapters/sqlite.js +14 -14
- package/dist/adapters/sqlite.js.map +1 -1
- package/dist/adapters/types.d.ts +6 -6
- package/dist/adapters/types.js +1 -1
- package/dist/discovery/project-discovery.d.ts.map +1 -1
- package/dist/discovery/project-discovery.js +17 -3
- package/dist/discovery/project-discovery.js.map +1 -1
- package/dist/index.js +56 -18
- package/dist/index.js.map +1 -1
- package/dist/managers/compose-manager.d.ts.map +1 -1
- package/dist/managers/compose-manager.js +33 -4
- package/dist/managers/compose-manager.js.map +1 -1
- package/dist/managers/container-manager.d.ts +57 -13
- package/dist/managers/container-manager.d.ts.map +1 -1
- package/dist/managers/container-manager.js +140 -28
- package/dist/managers/container-manager.js.map +1 -1
- package/dist/tools/container-tools.d.ts +6 -4
- package/dist/tools/container-tools.d.ts.map +1 -1
- package/dist/tools/container-tools.js +87 -8
- package/dist/tools/container-tools.js.map +1 -1
- package/dist/tools/database-tools.d.ts +3 -3
- package/dist/tools/database-tools.js +4 -4
- package/dist/tools/database-tools.js.map +1 -1
- package/dist/tools/env-tools.d.ts +4 -4
- package/dist/tools/env-tools.js +9 -9
- package/dist/tools/env-tools.js.map +1 -1
- package/dist/tools/executor-tool.d.ts +3 -3
- package/dist/tools/executor-tool.js +6 -6
- package/dist/tools/executor-tool.js.map +1 -1
- package/dist/tools/mcp-health-tool.d.ts +4 -4
- package/dist/tools/mcp-health-tool.js +5 -5
- package/dist/tools/mcp-health-tool.js.map +1 -1
- package/dist/utils/compose-exec.d.ts.map +1 -1
- package/dist/utils/compose-exec.js +16 -1
- package/dist/utils/compose-exec.js.map +1 -1
- package/dist/utils/port-utils.d.ts +24 -0
- package/dist/utils/port-utils.d.ts.map +1 -0
- package/dist/utils/port-utils.js +89 -0
- package/dist/utils/port-utils.js.map +1 -0
- package/dist/utils/workspace.d.ts +34 -0
- package/dist/utils/workspace.d.ts.map +1 -0
- package/dist/utils/workspace.js +52 -0
- package/dist/utils/workspace.js.map +1 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"redis.js","sourceRoot":"","sources":["../../src/adapters/redis.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,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,MAAM,OAAO,YAAY;IACf,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,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;QAExD,
|
|
1
|
+
{"version":3,"file":"redis.js","sourceRoot":"","sources":["../../src/adapters/redis.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* SQLite Adapter
|
|
3
|
-
*
|
|
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
|
-
*
|
|
14
|
+
* Execute SQL query or meta-command
|
|
15
15
|
*/
|
|
16
16
|
query(service: string, query: string, options?: QueryOptions): Promise<string>;
|
|
17
17
|
/**
|
|
18
|
-
*
|
|
18
|
+
* Create backup
|
|
19
19
|
*/
|
|
20
20
|
backup(service: string, options: BackupOptions): Promise<string>;
|
|
21
21
|
/**
|
|
22
|
-
*
|
|
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
|
-
*
|
|
30
|
+
* Get connection info from environment
|
|
31
31
|
*/
|
|
32
32
|
getConnectionInfo(service: ServiceConfig, env: Record<string, string>): ConnectionInfo;
|
|
33
33
|
}
|
package/dist/adapters/sqlite.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* SQLite Adapter
|
|
3
|
-
*
|
|
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
|
-
*
|
|
20
|
+
* Execute SQL query or meta-command
|
|
21
21
|
*/
|
|
22
22
|
async query(service, query, options) {
|
|
23
|
-
//
|
|
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
|
-
//
|
|
35
|
+
// Build sqlite3 command
|
|
36
36
|
let cmd;
|
|
37
37
|
if (query.startsWith('.')) {
|
|
38
|
-
//
|
|
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
|
-
*
|
|
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
|
-
//
|
|
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
|
-
*
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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
|
-
*
|
|
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":"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,
|
|
1
|
+
{"version":3,"file":"sqlite.js","sourceRoot":"","sources":["../../src/adapters/sqlite.ts"],"names":[],"mappings":"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"}
|
package/dist/adapters/types.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Types
|
|
2
|
+
* Types for Database Adapters
|
|
3
3
|
*/
|
|
4
4
|
/**
|
|
5
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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;
|
package/dist/adapters/types.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-discovery.d.ts","sourceRoot":"","sources":["../../src/discovery/project-discovery.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
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
|
-
|
|
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
|
-
|
|
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":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGlD,MAAM,OAAO,gBAAgB;IACV,iBAAiB,GAAG;QACnC,oBAAoB;QACpB,qBAAqB;QACrB,aAAa;QACb,cAAc;KACf,CAAC;IAEM,MAAM,CAAgB;IACtB,MAAM,CAAe;IAE7B;QACE,IAAI,CAAC,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;QAClC,IAAI,CAAC,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,UAA4B,EAAE;QAC9C,MAAM,CAAC,KAAK,CAAC,4BAA4B,EAAE,OAAO,CAAC,CAAC;QAEpD,uBAAuB;QACvB,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAE3C,gBAAgB;QAChB,MAAM,MAAM,GAAG,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAChD,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;YAC5C,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,IAAI,CAAC;YACH,IAAI,MAAqB,CAAC;YAE1B,mEAAmE;YACnE,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;gBACzB,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;oBACtC,MAAM,IAAI,KAAK,CAAC,2BAA2B,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;gBACrE,CAAC;gBACD,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YACxD,CAAC;iBAAM,CAAC;gBACN,qCAAqC;gBACrC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"project-discovery.js","sourceRoot":"","sources":["../../src/discovery/project-discovery.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGlD,MAAM,OAAO,gBAAgB;IACV,iBAAiB,GAAG;QACnC,oBAAoB;QACpB,qBAAqB;QACrB,aAAa;QACb,cAAc;KACf,CAAC;IAEM,MAAM,CAAgB;IACtB,MAAM,CAAe;IAE7B;QACE,IAAI,CAAC,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;QAClC,IAAI,CAAC,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,UAA4B,EAAE;QAC9C,MAAM,CAAC,KAAK,CAAC,4BAA4B,EAAE,OAAO,CAAC,CAAC;QAEpD,uBAAuB;QACvB,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAE3C,gBAAgB;QAChB,MAAM,MAAM,GAAG,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAChD,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;YAC5C,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,IAAI,CAAC;YACH,IAAI,MAAqB,CAAC;YAE1B,mEAAmE;YACnE,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;gBACzB,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;oBACtC,MAAM,IAAI,KAAK,CAAC,2BAA2B,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;gBACrE,CAAC;gBACD,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YACxD,CAAC;iBAAM,CAAC;gBACN,qCAAqC;gBACrC,yEAAyE;gBACzE,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,gBAAgB,CAAC,gBAAgB,EAAE,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;gBAChF,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;gBAE/C,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC9B,MAAM,aAAa,GAAG,gBAAgB,CAAC,gBAAgB,EAAE;wBACvD,CAAC,CAAC,oBAAoB;wBACtB,CAAC,CAAC,kDAAkD,CAAC;oBAEvD,+BAA+B;oBAC/B,MAAM,WAAW,GAAG;wBAClB,0DAA0D;wBAC1D,wCAAwC;wBACxC,yFAAyF;qBAC1F,CAAC;oBAEF,MAAM,IAAI,KAAK,CACb,oEAAoE;wBACpE,yBAAyB;wBACzB,KAAK,GAAG,KAAK,aAAa,gCAAgC;wBAC1D,gBAAgB;wBAChB,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAC5C,CAAC;gBACJ,CAAC;gBAED,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;YAChD,CAAC;YAED,kBAAkB;YAClB,kBAAkB,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAEzC,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,8BAA8B;YAC9B,kBAAkB,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YACxC,MAAM,CAAC,KAAK,CAAC,8CAA8C,EAAE,KAAK,CAAC,CAAC;YACpE,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACK,WAAW,CAAC,OAAyB;QAC3C,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;YACzB,OAAO,WAAW,OAAO,CAAC,YAAY,EAAE,CAAC;QAC3C,CAAC;QAED,yEAAyE;QACzE,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,gBAAgB,CAAC,gBAAgB,EAAE,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAChF,OAAO,WAAW,GAAG,EAAE,CAAC;IAC1B,CAAC;IAED;;OAEG;IACK,eAAe,CAAC,QAAgB;QACtC,IAAI,UAAU,GAAG,QAAQ,CAAC;QAE1B,+BAA+B;QAC/B,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;QAElC,OAAO,UAAU,IAAI,UAAU,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YACpE,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAExB,qCAAqC;YACrC,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;gBAC5C,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACzB,MAAM,CAAC,IAAI,CAAC,uBAAuB,QAAQ,EAAE,CAAC,CAAC;oBAC/C,OAAO,QAAQ,CAAC;gBAClB,CAAC;YACH,CAAC;YAED,+BAA+B;YAC/B,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;YACtC,IAAI,SAAS,KAAK,UAAU;gBAAE,MAAM,CAAC,gBAAgB;YACrD,UAAU,GAAG,SAAS,CAAC;QACzB,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACK,eAAe,CAAC,GAAW;QACjC,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;QAE7C,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;QAEhC,oCAAoC;QACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,oBAAoB,CAAC,CAAC;QACjD,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzB,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACrB,MAAM,CAAC,KAAK,CAAC,oBAAoB,QAAQ,EAAE,CAAC,CAAC;QAC/C,CAAC;QAED,0DAA0D;QAC1D,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;QACrC,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,kBAAkB,OAAO,MAAM,CAAC,CAAC;YAC3D,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;gBACxB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACpB,MAAM,CAAC,KAAK,CAAC,2BAA2B,OAAO,EAAE,CAAC,CAAC;YACrD,CAAC;QACH,CAAC;QAED,oEAAoE;QACpE,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,6BAA6B,CAAC,CAAC;QAC9D,IAAI,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YAC7B,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACzB,MAAM,CAAC,KAAK,CAAC,wBAAwB,YAAY,EAAE,CAAC,CAAC;QACvD,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,WAAW,CAAC,YAA+B;QACvD,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;QAE1E,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAC/C,CAAC;QAED,MAAM,CAAC,KAAK,CAAC,wBAAwB,KAAK,CAAC,MAAM,WAAW,EAAE,KAAK,CAAC,CAAC;QAErE,iCAAiC;QACjC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACrC,CAAC;QAED,4CAA4C;QAC5C,MAAM,aAAa,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YACrC,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;QAEH,iBAAiB;QACjB,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAEtD,uEAAuE;QACvE,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAC1B,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;QACrC,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QAEpE,uCAAuC;QACvC,OAAO;YACL,IAAI,EAAE,WAAW;YACjB,WAAW,EAAE,QAAQ,EAAE,sCAAsC;YAC7D,UAAU;YACV,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,QAAQ,IAAI,EAAE,CAAC;SAC1D,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,kBAAkB,CAAC,WAAmB,EAAE,MAAW;QACzD,iCAAiC;QACjC,IAAI,MAAM,CAAC,IAAI;YAAE,OAAO,MAAM,CAAC,IAAI,CAAC;QAEpC,yBAAyB;QACzB,MAAM,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;QACjC,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;IAED;;OAEG;IACK,aAAa,CAAC,QAA6B;QACjD,qCAAqC;QACrC,MAAM,MAAM,GAAkC,EAAE,CAAC;QAEjD,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YACtD,MAAM,CAAC,IAAI,CAAC,GAAG;gBACb,IAAI;gBACJ,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC;gBACpC,WAAW,EAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,WAAW,CAAC;gBACtD,IAAI,EAAE,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC;aACrC,CAAC;QACJ,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACK,UAAU,CAAC,KAAU;QAC3B,IAAI,CAAC,KAAK;YAAE,OAAO,SAAS,CAAC;QAE7B,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAS,EAAE,EAAE;gBAC7B,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;oBAC7B,OAAO,IAAI,CAAC;gBACd,CAAC;gBACD,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;oBAClC,OAAO,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAC5C,CAAC;gBACD,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;YACtB,CAAC,CAAC,CAAC;QACL,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;OAEG;IACK,gBAAgB,CAAC,GAAQ;QAC/B,IAAI,CAAC,GAAG;YAAE,OAAO,SAAS,CAAC;QAE3B,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,MAAM,GAA2B,EAAE,CAAC;YAC1C,KAAK,MAAM,IAAI,IAAI,GAAG,EAAE,CAAC;gBACvB,MAAM,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC7C,IAAI,GAAG,EAAE,CAAC;oBACR,MAAM,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACrC,CAAC;YACH,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,OAAO,GAAG,CAAC;IACb,CAAC;IAED;;OAEG;IACK,iBAAiB,CAAC,MAAW;QACnC,MAAM,KAAK,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;QAEjD,IAAI,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC;YAAE,OAAO,YAAY,CAAC;QACpD,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC;YAAE,OAAO,OAAO,CAAC;QAC5C,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC;YAAE,OAAO,OAAO,CAAC;QAC5C,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC;YAAE,OAAO,SAAS,CAAC;QAC9C,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAAE,OAAO,QAAQ,CAAC;QAE9C,OAAO,SAAS,CAAC;IACnB,CAAC;CACF"}
|
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
|
-
//
|
|
25
|
+
// If command line arguments exist, use CLI mode
|
|
22
26
|
if (process.argv.length > 2) {
|
|
23
|
-
// CLI
|
|
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
|
-
|
|
28
|
-
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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
|
-
//
|
|
60
|
+
// Create MCP Server
|
|
51
61
|
const server = new Server({
|
|
52
62
|
name: 'docker-mcp-server',
|
|
53
|
-
version:
|
|
63
|
+
version: version,
|
|
54
64
|
}, {
|
|
55
65
|
capabilities: {
|
|
56
66
|
tools: {},
|
|
57
67
|
},
|
|
58
68
|
});
|
|
59
|
-
//
|
|
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
|
-
//
|
|
77
|
-
if (toolName.startsWith('
|
|
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 and resource management)
|
|
119
|
+
if (toolName.startsWith('docker_container_') || toolName === 'docker_compose_up' || toolName === 'docker_compose_down' || toolName === 'docker_resource_list') {
|
|
78
120
|
return containerTools.handleCall(request);
|
|
79
121
|
}
|
|
80
122
|
// Executor tool
|
|
@@ -85,21 +127,17 @@ 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
|
-
//
|
|
136
|
+
// Connect transport
|
|
99
137
|
const transport = new StdioServerTransport();
|
|
100
138
|
await server.connect(transport);
|
|
101
139
|
logger.info('Docker MCP Server started successfully');
|
|
102
|
-
logger.info('Registered tools:
|
|
140
|
+
logger.info('Registered tools: 18 commands (9 container + 1 executor + 4 database + 3 environment + 1 mcp-health)');
|
|
103
141
|
logger.info('Listening on STDIO...');
|
|
104
142
|
}
|
|
105
143
|
// Error handling
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,KAAK,UAAU,IAAI;IACjB,
|
|
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;
|
|
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
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
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;
|
|
1
|
+
{"version":3,"file":"compose-manager.js","sourceRoot":"","sources":["../../src/managers/compose-manager.ts"],"names":[],"mappings":"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"}
|