universal-db-mcp 0.6.0 → 0.7.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 +161 -0
- package/README.md +32 -4
- package/dist/adapters/kingbase.d.ts +42 -0
- package/dist/adapters/kingbase.d.ts.map +1 -0
- package/dist/adapters/kingbase.js +211 -0
- package/dist/adapters/kingbase.js.map +1 -0
- package/dist/index.js +13 -3
- package/dist/index.js.map +1 -1
- package/dist/types/adapter.d.ts +2 -2
- package/dist/types/adapter.d.ts.map +1 -1
- package/package.json +4 -1
package/EXAMPLES.md
CHANGED
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
- [SQL Server 使用示例](#sql-server-使用示例)
|
|
13
13
|
- [MongoDB 使用示例](#mongodb-使用示例)
|
|
14
14
|
- [SQLite 使用示例](#sqlite-使用示例)
|
|
15
|
+
- [KingbaseES 使用示例](#kingbasees-使用示例)
|
|
15
16
|
- [Claude Desktop 配置示例](#claude-desktop-配置示例)
|
|
16
17
|
- [常见使用场景](#常见使用场景)
|
|
17
18
|
|
|
@@ -817,6 +818,153 @@ Claude 会:
|
|
|
817
818
|
|
|
818
819
|
---
|
|
819
820
|
|
|
821
|
+
## KingbaseES 使用示例
|
|
822
|
+
|
|
823
|
+
### 基础配置(只读模式)
|
|
824
|
+
|
|
825
|
+
```json
|
|
826
|
+
{
|
|
827
|
+
"mcpServers": {
|
|
828
|
+
"kingbase-db": {
|
|
829
|
+
"command": "npx",
|
|
830
|
+
"args": [
|
|
831
|
+
"universal-db-mcp",
|
|
832
|
+
"--type", "kingbase",
|
|
833
|
+
"--host", "localhost",
|
|
834
|
+
"--port", "54321",
|
|
835
|
+
"--user", "system",
|
|
836
|
+
"--password", "your_password",
|
|
837
|
+
"--database", "test"
|
|
838
|
+
]
|
|
839
|
+
}
|
|
840
|
+
}
|
|
841
|
+
}
|
|
842
|
+
```
|
|
843
|
+
|
|
844
|
+
### 启用写入模式
|
|
845
|
+
|
|
846
|
+
```json
|
|
847
|
+
{
|
|
848
|
+
"mcpServers": {
|
|
849
|
+
"kingbase-write": {
|
|
850
|
+
"command": "npx",
|
|
851
|
+
"args": [
|
|
852
|
+
"universal-db-mcp",
|
|
853
|
+
"--type", "kingbase",
|
|
854
|
+
"--host", "localhost",
|
|
855
|
+
"--port", "54321",
|
|
856
|
+
"--user", "system",
|
|
857
|
+
"--password", "your_password",
|
|
858
|
+
"--database", "mydb",
|
|
859
|
+
"--danger-allow-write"
|
|
860
|
+
]
|
|
861
|
+
}
|
|
862
|
+
}
|
|
863
|
+
}
|
|
864
|
+
```
|
|
865
|
+
|
|
866
|
+
### 连接远程 KingbaseES
|
|
867
|
+
|
|
868
|
+
```json
|
|
869
|
+
{
|
|
870
|
+
"mcpServers": {
|
|
871
|
+
"kingbase-prod": {
|
|
872
|
+
"command": "npx",
|
|
873
|
+
"args": [
|
|
874
|
+
"universal-db-mcp",
|
|
875
|
+
"--type", "kingbase",
|
|
876
|
+
"--host", "kingbase.example.com",
|
|
877
|
+
"--port", "54321",
|
|
878
|
+
"--user", "readonly_user",
|
|
879
|
+
"--password", "secure_password",
|
|
880
|
+
"--database", "production"
|
|
881
|
+
]
|
|
882
|
+
}
|
|
883
|
+
}
|
|
884
|
+
}
|
|
885
|
+
```
|
|
886
|
+
|
|
887
|
+
### 与 Claude 对话示例
|
|
888
|
+
|
|
889
|
+
**用户**: 查看数据库中有哪些表?
|
|
890
|
+
|
|
891
|
+
**Claude 会自动**:
|
|
892
|
+
1. 调用 `get_schema` 工具
|
|
893
|
+
2. 执行查询获取 public schema 下的所有表
|
|
894
|
+
3. 返回表列表
|
|
895
|
+
|
|
896
|
+
**用户**: 查看 users 表的结构
|
|
897
|
+
|
|
898
|
+
**Claude 会自动**:
|
|
899
|
+
1. 调用 `get_table_info` 工具
|
|
900
|
+
2. 返回列信息、主键、索引等详细信息
|
|
901
|
+
|
|
902
|
+
**用户**: 统计每个部门的员工数量
|
|
903
|
+
|
|
904
|
+
**Claude 会自动**:
|
|
905
|
+
1. 理解需求
|
|
906
|
+
2. 生成 SQL: `SELECT department_id, COUNT(*) as count FROM employees GROUP BY department_id ORDER BY count DESC`
|
|
907
|
+
3. 执行并返回结果
|
|
908
|
+
|
|
909
|
+
**用户**: 查找最近一周创建的订单
|
|
910
|
+
|
|
911
|
+
**Claude 会自动**:
|
|
912
|
+
1. 生成 SQL: `SELECT * FROM orders WHERE created_at >= CURRENT_DATE - INTERVAL '7 days' ORDER BY created_at DESC`
|
|
913
|
+
2. 执行并返回结果
|
|
914
|
+
|
|
915
|
+
### 注意事项
|
|
916
|
+
|
|
917
|
+
1. **默认端口**: KingbaseES 默认端口为 54321
|
|
918
|
+
2. **兼容性**: 基于 PostgreSQL 开发,兼容 PostgreSQL 协议和 SQL 语法
|
|
919
|
+
3. **驱动**: 使用 PostgreSQL 的 `pg` 驱动
|
|
920
|
+
4. **Schema**: 默认查询 public schema 下的表
|
|
921
|
+
5. **参数化查询**: 支持 `$1, $2, ...` 占位符
|
|
922
|
+
6. **国产化**: 适用于国产化替代场景
|
|
923
|
+
|
|
924
|
+
### 支持的 KingbaseES 版本
|
|
925
|
+
|
|
926
|
+
- ✅ KingbaseES V8
|
|
927
|
+
- ✅ KingbaseES V9
|
|
928
|
+
- ✅ 其他兼容 PostgreSQL 协议的版本
|
|
929
|
+
|
|
930
|
+
### 常见使用场景
|
|
931
|
+
|
|
932
|
+
#### 1. 国产化数据库迁移
|
|
933
|
+
|
|
934
|
+
从 PostgreSQL 迁移到 KingbaseES:
|
|
935
|
+
|
|
936
|
+
```
|
|
937
|
+
用户: 帮我分析现有表结构,准备迁移到 KingbaseES
|
|
938
|
+
|
|
939
|
+
Claude 会:
|
|
940
|
+
1. 获取完整的 Schema 信息
|
|
941
|
+
2. 分析表结构、索引、约束
|
|
942
|
+
3. 提供迁移建议
|
|
943
|
+
```
|
|
944
|
+
|
|
945
|
+
#### 2. 数据分析和报表
|
|
946
|
+
|
|
947
|
+
```
|
|
948
|
+
用户: 统计最近一个月的销售数据
|
|
949
|
+
|
|
950
|
+
Claude 会:
|
|
951
|
+
1. 理解需求
|
|
952
|
+
2. 生成复杂的聚合查询
|
|
953
|
+
3. 返回分析结果
|
|
954
|
+
```
|
|
955
|
+
|
|
956
|
+
#### 3. 开发和测试
|
|
957
|
+
|
|
958
|
+
```
|
|
959
|
+
用户: 在测试环境创建测试数据
|
|
960
|
+
|
|
961
|
+
Claude 会(在写入模式下):
|
|
962
|
+
1. 生成 INSERT 语句
|
|
963
|
+
2. 执行并验证结果
|
|
964
|
+
```
|
|
965
|
+
|
|
966
|
+
---
|
|
967
|
+
|
|
820
968
|
## Claude Desktop 配置示例
|
|
821
969
|
|
|
822
970
|
### 同时连接多个数据库
|
|
@@ -879,6 +1027,18 @@ Claude 会:
|
|
|
879
1027
|
"--type", "sqlite",
|
|
880
1028
|
"--file", "/Users/yourname/data/local.db"
|
|
881
1029
|
]
|
|
1030
|
+
},
|
|
1031
|
+
"kingbase-db": {
|
|
1032
|
+
"command": "npx",
|
|
1033
|
+
"args": [
|
|
1034
|
+
"universal-db-mcp",
|
|
1035
|
+
"--type", "kingbase",
|
|
1036
|
+
"--host", "localhost",
|
|
1037
|
+
"--port", "54321",
|
|
1038
|
+
"--user", "system",
|
|
1039
|
+
"--password", "your_password",
|
|
1040
|
+
"--database", "test"
|
|
1041
|
+
]
|
|
882
1042
|
}
|
|
883
1043
|
}
|
|
884
1044
|
}
|
|
@@ -891,6 +1051,7 @@ Claude 会:
|
|
|
891
1051
|
- "检查 Redis 缓存中的..."
|
|
892
1052
|
- "在 Oracle 数据仓库中统计..."
|
|
893
1053
|
- "从 SQLite 本地数据库查询..."
|
|
1054
|
+
- "在 KingbaseES 数据库中查询..."
|
|
894
1055
|
|
|
895
1056
|
---
|
|
896
1057
|
|
package/README.md
CHANGED
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
|
|
20
20
|
✅ **智能表结构理解** - 自动获取数据库 Schema,提供精准建议
|
|
21
21
|
|
|
22
|
-
✅ **多数据库支持** - MySQL、PostgreSQL、Redis、Oracle、达梦、SQL Server、MongoDB、SQLite 一键切换
|
|
22
|
+
✅ **多数据库支持** - MySQL、PostgreSQL、Redis、Oracle、达梦、SQL Server、MongoDB、SQLite、KingbaseES 一键切换
|
|
23
23
|
|
|
24
24
|
✅ **安全第一** - 默认只读模式,防止误操作删库
|
|
25
25
|
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
|
|
34
34
|
- Node.js >= 20
|
|
35
35
|
- Claude Desktop 应用
|
|
36
|
-
- 至少一个数据库实例(MySQL/PostgreSQL/Redis/Oracle/达梦/SQL Server/MongoDB/SQLite)
|
|
36
|
+
- 至少一个数据库实例(MySQL/PostgreSQL/Redis/Oracle/达梦/SQL Server/MongoDB/SQLite/KingbaseES)
|
|
37
37
|
|
|
38
38
|
### 安装
|
|
39
39
|
|
|
@@ -100,6 +100,32 @@ npx universal-db-mcp
|
|
|
100
100
|
- Windows 路径示例:`"C:\\Users\\YourName\\data\\mydb.db"`
|
|
101
101
|
- macOS/Linux 路径示例:`"/Users/YourName/data/mydb.db"`
|
|
102
102
|
|
|
103
|
+
#### KingbaseES 示例
|
|
104
|
+
|
|
105
|
+
```json
|
|
106
|
+
{
|
|
107
|
+
"mcpServers": {
|
|
108
|
+
"kingbase-db": {
|
|
109
|
+
"command": "npx",
|
|
110
|
+
"args": [
|
|
111
|
+
"universal-db-mcp",
|
|
112
|
+
"--type", "kingbase",
|
|
113
|
+
"--host", "localhost",
|
|
114
|
+
"--port", "54321",
|
|
115
|
+
"--user", "system",
|
|
116
|
+
"--password", "your_password",
|
|
117
|
+
"--database", "test"
|
|
118
|
+
]
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
**说明**:
|
|
125
|
+
- KingbaseES 基于 PostgreSQL 开发,兼容 PostgreSQL 协议
|
|
126
|
+
- 默认端口为 54321
|
|
127
|
+
- 使用与 PostgreSQL 相同的驱动(pg)
|
|
128
|
+
|
|
103
129
|
### 启动使用
|
|
104
130
|
|
|
105
131
|
1. 重启 Claude Desktop
|
|
@@ -141,6 +167,7 @@ Claude 会自动调用数据库工具完成查询!
|
|
|
141
167
|
| SQL Server (2012+) | `--type sqlserver` 或 `--type mssql` | 1433 | ✅ 已支持 | 支持 Azure SQL Database |
|
|
142
168
|
| MongoDB | `--type mongodb` | 27017 | ✅ 已支持 | 支持 MongoDB 4.0+ |
|
|
143
169
|
| SQLite | `--type sqlite` | - | ✅ 已支持 | 本地文件数据库 |
|
|
170
|
+
| KingbaseES(人大金仓) | `--type kingbase` | 54321 | ✅ 已支持 | 兼容 PostgreSQL 协议 |
|
|
144
171
|
|
|
145
172
|
**注意**:
|
|
146
173
|
- 达梦数据库驱动 `dmdb` 会作为可选依赖自动安装。如果安装失败,请手动运行 `npm install -g dmdb`。
|
|
@@ -152,7 +179,7 @@ Claude 会自动调用数据库工具完成查询!
|
|
|
152
179
|
universal-db-mcp [选项]
|
|
153
180
|
|
|
154
181
|
选项:
|
|
155
|
-
--type <db> 数据库类型 (mysql|postgres|redis|oracle|dm|sqlserver|mssql|mongodb|sqlite)
|
|
182
|
+
--type <db> 数据库类型 (mysql|postgres|redis|oracle|dm|sqlserver|mssql|mongodb|sqlite|kingbase)
|
|
156
183
|
--host <host> 数据库主机地址 (默认: localhost)
|
|
157
184
|
--port <port> 数据库端口
|
|
158
185
|
--user <user> 用户名
|
|
@@ -177,7 +204,8 @@ src/
|
|
|
177
204
|
│ ├── dm.ts
|
|
178
205
|
│ ├── sqlserver.ts
|
|
179
206
|
│ ├── mongodb.ts
|
|
180
|
-
│
|
|
207
|
+
│ ├── sqlite.ts
|
|
208
|
+
│ └── kingbase.ts
|
|
181
209
|
├── types/ # TypeScript 类型定义
|
|
182
210
|
│ └── adapter.ts
|
|
183
211
|
├── utils/ # 工具函数
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* KingbaseES(人大金仓)数据库适配器
|
|
3
|
+
* 使用 pg 驱动实现 DbAdapter 接口
|
|
4
|
+
* KingbaseES 基于 PostgreSQL 开发,兼容 PostgreSQL 协议
|
|
5
|
+
*/
|
|
6
|
+
import type { DbAdapter, QueryResult, SchemaInfo } from '../types/adapter.js';
|
|
7
|
+
export declare class KingbaseAdapter implements DbAdapter {
|
|
8
|
+
private client;
|
|
9
|
+
private config;
|
|
10
|
+
constructor(config: {
|
|
11
|
+
host: string;
|
|
12
|
+
port: number;
|
|
13
|
+
user?: string;
|
|
14
|
+
password?: string;
|
|
15
|
+
database?: string;
|
|
16
|
+
});
|
|
17
|
+
/**
|
|
18
|
+
* 连接到 KingbaseES 数据库
|
|
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
|
+
* 检查是否为写操作
|
|
39
|
+
*/
|
|
40
|
+
isWriteOperation(query: string): boolean;
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=kingbase.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kingbase.d.ts","sourceRoot":"","sources":["../../src/adapters/kingbase.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EACV,SAAS,EACT,WAAW,EACX,UAAU,EAIX,MAAM,qBAAqB,CAAC;AAK7B,qBAAa,eAAgB,YAAW,SAAS;IAC/C,OAAO,CAAC,MAAM,CAA0B;IACxC,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;IAqB9B;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAOjC;;OAEG;IACG,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC;IA8B3E;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,UAAU,CAAC;IA4CtC;;OAEG;YACW,YAAY;IA2G1B;;OAEG;IACH,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;CAGzC"}
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* KingbaseES(人大金仓)数据库适配器
|
|
3
|
+
* 使用 pg 驱动实现 DbAdapter 接口
|
|
4
|
+
* KingbaseES 基于 PostgreSQL 开发,兼容 PostgreSQL 协议
|
|
5
|
+
*/
|
|
6
|
+
import pg from 'pg';
|
|
7
|
+
import { isWriteOperation as checkWriteOperation } from '../utils/safety.js';
|
|
8
|
+
const { Client } = pg;
|
|
9
|
+
export class KingbaseAdapter {
|
|
10
|
+
client = null;
|
|
11
|
+
config;
|
|
12
|
+
constructor(config) {
|
|
13
|
+
this.config = config;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* 连接到 KingbaseES 数据库
|
|
17
|
+
*/
|
|
18
|
+
async connect() {
|
|
19
|
+
try {
|
|
20
|
+
this.client = new Client({
|
|
21
|
+
host: this.config.host,
|
|
22
|
+
port: this.config.port,
|
|
23
|
+
user: this.config.user,
|
|
24
|
+
password: this.config.password,
|
|
25
|
+
database: this.config.database,
|
|
26
|
+
});
|
|
27
|
+
await this.client.connect();
|
|
28
|
+
// 测试连接
|
|
29
|
+
await this.client.query('SELECT 1');
|
|
30
|
+
}
|
|
31
|
+
catch (error) {
|
|
32
|
+
throw new Error(`KingbaseES 连接失败: ${error instanceof Error ? error.message : String(error)}`);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* 断开数据库连接
|
|
37
|
+
*/
|
|
38
|
+
async disconnect() {
|
|
39
|
+
if (this.client) {
|
|
40
|
+
await this.client.end();
|
|
41
|
+
this.client = null;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* 执行 SQL 查询
|
|
46
|
+
*/
|
|
47
|
+
async executeQuery(query, params) {
|
|
48
|
+
if (!this.client) {
|
|
49
|
+
throw new Error('数据库未连接');
|
|
50
|
+
}
|
|
51
|
+
const startTime = Date.now();
|
|
52
|
+
try {
|
|
53
|
+
const result = await this.client.query(query, params);
|
|
54
|
+
const executionTime = Date.now() - startTime;
|
|
55
|
+
return {
|
|
56
|
+
rows: result.rows,
|
|
57
|
+
affectedRows: result.rowCount || 0,
|
|
58
|
+
executionTime,
|
|
59
|
+
metadata: {
|
|
60
|
+
command: result.command,
|
|
61
|
+
fields: result.fields?.map(f => ({
|
|
62
|
+
name: f.name,
|
|
63
|
+
dataTypeID: f.dataTypeID,
|
|
64
|
+
})),
|
|
65
|
+
},
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
catch (error) {
|
|
69
|
+
throw new Error(`查询执行失败: ${error instanceof Error ? error.message : String(error)}`);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* 获取数据库结构信息
|
|
74
|
+
*/
|
|
75
|
+
async getSchema() {
|
|
76
|
+
if (!this.client) {
|
|
77
|
+
throw new Error('数据库未连接');
|
|
78
|
+
}
|
|
79
|
+
try {
|
|
80
|
+
// 获取数据库版本
|
|
81
|
+
const versionResult = await this.client.query('SELECT version()');
|
|
82
|
+
const version = versionResult.rows[0]?.version || 'unknown';
|
|
83
|
+
// 获取当前数据库名
|
|
84
|
+
const dbResult = await this.client.query('SELECT current_database()');
|
|
85
|
+
const databaseName = dbResult.rows[0]?.current_database || this.config.database || 'unknown';
|
|
86
|
+
// 获取所有表(仅 public schema)
|
|
87
|
+
const tablesResult = await this.client.query(`
|
|
88
|
+
SELECT table_name
|
|
89
|
+
FROM information_schema.tables
|
|
90
|
+
WHERE table_schema = 'public'
|
|
91
|
+
AND table_type = 'BASE TABLE'
|
|
92
|
+
ORDER BY table_name
|
|
93
|
+
`);
|
|
94
|
+
const tableInfos = [];
|
|
95
|
+
for (const row of tablesResult.rows) {
|
|
96
|
+
const tableName = row.table_name;
|
|
97
|
+
const tableInfo = await this.getTableInfo(tableName);
|
|
98
|
+
tableInfos.push(tableInfo);
|
|
99
|
+
}
|
|
100
|
+
return {
|
|
101
|
+
databaseType: 'kingbase',
|
|
102
|
+
databaseName,
|
|
103
|
+
tables: tableInfos,
|
|
104
|
+
version,
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
catch (error) {
|
|
108
|
+
throw new Error(`获取数据库结构失败: ${error instanceof Error ? error.message : String(error)}`);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* 获取单个表的详细信息
|
|
113
|
+
*/
|
|
114
|
+
async getTableInfo(tableName) {
|
|
115
|
+
if (!this.client) {
|
|
116
|
+
throw new Error('数据库未连接');
|
|
117
|
+
}
|
|
118
|
+
// 获取列信息
|
|
119
|
+
const columnsResult = await this.client.query(`
|
|
120
|
+
SELECT
|
|
121
|
+
column_name,
|
|
122
|
+
data_type,
|
|
123
|
+
is_nullable,
|
|
124
|
+
column_default,
|
|
125
|
+
character_maximum_length,
|
|
126
|
+
numeric_precision,
|
|
127
|
+
numeric_scale
|
|
128
|
+
FROM information_schema.columns
|
|
129
|
+
WHERE table_schema = 'public'
|
|
130
|
+
AND table_name = $1
|
|
131
|
+
ORDER BY ordinal_position
|
|
132
|
+
`, [tableName]);
|
|
133
|
+
const columnInfos = columnsResult.rows.map((col) => {
|
|
134
|
+
let dataType = col.data_type;
|
|
135
|
+
// 添加长度/精度信息
|
|
136
|
+
if (col.character_maximum_length) {
|
|
137
|
+
dataType += `(${col.character_maximum_length})`;
|
|
138
|
+
}
|
|
139
|
+
else if (col.numeric_precision) {
|
|
140
|
+
dataType += `(${col.numeric_precision}${col.numeric_scale ? `,${col.numeric_scale}` : ''})`;
|
|
141
|
+
}
|
|
142
|
+
return {
|
|
143
|
+
name: col.column_name,
|
|
144
|
+
type: dataType,
|
|
145
|
+
nullable: col.is_nullable === 'YES',
|
|
146
|
+
defaultValue: col.column_default || undefined,
|
|
147
|
+
};
|
|
148
|
+
});
|
|
149
|
+
// 获取主键
|
|
150
|
+
const pkResult = await this.client.query(`
|
|
151
|
+
SELECT a.attname
|
|
152
|
+
FROM pg_index i
|
|
153
|
+
JOIN pg_attribute a ON a.attrelid = i.indrelid AND a.attnum = ANY(i.indkey)
|
|
154
|
+
WHERE i.indrelid = $1::regclass
|
|
155
|
+
AND i.indisprimary
|
|
156
|
+
`, [tableName]);
|
|
157
|
+
const primaryKeys = pkResult.rows.map(row => row.attname);
|
|
158
|
+
// 获取索引信息
|
|
159
|
+
const indexResult = await this.client.query(`
|
|
160
|
+
SELECT
|
|
161
|
+
i.relname as index_name,
|
|
162
|
+
a.attname as column_name,
|
|
163
|
+
ix.indisunique as is_unique
|
|
164
|
+
FROM pg_class t
|
|
165
|
+
JOIN pg_index ix ON t.oid = ix.indrelid
|
|
166
|
+
JOIN pg_class i ON i.oid = ix.indexrelid
|
|
167
|
+
JOIN pg_attribute a ON a.attrelid = t.oid AND a.attnum = ANY(ix.indkey)
|
|
168
|
+
WHERE t.relname = $1
|
|
169
|
+
AND t.relkind = 'r'
|
|
170
|
+
AND NOT ix.indisprimary
|
|
171
|
+
ORDER BY i.relname, a.attnum
|
|
172
|
+
`, [tableName]);
|
|
173
|
+
const indexMap = new Map();
|
|
174
|
+
for (const idx of indexResult.rows) {
|
|
175
|
+
const indexName = idx.index_name;
|
|
176
|
+
if (!indexMap.has(indexName)) {
|
|
177
|
+
indexMap.set(indexName, {
|
|
178
|
+
columns: [],
|
|
179
|
+
unique: idx.is_unique,
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
indexMap.get(indexName).columns.push(idx.column_name);
|
|
183
|
+
}
|
|
184
|
+
const indexInfos = Array.from(indexMap.entries()).map(([name, info]) => ({
|
|
185
|
+
name,
|
|
186
|
+
columns: info.columns,
|
|
187
|
+
unique: info.unique,
|
|
188
|
+
}));
|
|
189
|
+
// 获取表行数估算
|
|
190
|
+
const statsResult = await this.client.query(`
|
|
191
|
+
SELECT reltuples::bigint as estimate
|
|
192
|
+
FROM pg_class
|
|
193
|
+
WHERE relname = $1
|
|
194
|
+
`, [tableName]);
|
|
195
|
+
const estimatedRows = Number(statsResult.rows[0]?.estimate || 0);
|
|
196
|
+
return {
|
|
197
|
+
name: tableName,
|
|
198
|
+
columns: columnInfos,
|
|
199
|
+
primaryKeys,
|
|
200
|
+
indexes: indexInfos,
|
|
201
|
+
estimatedRows,
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* 检查是否为写操作
|
|
206
|
+
*/
|
|
207
|
+
isWriteOperation(query) {
|
|
208
|
+
return checkWriteOperation(query);
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
//# sourceMappingURL=kingbase.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kingbase.js","sourceRoot":"","sources":["../../src/adapters/kingbase.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -12,12 +12,13 @@ import { DMAdapter } from './adapters/dm.js';
|
|
|
12
12
|
import { SQLServerAdapter } from './adapters/sqlserver.js';
|
|
13
13
|
import { MongoDBAdapter } from './adapters/mongodb.js';
|
|
14
14
|
import { SQLiteAdapter } from './adapters/sqlite.js';
|
|
15
|
+
import { KingbaseAdapter } from './adapters/kingbase.js';
|
|
15
16
|
const program = new Command();
|
|
16
17
|
program
|
|
17
18
|
.name('universal-db-mcp')
|
|
18
19
|
.description('MCP 数据库万能连接器 - 让 Claude Desktop 直接连接你的数据库')
|
|
19
20
|
.version('0.1.0')
|
|
20
|
-
.requiredOption('--type <type>', '数据库类型 (mysql|postgres|redis|oracle|dm|sqlserver|mssql|mongodb|sqlite)')
|
|
21
|
+
.requiredOption('--type <type>', '数据库类型 (mysql|postgres|redis|oracle|dm|sqlserver|mssql|mongodb|sqlite|kingbase)')
|
|
21
22
|
.option('--host <host>', '数据库主机地址')
|
|
22
23
|
.option('--port <port>', '数据库端口', parseInt)
|
|
23
24
|
.option('--user <user>', '用户名')
|
|
@@ -29,8 +30,8 @@ program
|
|
|
29
30
|
.action(async (options) => {
|
|
30
31
|
try {
|
|
31
32
|
// 验证数据库类型
|
|
32
|
-
if (!['mysql', 'postgres', 'redis', 'oracle', 'dm', 'sqlserver', 'mssql', 'mongodb', 'sqlite'].includes(options.type)) {
|
|
33
|
-
console.error('❌ 错误: 不支持的数据库类型。支持的类型: mysql, postgres, redis, oracle, dm, sqlserver (或 mssql), mongodb, sqlite');
|
|
33
|
+
if (!['mysql', 'postgres', 'redis', 'oracle', 'dm', 'sqlserver', 'mssql', 'mongodb', 'sqlite', 'kingbase'].includes(options.type)) {
|
|
34
|
+
console.error('❌ 错误: 不支持的数据库类型。支持的类型: mysql, postgres, redis, oracle, dm, sqlserver (或 mssql), mongodb, sqlite, kingbase');
|
|
34
35
|
process.exit(1);
|
|
35
36
|
}
|
|
36
37
|
// 规范化 SQL Server 别名
|
|
@@ -148,6 +149,15 @@ program
|
|
|
148
149
|
readonly: !config.allowWrite,
|
|
149
150
|
});
|
|
150
151
|
break;
|
|
152
|
+
case 'kingbase':
|
|
153
|
+
adapter = new KingbaseAdapter({
|
|
154
|
+
host: config.host,
|
|
155
|
+
port: config.port,
|
|
156
|
+
user: config.user,
|
|
157
|
+
password: config.password,
|
|
158
|
+
database: config.database,
|
|
159
|
+
});
|
|
160
|
+
break;
|
|
151
161
|
default:
|
|
152
162
|
throw new Error(`不支持的数据库类型: ${config.type}`);
|
|
153
163
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,kBAAkB,CAAC;KACxB,WAAW,CAAC,2CAA2C,CAAC;KACxD,OAAO,CAAC,OAAO,CAAC;KAChB,cAAc,CAAC,eAAe,EAAE,gFAAgF,CAAC;KACjH,MAAM,CAAC,eAAe,EAAE,SAAS,CAAC;KAClC,MAAM,CAAC,eAAe,EAAE,OAAO,EAAE,QAAQ,CAAC;KAC1C,MAAM,CAAC,eAAe,EAAE,KAAK,CAAC;KAC9B,MAAM,CAAC,uBAAuB,EAAE,IAAI,CAAC;KACrC,MAAM,CAAC,uBAAuB,EAAE,OAAO,CAAC;KACxC,MAAM,CAAC,eAAe,EAAE,gBAAgB,CAAC;KACzC,MAAM,CAAC,4BAA4B,EAAE,0BAA0B,CAAC;KAChE,MAAM,CAAC,sBAAsB,EAAE,oBAAoB,EAAE,KAAK,CAAC;KAC3D,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,IAAI,CAAC;QACH,UAAU;QACV,IAAI,CAAC,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAClI,OAAO,CAAC,KAAK,CAAC,2GAA2G,CAAC,CAAC;YAC3H,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,oBAAoB;QACpB,IAAI,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;QAC1B,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;YACvB,MAAM,GAAG,WAAW,CAAC;QACvB,CAAC;QAED,kCAAkC;QAClC,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;YACxB,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;gBAClB,OAAO,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;gBAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;aAAM,CAAC;YACN,sBAAsB;YACtB,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;gBACnC,OAAO,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;gBAC/C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;QAED,OAAO;QACP,MAAM,MAAM,GAAa;YACvB,IAAI,EAAE,MAA4G;YAClH,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,QAAQ,EAAE,OAAO,CAAC,IAAI;YACtB,UAAU,EAAE,OAAO,CAAC,gBAAgB;SACrC,CAAC;QAEF,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC1B,OAAO,CAAC,KAAK,CAAC,aAAa,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAC1C,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,OAAO,CAAC,KAAK,CAAC,aAAa,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QAChD,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,YAAY,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YACxD,OAAO,CAAC,KAAK,CAAC,YAAY,MAAM,CAAC,QAAQ,IAAI,MAAM,EAAE,CAAC,CAAC;QACzD,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,YAAY,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;QACtE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAElB,QAAQ;QACR,MAAM,MAAM,GAAG,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAE7C,eAAe;QACf,IAAI,OAAkB,CAAC;QAEvB,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;YACpB,KAAK,OAAO;gBACV,OAAO,GAAG,IAAI,YAAY,CAAC;oBACzB,IAAI,EAAE,MAAM,CAAC,IAAK;oBAClB,IAAI,EAAE,MAAM,CAAC,IAAK;oBAClB,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,QAAQ,EAAE,MAAM,CAAC,QAAQ;oBACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;iBAC1B,CAAC,CAAC;gBACH,MAAM;YAER,KAAK,UAAU;gBACb,OAAO,GAAG,IAAI,iBAAiB,CAAC;oBAC9B,IAAI,EAAE,MAAM,CAAC,IAAK;oBAClB,IAAI,EAAE,MAAM,CAAC,IAAK;oBAClB,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,QAAQ,EAAE,MAAM,CAAC,QAAQ;oBACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;iBAC1B,CAAC,CAAC;gBACH,MAAM;YAER,KAAK,OAAO;gBACV,OAAO,GAAG,IAAI,YAAY,CAAC;oBACzB,IAAI,EAAE,MAAM,CAAC,IAAK;oBAClB,IAAI,EAAE,MAAM,CAAC,IAAK;oBAClB,QAAQ,EAAE,MAAM,CAAC,QAAQ;oBACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;iBAC1B,CAAC,CAAC;gBACH,MAAM;YAER,KAAK,QAAQ;gBACX,OAAO,GAAG,IAAI,aAAa,CAAC;oBAC1B,IAAI,EAAE,MAAM,CAAC,IAAK;oBAClB,IAAI,EAAE,MAAM,CAAC,IAAK;oBAClB,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,QAAQ,EAAE,MAAM,CAAC,QAAQ;oBACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;iBAC1B,CAAC,CAAC;gBACH,MAAM;YAER,KAAK,IAAI;gBACP,OAAO,GAAG,IAAI,SAAS,CAAC;oBACtB,IAAI,EAAE,MAAM,CAAC,IAAK;oBAClB,IAAI,EAAE,MAAM,CAAC,IAAK;oBAClB,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,QAAQ,EAAE,MAAM,CAAC,QAAQ;oBACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;iBAC1B,CAAC,CAAC;gBACH,MAAM;YAER,KAAK,WAAW;gBACd,OAAO,GAAG,IAAI,gBAAgB,CAAC;oBAC7B,IAAI,EAAE,MAAM,CAAC,IAAK;oBAClB,IAAI,EAAE,MAAM,CAAC,IAAK;oBAClB,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,QAAQ,EAAE,MAAM,CAAC,QAAQ;oBACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;iBAC1B,CAAC,CAAC;gBACH,MAAM;YAER,KAAK,SAAS;gBACZ,OAAO,GAAG,IAAI,cAAc,CAAC;oBAC3B,IAAI,EAAE,MAAM,CAAC,IAAK;oBAClB,IAAI,EAAE,MAAM,CAAC,IAAK;oBAClB,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,QAAQ,EAAE,MAAM,CAAC,QAAQ;oBACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;oBACzB,UAAU,EAAE,OAAO,CAAC,UAAU;iBAC/B,CAAC,CAAC;gBACH,MAAM;YAER,KAAK,QAAQ;gBACX,OAAO,GAAG,IAAI,aAAa,CAAC;oBAC1B,QAAQ,EAAE,MAAM,CAAC,QAAS;oBAC1B,QAAQ,EAAE,CAAC,MAAM,CAAC,UAAU;iBAC7B,CAAC,CAAC;gBACH,MAAM;YAER,KAAK,UAAU;gBACb,OAAO,GAAG,IAAI,eAAe,CAAC;oBAC5B,IAAI,EAAE,MAAM,CAAC,IAAK;oBAClB,IAAI,EAAE,MAAM,CAAC,IAAK;oBAClB,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,QAAQ,EAAE,MAAM,CAAC,QAAQ;oBACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;iBAC1B,CAAC,CAAC;gBACH,MAAM;YAER;gBACE,MAAM,IAAI,KAAK,CAAC,cAAc,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QACjD,CAAC;QAED,cAAc;QACd,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAC3B,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QAErB,SAAS;QACT,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;YAC9B,OAAO,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;YACzC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;YACpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;YAC/B,OAAO,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;YACzC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;YACpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;IAEL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACjF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
package/dist/types/adapter.d.ts
CHANGED
|
@@ -49,7 +49,7 @@ export interface QueryResult {
|
|
|
49
49
|
*/
|
|
50
50
|
export interface SchemaInfo {
|
|
51
51
|
/** 数据库类型 */
|
|
52
|
-
databaseType: 'mysql' | 'postgres' | 'redis' | 'oracle' | 'dm' | 'sqlserver' | 'mongodb' | 'sqlite';
|
|
52
|
+
databaseType: 'mysql' | 'postgres' | 'redis' | 'oracle' | 'dm' | 'sqlserver' | 'mongodb' | 'sqlite' | 'kingbase';
|
|
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' | 'sqlserver' | 'mongodb' | 'sqlite';
|
|
105
|
+
type: 'mysql' | 'postgres' | 'redis' | 'oracle' | 'dm' | 'sqlserver' | 'mongodb' | 'sqlite' | 'kingbase';
|
|
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,GAAG,WAAW,GAAG,SAAS,GAAG,QAAQ,CAAC;
|
|
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,GAAG,SAAS,GAAG,QAAQ,GAAG,UAAU,CAAC;IACjH,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,GAAG,SAAS,GAAG,QAAQ,GAAG,UAAU,CAAC;IACzG,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qBAAqB;IACrB,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
|
+
"version": "0.7.0",
|
|
4
4
|
"description": "MCP 数据库万能连接器 - 让 Claude Desktop 直接连接你的数据库",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"bin": {
|
|
@@ -30,6 +30,9 @@
|
|
|
30
30
|
"mongodb",
|
|
31
31
|
"mongo",
|
|
32
32
|
"sqlite",
|
|
33
|
+
"kingbase",
|
|
34
|
+
"kingbasees",
|
|
35
|
+
"人大金仓",
|
|
33
36
|
"数据库",
|
|
34
37
|
"AI"
|
|
35
38
|
],
|