universal-db-mcp 0.3.1 → 0.4.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/EXAMPLES.md CHANGED
@@ -351,6 +351,119 @@ npm install -g dmdb
351
351
 
352
352
  ---
353
353
 
354
+ ## SQL Server 使用示例
355
+
356
+ ### 基础配置(只读模式)
357
+
358
+ ```json
359
+ {
360
+ "mcpServers": {
361
+ "sqlserver-db": {
362
+ "command": "npx",
363
+ "args": [
364
+ "universal-db-mcp",
365
+ "--type", "sqlserver",
366
+ "--host", "localhost",
367
+ "--port", "1433",
368
+ "--user", "sa",
369
+ "--password", "YourPassword123",
370
+ "--database", "master"
371
+ ]
372
+ }
373
+ }
374
+ }
375
+ ```
376
+
377
+ **提示**: 也可以使用 `--type mssql` 作为别名。
378
+
379
+ ### 启用写入模式
380
+
381
+ ```json
382
+ {
383
+ "mcpServers": {
384
+ "sqlserver-write": {
385
+ "command": "npx",
386
+ "args": [
387
+ "universal-db-mcp",
388
+ "--type", "sqlserver",
389
+ "--host", "localhost",
390
+ "--port", "1433",
391
+ "--user", "sa",
392
+ "--password", "YourPassword123",
393
+ "--database", "MyDatabase",
394
+ "--danger-allow-write"
395
+ ]
396
+ }
397
+ }
398
+ }
399
+ ```
400
+
401
+ ### 连接 Azure SQL Database
402
+
403
+ ```json
404
+ {
405
+ "mcpServers": {
406
+ "azure-sql": {
407
+ "command": "npx",
408
+ "args": [
409
+ "universal-db-mcp",
410
+ "--type", "sqlserver",
411
+ "--host", "myserver.database.windows.net",
412
+ "--port", "1433",
413
+ "--user", "myadmin",
414
+ "--password", "MyPassword123!",
415
+ "--database", "mydatabase"
416
+ ]
417
+ }
418
+ }
419
+ }
420
+ ```
421
+
422
+ **注意**: 连接 Azure SQL Database 时会自动启用加密连接。
423
+
424
+ ### 与 Claude 对话示例
425
+
426
+ **用户**: 查看数据库中有哪些表?
427
+
428
+ **Claude 会自动**:
429
+
430
+ 1. 调用 `get_schema` 工具
431
+ 2. 执行查询: `SELECT TABLE_SCHEMA, TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE'`
432
+ 3. 返回表列表
433
+
434
+ **用户**: 查看 Users 表的结构
435
+
436
+ **Claude 会自动**:
437
+
438
+ 1. 调用 `get_table_info` 工具
439
+ 2. 返回列信息、主键、索引等详细信息
440
+
441
+ **用户**: 统计每个部门的员工数量
442
+
443
+ **Claude 会自动**:
444
+
445
+ 1. 理解需求
446
+ 2. 生成 SQL: `SELECT DepartmentID, COUNT(*) as EmployeeCount FROM Employees GROUP BY DepartmentID ORDER BY EmployeeCount DESC`
447
+ 3. 执行并返回结果
448
+
449
+ **用户**: 查找最近一周创建的订单
450
+
451
+ **Claude 会自动**:
452
+
453
+ 1. 生成 SQL: `SELECT * FROM Orders WHERE CreatedDate >= DATEADD(day, -7, GETDATE()) ORDER BY CreatedDate DESC`
454
+ 2. 执行并返回结果
455
+
456
+ ### 注意事项
457
+
458
+ 1. **默认端口**: SQL Server 默认端口为 1433
459
+ 2. **身份验证**: 支持 SQL Server 身份验证(用户名/密码)
460
+ 3. **加密连接**: 连接 Azure SQL 时会自动启用加密,本地 SQL Server 默认不加密
461
+ 4. **数据库名**: 必须指定数据库名(如 master、tempdb 或自定义数据库)
462
+ 5. **权限**: 确保用户有足够的权限访问系统视图(INFORMATION_SCHEMA)
463
+ 6. **参数化查询**: 支持 `?` 占位符,会自动转换为 SQL Server 的 `@param0` 语法
464
+
465
+ ---
466
+
354
467
  ## Claude Desktop 配置示例
355
468
 
356
469
  ### 同时连接多个数据库
package/README.md CHANGED
@@ -113,6 +113,7 @@ Claude 会自动调用数据库工具完成查询!
113
113
  | Redis | `--type redis` | 6379 | ✅ 已支持 | - |
114
114
  | Oracle(12c以上) | `--type oracle` | 1521 | ✅ 已支持 | - |
115
115
  | 达梦(DM7/DM8) | `--type dm` | 5236 | ✅ 已支持 | 驱动自动安装 |
116
+ | SQL Server (2012+) | `--type sqlserver` 或 `--type mssql` | 1433 | ✅ 已支持 | 支持 Azure SQL Database |
116
117
  | MongoDB | `--type mongo` | - | 🚧 计划中 | - |
117
118
  | SQLite | `--type sqlite` | - | 🚧 计划中 | - |
118
119
 
@@ -124,7 +125,7 @@ Claude 会自动调用数据库工具完成查询!
124
125
  universal-db-mcp [选项]
125
126
 
126
127
  选项:
127
- --type <db> 数据库类型 (mysql|postgres|redis|oracle|dm)
128
+ --type <db> 数据库类型 (mysql|postgres|redis|oracle|dm|sqlserver|mssql)
128
129
  --host <host> 数据库主机地址 (默认: localhost)
129
130
  --port <port> 数据库端口
130
131
  --user <user> 用户名
@@ -0,0 +1,46 @@
1
+ /**
2
+ * SQL Server 数据库适配器
3
+ * 使用 mssql 驱动实现 DbAdapter 接口
4
+ * 支持 SQL Server 2012+ 和 Azure SQL Database
5
+ */
6
+ import type { DbAdapter, QueryResult, SchemaInfo } from '../types/adapter.js';
7
+ export declare class SQLServerAdapter implements DbAdapter {
8
+ private pool;
9
+ private config;
10
+ constructor(config: {
11
+ host: string;
12
+ port: number;
13
+ user?: string;
14
+ password?: string;
15
+ database?: string;
16
+ });
17
+ /**
18
+ * 连接到 SQL Server 数据库
19
+ */
20
+ connect(): Promise<void>;
21
+ /**
22
+ * 断开数据库连接
23
+ */
24
+ disconnect(): Promise<void>;
25
+ /**
26
+ * 执行 SQL 查询
27
+ */
28
+ executeQuery(query: string, params?: unknown[]): Promise<QueryResult>;
29
+ /**
30
+ * 获取数据库结构信息
31
+ */
32
+ getSchema(): Promise<SchemaInfo>;
33
+ /**
34
+ * 获取单个表的详细信息
35
+ */
36
+ private getTableInfo;
37
+ /**
38
+ * 格式化 SQL Server 数据类型
39
+ */
40
+ private formatSQLServerType;
41
+ /**
42
+ * 检查是否为写操作
43
+ */
44
+ isWriteOperation(query: string): boolean;
45
+ }
46
+ //# sourceMappingURL=sqlserver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqlserver.d.ts","sourceRoot":"","sources":["../../src/adapters/sqlserver.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EACV,SAAS,EACT,WAAW,EACX,UAAU,EAIX,MAAM,qBAAqB,CAAC;AAG7B,qBAAa,gBAAiB,YAAW,SAAS;IAChD,OAAO,CAAC,IAAI,CAAmC;IAC/C,OAAO,CAAC,MAAM,CAMZ;gBAEU,MAAM,EAAE;QAClB,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB;IAID;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IA2C9B;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAWjC;;OAEG;IACG,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC;IAkE3E;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,UAAU,CAAC;IA+CtC;;OAEG;YACW,YAAY;IAkH1B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA0C3B;;OAEG;IACH,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;CA6BzC"}
@@ -0,0 +1,346 @@
1
+ /**
2
+ * SQL Server 数据库适配器
3
+ * 使用 mssql 驱动实现 DbAdapter 接口
4
+ * 支持 SQL Server 2012+ 和 Azure SQL Database
5
+ */
6
+ import sql from 'mssql';
7
+ import { isWriteOperation as checkWriteOperation } from '../utils/safety.js';
8
+ export class SQLServerAdapter {
9
+ pool = null;
10
+ config;
11
+ constructor(config) {
12
+ this.config = config;
13
+ }
14
+ /**
15
+ * 连接到 SQL Server 数据库
16
+ */
17
+ async connect() {
18
+ try {
19
+ // 检测是否为 Azure SQL Database
20
+ const isAzure = this.config.host.includes('.database.windows.net');
21
+ const poolConfig = {
22
+ server: this.config.host,
23
+ port: this.config.port || 1433,
24
+ user: this.config.user,
25
+ password: this.config.password,
26
+ database: this.config.database,
27
+ options: {
28
+ encrypt: isAzure, // Azure SQL 需要加密
29
+ trustServerCertificate: !isAzure, // 仅本地开发信任证书
30
+ enableArithAbort: true,
31
+ },
32
+ pool: {
33
+ max: 10,
34
+ min: 0,
35
+ idleTimeoutMillis: 30000,
36
+ },
37
+ };
38
+ this.pool = await sql.connect(poolConfig);
39
+ // 测试连接
40
+ await this.pool.request().query('SELECT 1');
41
+ }
42
+ catch (error) {
43
+ // 翻译常见错误
44
+ const errorMessage = error instanceof Error ? error.message : String(error);
45
+ if (error.number === 18456) {
46
+ throw new Error('SQL Server 连接失败: 身份验证失败,请检查用户名和密码');
47
+ }
48
+ else if (errorMessage.includes('ECONNREFUSED') || errorMessage.includes('ETIMEDOUT')) {
49
+ throw new Error('SQL Server 连接失败: 无法连接到数据库服务器,请检查主机地址和端口');
50
+ }
51
+ else if (errorMessage.includes('database') && errorMessage.includes('does not exist')) {
52
+ throw new Error('SQL Server 连接失败: 数据库不存在');
53
+ }
54
+ throw new Error(`SQL Server 连接失败: ${errorMessage}`);
55
+ }
56
+ }
57
+ /**
58
+ * 断开数据库连接
59
+ */
60
+ async disconnect() {
61
+ if (this.pool) {
62
+ try {
63
+ await this.pool.close(); // 正确关闭连接池,排空所有连接
64
+ }
65
+ catch (error) {
66
+ console.error('关闭连接池时出错:', error);
67
+ }
68
+ this.pool = null;
69
+ }
70
+ }
71
+ /**
72
+ * 执行 SQL 查询
73
+ */
74
+ async executeQuery(query, params) {
75
+ if (!this.pool) {
76
+ throw new Error('数据库未连接');
77
+ }
78
+ const startTime = Date.now();
79
+ try {
80
+ const request = this.pool.request();
81
+ // 处理参数 - SQL Server 使用 @param0, @param1 语法
82
+ if (params && params.length > 0) {
83
+ params.forEach((param, index) => {
84
+ request.input(`param${index}`, param);
85
+ });
86
+ // 替换 ? 占位符为 @param0, @param1, ...
87
+ let paramIndex = 0;
88
+ query = query.replace(/\?/g, () => `@param${paramIndex++}`);
89
+ }
90
+ const result = await request.query(query);
91
+ const executionTime = Date.now() - startTime;
92
+ // 处理 SELECT 查询
93
+ if (result.recordset && result.recordset.length > 0) {
94
+ return {
95
+ rows: result.recordset,
96
+ executionTime,
97
+ metadata: {
98
+ columnCount: Object.keys(result.recordset[0]).length,
99
+ },
100
+ };
101
+ }
102
+ // 处理 DML 操作 (INSERT/UPDATE/DELETE)
103
+ if (result.rowsAffected && result.rowsAffected.length > 0) {
104
+ const affectedRows = result.rowsAffected.reduce((sum, count) => sum + count, 0);
105
+ return {
106
+ rows: [],
107
+ affectedRows,
108
+ executionTime,
109
+ };
110
+ }
111
+ // 其他操作或空结果
112
+ return {
113
+ rows: [],
114
+ executionTime,
115
+ };
116
+ }
117
+ catch (error) {
118
+ // 翻译常见 SQL Server 错误
119
+ if (error.number === 208) {
120
+ throw new Error('查询执行失败: 表或视图不存在');
121
+ }
122
+ else if (error.number === 2627 || error.number === 2601) {
123
+ throw new Error('查询执行失败: 违反唯一约束');
124
+ }
125
+ else if (error.number === 547) {
126
+ throw new Error('查询执行失败: 违反外键约束');
127
+ }
128
+ else if (error.number === 18456) {
129
+ throw new Error('查询执行失败: 身份验证失败');
130
+ }
131
+ throw new Error(`查询执行失败: ${error.message || String(error)}`);
132
+ }
133
+ }
134
+ /**
135
+ * 获取数据库结构信息
136
+ */
137
+ async getSchema() {
138
+ if (!this.pool) {
139
+ throw new Error('数据库未连接');
140
+ }
141
+ try {
142
+ // 获取 SQL Server 版本
143
+ const versionResult = await this.pool.request().query('SELECT @@VERSION AS version');
144
+ const version = versionResult.recordset?.[0]?.version || 'unknown';
145
+ // 获取数据库名
146
+ const dbNameResult = await this.pool.request().query('SELECT DB_NAME() AS database_name');
147
+ const databaseName = dbNameResult.recordset?.[0]?.database_name || 'unknown';
148
+ // 获取所有表(过滤系统表)
149
+ const tablesResult = await this.pool.request().query(`
150
+ SELECT TABLE_SCHEMA, TABLE_NAME, TABLE_TYPE
151
+ FROM INFORMATION_SCHEMA.TABLES
152
+ WHERE TABLE_TYPE = 'BASE TABLE'
153
+ AND TABLE_SCHEMA NOT IN ('sys', 'INFORMATION_SCHEMA')
154
+ AND TABLE_SCHEMA = SCHEMA_NAME()
155
+ ORDER BY TABLE_SCHEMA, TABLE_NAME
156
+ `);
157
+ const tableInfos = [];
158
+ if (tablesResult.recordset) {
159
+ for (const tableRow of tablesResult.recordset) {
160
+ const tableName = tableRow.TABLE_NAME;
161
+ const tableInfo = await this.getTableInfo(tableName);
162
+ tableInfos.push(tableInfo);
163
+ }
164
+ }
165
+ return {
166
+ databaseType: 'sqlserver',
167
+ databaseName,
168
+ tables: tableInfos,
169
+ version,
170
+ };
171
+ }
172
+ catch (error) {
173
+ throw new Error(`获取数据库结构失败: ${error instanceof Error ? error.message : String(error)}`);
174
+ }
175
+ }
176
+ /**
177
+ * 获取单个表的详细信息
178
+ */
179
+ async getTableInfo(tableName) {
180
+ if (!this.pool) {
181
+ throw new Error('数据库未连接');
182
+ }
183
+ // 获取列信息
184
+ const columnsResult = await this.pool.request()
185
+ .input('param0', tableName)
186
+ .query(`
187
+ SELECT
188
+ c.COLUMN_NAME,
189
+ c.DATA_TYPE,
190
+ c.CHARACTER_MAXIMUM_LENGTH,
191
+ c.NUMERIC_PRECISION,
192
+ c.NUMERIC_SCALE,
193
+ c.IS_NULLABLE,
194
+ c.COLUMN_DEFAULT
195
+ FROM INFORMATION_SCHEMA.COLUMNS c
196
+ WHERE c.TABLE_NAME = @param0
197
+ AND c.TABLE_SCHEMA = SCHEMA_NAME()
198
+ ORDER BY c.ORDINAL_POSITION
199
+ `);
200
+ const columnInfos = [];
201
+ if (columnsResult.recordset) {
202
+ for (const col of columnsResult.recordset) {
203
+ columnInfos.push({
204
+ name: col.COLUMN_NAME.toLowerCase(),
205
+ type: this.formatSQLServerType(col.DATA_TYPE, col.CHARACTER_MAXIMUM_LENGTH, col.NUMERIC_PRECISION, col.NUMERIC_SCALE),
206
+ nullable: col.IS_NULLABLE === 'YES',
207
+ defaultValue: col.COLUMN_DEFAULT?.trim() || undefined,
208
+ });
209
+ }
210
+ }
211
+ // 获取主键
212
+ const primaryKeysResult = await this.pool.request()
213
+ .input('param0', tableName)
214
+ .query(`
215
+ SELECT c.COLUMN_NAME
216
+ FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS tc
217
+ JOIN INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE c
218
+ ON tc.CONSTRAINT_NAME = c.CONSTRAINT_NAME
219
+ WHERE tc.TABLE_NAME = @param0
220
+ AND tc.TABLE_SCHEMA = SCHEMA_NAME()
221
+ AND tc.CONSTRAINT_TYPE = 'PRIMARY KEY'
222
+ ORDER BY c.ORDINAL_POSITION
223
+ `);
224
+ const primaryKeys = [];
225
+ if (primaryKeysResult.recordset) {
226
+ for (const row of primaryKeysResult.recordset) {
227
+ primaryKeys.push(row.COLUMN_NAME.toLowerCase());
228
+ }
229
+ }
230
+ // 获取索引信息
231
+ const indexesResult = await this.pool.request()
232
+ .input('param0', tableName)
233
+ .query(`
234
+ SELECT
235
+ i.name AS index_name,
236
+ STRING_AGG(c.name, ', ') WITHIN GROUP (ORDER BY ic.key_ordinal) AS column_names,
237
+ i.is_unique
238
+ FROM sys.indexes i
239
+ INNER JOIN sys.index_columns ic ON i.object_id = ic.object_id AND i.index_id = ic.index_id
240
+ INNER JOIN sys.columns c ON ic.object_id = c.object_id AND ic.column_id = c.column_id
241
+ WHERE i.object_id = OBJECT_ID(@param0)
242
+ AND i.is_primary_key = 0
243
+ AND i.type > 0
244
+ GROUP BY i.name, i.is_unique
245
+ ORDER BY i.name
246
+ `);
247
+ const indexInfos = [];
248
+ if (indexesResult.recordset) {
249
+ for (const row of indexesResult.recordset) {
250
+ const columns = row.column_names.split(', ').map((col) => col.toLowerCase());
251
+ indexInfos.push({
252
+ name: row.index_name,
253
+ columns,
254
+ unique: row.is_unique,
255
+ });
256
+ }
257
+ }
258
+ // 获取行数估算
259
+ const rowCountResult = await this.pool.request()
260
+ .input('param0', tableName)
261
+ .query(`
262
+ SELECT SUM(p.rows) AS row_count
263
+ FROM sys.partitions p
264
+ JOIN sys.tables t ON p.object_id = t.object_id
265
+ WHERE t.name = @param0
266
+ AND t.schema_id = SCHEMA_ID()
267
+ AND p.index_id IN (0, 1)
268
+ `);
269
+ const estimatedRows = rowCountResult.recordset?.[0]?.row_count || 0;
270
+ return {
271
+ name: tableName.toLowerCase(),
272
+ columns: columnInfos,
273
+ primaryKeys,
274
+ indexes: indexInfos,
275
+ estimatedRows,
276
+ };
277
+ }
278
+ /**
279
+ * 格式化 SQL Server 数据类型
280
+ */
281
+ formatSQLServerType(dataType, length, precision, scale) {
282
+ switch (dataType.toUpperCase()) {
283
+ case 'NVARCHAR':
284
+ case 'VARCHAR':
285
+ case 'NCHAR':
286
+ case 'CHAR':
287
+ if (length === -1)
288
+ return `${dataType}(MAX)`;
289
+ if (length)
290
+ return `${dataType}(${length})`;
291
+ return dataType;
292
+ case 'DECIMAL':
293
+ case 'NUMERIC':
294
+ if (precision && scale !== undefined && scale !== null) {
295
+ return `${dataType}(${precision},${scale})`;
296
+ }
297
+ if (precision)
298
+ return `${dataType}(${precision})`;
299
+ return dataType;
300
+ case 'DATETIME2':
301
+ case 'DATETIMEOFFSET':
302
+ case 'TIME':
303
+ if (scale !== undefined && scale !== null) {
304
+ return `${dataType}(${scale})`;
305
+ }
306
+ return dataType;
307
+ case 'VARBINARY':
308
+ case 'BINARY':
309
+ if (length === -1)
310
+ return `${dataType}(MAX)`;
311
+ if (length)
312
+ return `${dataType}(${length})`;
313
+ return dataType;
314
+ default:
315
+ return dataType;
316
+ }
317
+ }
318
+ /**
319
+ * 检查是否为写操作
320
+ */
321
+ isWriteOperation(query) {
322
+ // 首先使用通用的写操作检测
323
+ if (checkWriteOperation(query)) {
324
+ return true;
325
+ }
326
+ // SQL Server 特定的写操作检测
327
+ const trimmedQuery = query.trim().toUpperCase();
328
+ // MERGE 语句(SQL Server 的 upsert 操作)
329
+ if (trimmedQuery.startsWith('MERGE')) {
330
+ return true;
331
+ }
332
+ // 存储过程执行
333
+ if (trimmedQuery.startsWith('EXEC') || trimmedQuery.startsWith('EXECUTE')) {
334
+ return true;
335
+ }
336
+ // 事务控制语句
337
+ if (trimmedQuery.startsWith('BEGIN TRANSACTION') ||
338
+ trimmedQuery.startsWith('BEGIN TRAN') ||
339
+ trimmedQuery.startsWith('COMMIT') ||
340
+ trimmedQuery.startsWith('ROLLBACK')) {
341
+ return true;
342
+ }
343
+ return false;
344
+ }
345
+ }
346
+ //# sourceMappingURL=sqlserver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqlserver.js","sourceRoot":"","sources":["../../src/adapters/sqlserver.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -9,12 +9,13 @@ import { PostgreSQLAdapter } from './adapters/postgres.js';
9
9
  import { RedisAdapter } from './adapters/redis.js';
10
10
  import { OracleAdapter } from './adapters/oracle.js';
11
11
  import { DMAdapter } from './adapters/dm.js';
12
+ import { SQLServerAdapter } from './adapters/sqlserver.js';
12
13
  const program = new Command();
13
14
  program
14
15
  .name('universal-db-mcp')
15
16
  .description('MCP 数据库万能连接器 - 让 Claude Desktop 直接连接你的数据库')
16
17
  .version('0.1.0')
17
- .requiredOption('--type <type>', '数据库类型 (mysql|postgres|redis|oracle|dm)')
18
+ .requiredOption('--type <type>', '数据库类型 (mysql|postgres|redis|oracle|dm|sqlserver|mssql)')
18
19
  .requiredOption('--host <host>', '数据库主机地址')
19
20
  .requiredOption('--port <port>', '数据库端口', parseInt)
20
21
  .option('--user <user>', '用户名')
@@ -24,13 +25,18 @@ program
24
25
  .action(async (options) => {
25
26
  try {
26
27
  // 验证数据库类型
27
- if (!['mysql', 'postgres', 'redis', 'oracle', 'dm'].includes(options.type)) {
28
- console.error('❌ 错误: 不支持的数据库类型。支持的类型: mysql, postgres, redis, oracle, dm');
28
+ if (!['mysql', 'postgres', 'redis', 'oracle', 'dm', 'sqlserver', 'mssql'].includes(options.type)) {
29
+ console.error('❌ 错误: 不支持的数据库类型。支持的类型: mysql, postgres, redis, oracle, dm, sqlserver (或 mssql)');
29
30
  process.exit(1);
30
31
  }
32
+ // 规范化 SQL Server 别名
33
+ let dbType = options.type;
34
+ if (dbType === 'mssql') {
35
+ dbType = 'sqlserver';
36
+ }
31
37
  // 构建配置
32
38
  const config = {
33
- type: options.type,
39
+ type: dbType,
34
40
  host: options.host,
35
41
  port: options.port,
36
42
  user: options.user,
@@ -93,6 +99,15 @@ program
93
99
  database: config.database,
94
100
  });
95
101
  break;
102
+ case 'sqlserver':
103
+ adapter = new SQLServerAdapter({
104
+ host: config.host,
105
+ port: config.port,
106
+ user: config.user,
107
+ password: config.password,
108
+ database: config.database,
109
+ });
110
+ break;
96
111
  default:
97
112
  throw new Error(`不支持的数据库类型: ${config.type}`);
98
113
  }
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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"}
@@ -49,7 +49,7 @@ export interface QueryResult {
49
49
  */
50
50
  export interface SchemaInfo {
51
51
  /** 数据库类型 */
52
- databaseType: 'mysql' | 'postgres' | 'redis' | 'oracle' | 'dm';
52
+ databaseType: 'mysql' | 'postgres' | 'redis' | 'oracle' | 'dm' | 'sqlserver';
53
53
  /** 数据库名称 */
54
54
  databaseName: string;
55
55
  /** 表信息列表 */
@@ -102,7 +102,7 @@ export interface IndexInfo {
102
102
  * 数据库连接配置
103
103
  */
104
104
  export interface DbConfig {
105
- type: 'mysql' | 'postgres' | 'redis' | 'oracle' | 'dm';
105
+ type: 'mysql' | 'postgres' | 'redis' | 'oracle' | 'dm' | 'sqlserver';
106
106
  host: string;
107
107
  port: number;
108
108
  user?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/types/adapter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,SAAS;IACxB;;;OAGG;IACH,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzB;;OAEG;IACH,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5B;;;;;OAKG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAEtE;;;OAGG;IACH,SAAS,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC;IAEjC;;;;OAIG;IACH,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1C;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,eAAe;IACf,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAChC,sCAAsC;IACtC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,YAAY;IACZ,YAAY,EAAE,OAAO,GAAG,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,IAAI,CAAC;IAC/D,YAAY;IACZ,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY;IACZ,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,YAAY;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,SAAS;IACT,IAAI,EAAE,MAAM,CAAC;IACb,UAAU;IACV,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,WAAW;IACX,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,WAAW;IACX,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC;IACtB,WAAW;IACX,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,SAAS;IACT,IAAI,EAAE,MAAM,CAAC;IACb,WAAW;IACX,IAAI,EAAE,MAAM,CAAC;IACb,YAAY;IACZ,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU;IACV,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW;IACX,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,WAAW;IACX,IAAI,EAAE,MAAM,CAAC;IACb,UAAU;IACV,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,aAAa;IACb,MAAM,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,OAAO,GAAG,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,IAAI,CAAC;IACvD,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6BAA6B;IAC7B,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB"}
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/types/adapter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,SAAS;IACxB;;;OAGG;IACH,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzB;;OAEG;IACH,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5B;;;;;OAKG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAEtE;;;OAGG;IACH,SAAS,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC;IAEjC;;;;OAIG;IACH,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1C;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,eAAe;IACf,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAChC,sCAAsC;IACtC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,YAAY;IACZ,YAAY,EAAE,OAAO,GAAG,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,IAAI,GAAG,WAAW,CAAC;IAC7E,YAAY;IACZ,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY;IACZ,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,YAAY;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,SAAS;IACT,IAAI,EAAE,MAAM,CAAC;IACb,UAAU;IACV,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,WAAW;IACX,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,WAAW;IACX,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC;IACtB,WAAW;IACX,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,SAAS;IACT,IAAI,EAAE,MAAM,CAAC;IACb,WAAW;IACX,IAAI,EAAE,MAAM,CAAC;IACb,YAAY;IACZ,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU;IACV,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW;IACX,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,WAAW;IACX,IAAI,EAAE,MAAM,CAAC;IACb,UAAU;IACV,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,aAAa;IACb,MAAM,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,OAAO,GAAG,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,IAAI,GAAG,WAAW,CAAC;IACrE,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6BAA6B;IAC7B,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "universal-db-mcp",
3
- "version": "0.3.1",
3
+ "version": "0.4.0",
4
4
  "description": "MCP 数据库万能连接器 - 让 Claude Desktop 直接连接你的数据库",
5
5
  "main": "dist/index.js",
6
6
  "bin": {
@@ -24,6 +24,9 @@
24
24
  "oracle",
25
25
  "dameng",
26
26
  "dm",
27
+ "sqlserver",
28
+ "mssql",
29
+ "sql-server",
27
30
  "数据库",
28
31
  "AI"
29
32
  ],
@@ -45,12 +48,14 @@
45
48
  "@modelcontextprotocol/sdk": "^1.0.4",
46
49
  "commander": "^12.1.0",
47
50
  "ioredis": "^5.4.2",
51
+ "mssql": "^12.2.0",
48
52
  "mysql2": "^3.11.5",
49
53
  "oracledb": "^6.7.0",
50
54
  "pg": "^8.13.1",
51
55
  "zod": "^3.24.1"
52
56
  },
53
57
  "devDependencies": {
58
+ "@types/mssql": "^9.1.5",
54
59
  "@types/node": "^22.10.5",
55
60
  "@types/oracledb": "^6.5.1",
56
61
  "@types/pg": "^8.11.10",