kingbase-mcp-server 1.0.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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 NekoTarou
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,351 @@
1
+ # KingBase MCP Server
2
+
3
+ [English](#english) | 中文
4
+
5
+ 直连 [KingBase](https://www.kingbase.com.cn/)(PostgreSQL 兼容)数据库的 MCP Server,让 AI 助手(Claude 等)能够直接查询和管理 KingBase 数据库。
6
+
7
+ ## 快速使用
8
+
9
+ 无需克隆代码,直接在 MCP 客户端中配置即可使用:
10
+
11
+ ```json
12
+ {
13
+ "mcpServers": {
14
+ "kingbase": {
15
+ "command": "npx",
16
+ "args": ["-y", "kingbase-mcp-server"],
17
+ "env": {
18
+ "DB_HOST": "localhost",
19
+ "DB_PORT": "54321",
20
+ "DB_USER": "system",
21
+ "DB_PASSWORD": "your_password",
22
+ "DB_NAME": "kingbase",
23
+ "DB_SCHEMA": "public",
24
+ "ACCESS_MODE": "readonly"
25
+ }
26
+ }
27
+ }
28
+ }
29
+ ```
30
+
31
+ 也可以全局安装后使用:
32
+
33
+ ```bash
34
+ npm install -g kingbase-mcp-server
35
+ kingbase-mcp-server
36
+ ```
37
+
38
+ ## 功能
39
+
40
+ | Tool | 说明 | 类型 |
41
+ |------|------|------|
42
+ | `kb_query` | 执行只读查询 (SELECT/WITH/SHOW) | 只读 |
43
+ | `kb_execute` | 执行 DML (INSERT/UPDATE/DELETE) | 读写 |
44
+ | `kb_execute_ddl` | 执行 DDL (CREATE/ALTER/DROP) | 读写 |
45
+ | `kb_list_schemas` | 列出所有 schema | 只读 |
46
+ | `kb_list_tables` | 列出表和视图 | 只读 |
47
+ | `kb_describe_table` | 查看表结构(列、类型、约束、注释) | 只读 |
48
+ | `kb_list_indexes` | 查看索引信息 | 只读 |
49
+ | `kb_list_constraints` | 查看约束信息 | 只读 |
50
+ | `kb_explain` | 查看执行计划 (EXPLAIN) | 只读 |
51
+ | `kb_table_data` | 预览表数据(带分页和过滤) | 只读 |
52
+ | `kb_table_stats` | 查看表统计信息(大小、行数等) | 只读 |
53
+
54
+ ## 环境变量
55
+
56
+ | 变量 | 说明 | 默认值 |
57
+ |------|------|--------|
58
+ | `DB_HOST` | 数据库主机 | `localhost` |
59
+ | `DB_PORT` | 数据库端口 | `54321` |
60
+ | `DB_USER` | 用户名 | `system` |
61
+ | `DB_PASSWORD` | 密码 | (空) |
62
+ | `DB_NAME` | 数据库名 | `kingbase` |
63
+ | `DB_SCHEMA` | 默认 schema | `public` |
64
+ | `TRANSPORT` | 传输模式:`stdio` 或 `http` | `stdio` |
65
+ | `MCP_PORT` | HTTP 模式监听端口 | `3000` |
66
+ | `MCP_HOST` | HTTP 模式监听地址 | `0.0.0.0` |
67
+ | `ACCESS_MODE` | 权限模式(见下方说明) | `readonly` |
68
+
69
+ ## 权限模式
70
+
71
+ 通过 `ACCESS_MODE` 环境变量控制数据库操作权限,分为 4 个递增级别:
72
+
73
+ | 级别 | 值 | 允许的操作 |
74
+ |------|------|-----------|
75
+ | 只读 | `readonly`(默认) | SELECT 查询、查看 schema/表结构/索引/约束/统计/执行计划 |
76
+ | 允许修改 | `readwrite` | 只读 + INSERT / UPDATE |
77
+ | 允许删除 | `full` | 读写 + DELETE |
78
+ | 管理员 | `admin` | 完全权限 + DDL(CREATE / ALTER / DROP / TRUNCATE) |
79
+
80
+ **默认为 `readonly`(只读模式)**,防止误操作。根据实际需要调整。
81
+
82
+ ### 二次确认机制
83
+
84
+ `kb_execute`(DML)和 `kb_execute_ddl`(DDL)工具内置二次确认:
85
+
86
+ 1. **首次调用**(不传 `confirmed` 或 `confirmed: false`)→ 不执行 SQL,返回操作预览和确认提示
87
+ 2. **确认调用**(`confirmed: true`)→ 真正执行 SQL
88
+
89
+ 这确保 LLM 在执行写操作前必须向用户确认,避免意外修改数据。
90
+
91
+ ### 配置示例
92
+
93
+ ```bash
94
+ # 只读模式(默认,推荐用于日常查询)
95
+ ACCESS_MODE=readonly
96
+
97
+ # 允许增改(适用于数据维护)
98
+ ACCESS_MODE=readwrite
99
+
100
+ # 允许删除(适用于数据清理)
101
+ ACCESS_MODE=full
102
+
103
+ # 管理员模式(适用于 DDL 操作,如建表/改表)
104
+ ACCESS_MODE=admin
105
+ ```
106
+
107
+ ## 传输模式
108
+
109
+ ### stdio 模式(默认)
110
+
111
+ 适用于本地使用,客户端直接启动 MCP Server 进程。
112
+
113
+ ### HTTP 模式
114
+
115
+ 适用于远程部署,团队成员通过网络连接。使用 MCP Streamable HTTP 传输协议。
116
+
117
+ 启动 HTTP 模式:
118
+
119
+ ```bash
120
+ TRANSPORT='http' MCP_PORT='3000' DB_HOST='你的数据库地址' DB_PASSWORD='你的密码' node dist/index.js
121
+ # 或
122
+ npm run start:http
123
+ ```
124
+
125
+ 验证:
126
+
127
+ ```bash
128
+ curl -X POST http://localhost:3000/mcp \
129
+ -H "Content-Type: application/json" \
130
+ -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}'
131
+ ```
132
+
133
+ ## 在 Claude Code 中使用
134
+
135
+ ### stdio 模式(推荐)
136
+
137
+ 编辑 `~/.claude/settings.json`,添加:
138
+
139
+ ```json
140
+ {
141
+ "mcpServers": {
142
+ "kingbase": {
143
+ "command": "npx",
144
+ "args": ["-y", "kingbase-mcp-server"],
145
+ "env": {
146
+ "DB_HOST": "你的数据库地址",
147
+ "DB_PORT": "54321",
148
+ "DB_USER": "system",
149
+ "DB_PASSWORD": "你的密码",
150
+ "DB_NAME": "数据库名",
151
+ "DB_SCHEMA": "public",
152
+ "ACCESS_MODE": "readonly"
153
+ }
154
+ }
155
+ }
156
+ }
157
+ ```
158
+
159
+ ### HTTP 模式(远程连接)
160
+
161
+ 在服务器上启动 HTTP 模式后,客户端配置:
162
+
163
+ ```json
164
+ {
165
+ "mcpServers": {
166
+ "kingbase": {
167
+ "url": "http://你的服务器地址:3000/mcp"
168
+ }
169
+ }
170
+ }
171
+ ```
172
+
173
+ ## 构建
174
+
175
+ ```bash
176
+ npm install
177
+ npm run build
178
+ ```
179
+
180
+ ## 配置文件
181
+
182
+ 项目支持 `.env` 配置文件,**避免在 shell 中直接传入含特殊字符的密码导致解析失败**。
183
+
184
+ ```bash
185
+ # 复制模板
186
+ cp .env.example .env
187
+
188
+ # 编辑配置(密码中的特殊字符无需转义)
189
+ vi .env
190
+ ```
191
+
192
+ `.env` 文件示例:
193
+
194
+ ```
195
+ DB_HOST=192.168.1.100
196
+ DB_PORT=54321
197
+ DB_USER=system
198
+ DB_PASSWORD=P@ss(w0rd)!#$
199
+ DB_NAME=mydb
200
+ DB_SCHEMA=public
201
+ TRANSPORT=http
202
+ MCP_PORT=3000
203
+ ACCESS_MODE=readonly
204
+ ```
205
+
206
+ 配置好后直接启动即可,无需在命令行传递环境变量:
207
+
208
+ ```bash
209
+ node dist/index.js
210
+ # 或
211
+ npm start
212
+ ```
213
+
214
+ > `.env` 已在 `.gitignore` 中,不会被提交到仓库。命令行传入的环境变量优先级高于 `.env` 文件。
215
+
216
+ ## 服务器部署(HTTP 模式)
217
+
218
+ ### 1. 安装
219
+
220
+ ```bash
221
+ # 方式一:npm 全局安装(推荐)
222
+ npm install -g kingbase-mcp-server
223
+
224
+ # 方式二:从源码安装
225
+ git clone https://github.com/NekoTarou/kingbase-mcp-server.git
226
+ cd kingbase-mcp-server
227
+ npm install
228
+ npm run build
229
+ ```
230
+
231
+ ### 2. 直接启动
232
+
233
+ ```bash
234
+ TRANSPORT='http' \
235
+ MCP_PORT='3000' \
236
+ ACCESS_MODE='readonly' \
237
+ DB_HOST='192.168.1.100' \
238
+ DB_PORT='54321' \
239
+ DB_USER='system' \
240
+ DB_PASSWORD='your_password' \
241
+ DB_NAME='mydb' \
242
+ node dist/index.js
243
+ ```
244
+
245
+ ### 3. 使用 systemd 管理(推荐)
246
+
247
+ 创建环境变量文件 `/etc/kingbase-mcp-server.env`:
248
+
249
+ ```
250
+ TRANSPORT=http
251
+ MCP_PORT=3000
252
+ MCP_HOST=0.0.0.0
253
+ ACCESS_MODE=readonly
254
+ DB_HOST=192.168.1.100
255
+ DB_PORT=54321
256
+ DB_USER=system
257
+ DB_PASSWORD=your_password
258
+ DB_NAME=mydb
259
+ DB_SCHEMA=public
260
+ ```
261
+
262
+ 创建服务文件 `/etc/systemd/system/kingbase-mcp.service`:
263
+
264
+ ```ini
265
+ [Unit]
266
+ Description=KingBase MCP Server
267
+ After=network.target
268
+
269
+ [Service]
270
+ Type=simple
271
+ EnvironmentFile=/etc/kingbase-mcp-server.env
272
+ WorkingDirectory=/opt/kingbase-mcp-server
273
+ ExecStart=/usr/bin/node dist/index.js
274
+ Restart=on-failure
275
+ RestartSec=5
276
+
277
+ [Install]
278
+ WantedBy=multi-user.target
279
+ ```
280
+
281
+ 启动服务:
282
+
283
+ ```bash
284
+ sudo systemctl daemon-reload
285
+ sudo systemctl enable kingbase-mcp
286
+ sudo systemctl start kingbase-mcp
287
+ sudo systemctl status kingbase-mcp # 查看状态
288
+ sudo journalctl -u kingbase-mcp -f # 查看日志
289
+ ```
290
+
291
+ ### 4. 验证
292
+
293
+ ```bash
294
+ curl -X POST http://localhost:3000/mcp \
295
+ -H "Content-Type: application/json" \
296
+ -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}'
297
+ ```
298
+
299
+ 成功会返回 JSON 响应,response header 中包含 `mcp-session-id`。
300
+
301
+ ### 5. 安全提示
302
+
303
+ 当前未内置认证机制。如果服务暴露在公网,建议:
304
+
305
+ - 通过防火墙限制访问来源 IP
306
+ - 在前面加 nginx 反向代理 + 基础认证
307
+ - 后续可按需添加 OAuth 认证
308
+
309
+ ---
310
+
311
+ <a id="english"></a>
312
+
313
+ ## English
314
+
315
+ MCP (Model Context Protocol) server for [KingBase](https://www.kingbase.com.cn/) — a PostgreSQL-compatible enterprise database widely used in Chinese government and enterprise environments.
316
+
317
+ ### Quick Start
318
+
319
+ ```json
320
+ {
321
+ "mcpServers": {
322
+ "kingbase": {
323
+ "command": "npx",
324
+ "args": ["-y", "kingbase-mcp-server"],
325
+ "env": {
326
+ "DB_HOST": "localhost",
327
+ "DB_PORT": "54321",
328
+ "DB_USER": "system",
329
+ "DB_PASSWORD": "your_password",
330
+ "DB_NAME": "kingbase",
331
+ "ACCESS_MODE": "readonly"
332
+ }
333
+ }
334
+ }
335
+ }
336
+ ```
337
+
338
+ ### Features
339
+
340
+ - 11 database tools: query, DML, DDL, schema inspection, statistics
341
+ - Two transport modes: stdio (local) and Streamable HTTP (remote)
342
+ - Fine-grained access control: `readonly` / `readwrite` / `full` / `admin`
343
+ - Two-phase confirmation for write operations
344
+ - Auto schema qualification for table names
345
+ - Parameterized queries for safe value substitution
346
+
347
+ See above sections for detailed documentation (in Chinese).
348
+
349
+ ## License
350
+
351
+ [MIT](./LICENSE)