easy-sqlite-mcp 1.0.5 → 1.1.2
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/MANUAL.md +121 -0
- package/README.md +108 -68
- package/README.zh-TW.md +237 -0
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -1
- package/dist/services/sqlite-manager.d.ts.map +1 -1
- package/dist/tools/sqlite.d.ts.map +1 -1
- package/dist/tools/sqlite.js +10 -6
- package/dist/tools/sqlite.js.map +1 -1
- package/package.json +10 -7
package/MANUAL.md
ADDED
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
# easy-sqlite-mcp Manual
|
|
2
|
+
|
|
3
|
+
`easy-sqlite-mcp` 是一個用來操作 SQLite 的 MCP server,提供開啟資料庫、查詢、寫入與 schema 檢查工具。
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
適合用在:
|
|
8
|
+
- 單機 SQLite 檔案操作
|
|
9
|
+
- 讀取資料
|
|
10
|
+
- 新增、更新、刪除資料
|
|
11
|
+
- 建表與索引管理
|
|
12
|
+
|
|
13
|
+
不適合用在:
|
|
14
|
+
- 未先開啟資料庫就直接操作
|
|
15
|
+
- 同時維持多個資料庫連線
|
|
16
|
+
- 把未驗證字串直接拼接 SQL
|
|
17
|
+
|
|
18
|
+
## When to Consult This Manual
|
|
19
|
+
|
|
20
|
+
如果你遇到以下情況,先看這份手冊:
|
|
21
|
+
- 不確定 `sqlite_open`、`sqlite_query`、`sqlite_execute` 要怎麼用
|
|
22
|
+
- 查詢或寫入時回傳錯誤
|
|
23
|
+
- 不確定 `?` 或 named parameters 要怎麼綁定
|
|
24
|
+
- 不確定目前是不是已經開啟資料庫
|
|
25
|
+
- 不確定應該先查 schema 還是直接執行
|
|
26
|
+
|
|
27
|
+
## Modes / Lifecycle
|
|
28
|
+
|
|
29
|
+
SQLite 共有兩種啟動模式:
|
|
30
|
+
|
|
31
|
+
- `Manual`: 先呼叫 `sqlite_open(path)`,使用完後再呼叫 `sqlite_close`
|
|
32
|
+
- `Fixed`: 啟動時已透過 `SQLITE_PATH` 連到指定檔案
|
|
33
|
+
|
|
34
|
+
重要限制:
|
|
35
|
+
- 同一時間只能開啟一個資料庫
|
|
36
|
+
- 使用前要確認 DB 已開啟
|
|
37
|
+
- 使用完建議關閉
|
|
38
|
+
|
|
39
|
+
## Tools
|
|
40
|
+
|
|
41
|
+
- `sqlite_open`: 開啟資料庫
|
|
42
|
+
- `sqlite_close`: 關閉資料庫
|
|
43
|
+
- `sqlite_status`: 查看目前連線狀態
|
|
44
|
+
- `sqlite_query`: 讀取資料
|
|
45
|
+
- `sqlite_execute`: 執行寫入或變更 SQL
|
|
46
|
+
- `sqlite_list_tables`: 列出資料表
|
|
47
|
+
- `sqlite_list_views`: 列出檢視表
|
|
48
|
+
- `sqlite_describe_table`: 查看欄位資訊
|
|
49
|
+
- `sqlite_describe_index`: 查看索引
|
|
50
|
+
- `sqlite_list_triggers`: 查看 trigger
|
|
51
|
+
- `sqlite_get_current_privileges`: 查看目前權限
|
|
52
|
+
|
|
53
|
+
## Execute Usage
|
|
54
|
+
|
|
55
|
+
`sqlite_execute` 適合單一 SQL 指令,例如:
|
|
56
|
+
- `INSERT`
|
|
57
|
+
- `UPDATE`
|
|
58
|
+
- `DELETE`
|
|
59
|
+
- `CREATE TABLE`
|
|
60
|
+
- `CREATE INDEX`
|
|
61
|
+
|
|
62
|
+
使用前請先確認:
|
|
63
|
+
- DB 已開啟
|
|
64
|
+
- 目標資料表存在
|
|
65
|
+
- SQL 是單一語句
|
|
66
|
+
|
|
67
|
+
參數寫法以 `better-sqlite3` 的 binding 方式為準:
|
|
68
|
+
- 匿名佔位符可使用 `?`
|
|
69
|
+
- 命名參數可使用 `@name`、`:name`、`$name`
|
|
70
|
+
- 你目前的工具介面也支援用 `params` 物件傳遞命名參數
|
|
71
|
+
- `params` 物件的 key 不要包含 SQL 佔位符前綴;例如 SQL 使用 `:id` 時,請傳 `{ "id": 1 }`
|
|
72
|
+
|
|
73
|
+
建議慣例:
|
|
74
|
+
- 需要簡單位置綁定時,用 `?`
|
|
75
|
+
- 需要更清楚可讀性時,用命名參數
|
|
76
|
+
|
|
77
|
+
## SQL Algebra / Composition Rules
|
|
78
|
+
|
|
79
|
+
SQLite 的查詢組裝與一般 SQL 類似:
|
|
80
|
+
|
|
81
|
+
1. 先選資料來源:`FROM`
|
|
82
|
+
2. 再加條件:`WHERE`
|
|
83
|
+
3. 需要聚合時使用 `GROUP BY`
|
|
84
|
+
4. 聚合後條件放在 `HAVING`
|
|
85
|
+
5. 排序使用 `ORDER BY`
|
|
86
|
+
6. 最後限制筆數:`LIMIT`
|
|
87
|
+
|
|
88
|
+
SQLite 常見注意事項:
|
|
89
|
+
- 型別彈性較高,但不要依賴隱式轉型
|
|
90
|
+
- 日期時間常以字串或數字儲存,格式要統一
|
|
91
|
+
- `rowid` 可能有用,但不應過度依賴
|
|
92
|
+
|
|
93
|
+
## Safety Rules
|
|
94
|
+
|
|
95
|
+
- 同一時間只允許一個 DB 連線
|
|
96
|
+
- 寫入前先確認目前打開的是正確檔案
|
|
97
|
+
- 未開啟 DB 時不要執行查詢
|
|
98
|
+
- 不要把未驗證字串直接拼進 SQL
|
|
99
|
+
|
|
100
|
+
## Examples
|
|
101
|
+
|
|
102
|
+
- 開啟資料庫:
|
|
103
|
+
- `sqlite_open('/path/to/app.db')`
|
|
104
|
+
- 查詢資料:
|
|
105
|
+
- `SELECT * FROM users WHERE id = ?`
|
|
106
|
+
- 建表:
|
|
107
|
+
- `CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT)`
|
|
108
|
+
- 新增資料:
|
|
109
|
+
- `INSERT INTO users (name) VALUES (?)`
|
|
110
|
+
- 使用命名參數查詢:
|
|
111
|
+
- `SELECT * FROM users WHERE id = :id`
|
|
112
|
+
- `params`: `{ "id": 1 }`
|
|
113
|
+
- 關閉資料庫:
|
|
114
|
+
- `sqlite_close()`
|
|
115
|
+
|
|
116
|
+
## Troubleshooting
|
|
117
|
+
|
|
118
|
+
- 查詢失敗時,先確認是否已 `sqlite_open`
|
|
119
|
+
- 結果異常時,確認目前連的是不是正確檔案
|
|
120
|
+
- 欄位不存在時,先用 `sqlite_describe_table`
|
|
121
|
+
- 寫入沒生效時,確認是否在正確的資料庫檔案上操作
|
package/README.md
CHANGED
|
@@ -1,7 +1,66 @@
|
|
|
1
|
-
#
|
|
2
|
-
|
|
3
|
-
A [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) server implemented in Node.js and TypeScript, designed to enable LLMs to interact directly with SQLite databases.
|
|
4
|
-
|
|
1
|
+
# easy-sqlite-mcp
|
|
2
|
+
|
|
3
|
+
A [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) server implemented in Node.js and TypeScript, designed to enable LLMs to interact directly with SQLite databases.
|
|
4
|
+
|
|
5
|
+
This project uses Node.js, TypeScript, the official MCP SDK, and `better-sqlite3`. It runs over stdio, so it can be used directly by MCP clients such as Claude Desktop, Codex, and OpenCode.
|
|
6
|
+
|
|
7
|
+
## Features
|
|
8
|
+
|
|
9
|
+
- SQLite connection management for manual and fixed startup modes
|
|
10
|
+
- Read-only query tool for data retrieval
|
|
11
|
+
- Execute tool for data modification and schema statements
|
|
12
|
+
- Schema discovery tools for tables, views, indexes, and triggers
|
|
13
|
+
- Lightweight, synchronous SQLite access powered by `better-sqlite3`
|
|
14
|
+
|
|
15
|
+
`better-sqlite3` in this project requires Node.js 20 or newer.
|
|
16
|
+
|
|
17
|
+
## Requirements
|
|
18
|
+
|
|
19
|
+
- Node.js 20 or newer
|
|
20
|
+
- npm
|
|
21
|
+
- A reachable SQLite database file
|
|
22
|
+
|
|
23
|
+
## Installation
|
|
24
|
+
|
|
25
|
+
Run the server directly with `npx`:
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
npx -y easy-sqlite-mcp
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
For local development after cloning the repository:
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
cd easy-sqlite-mcp
|
|
35
|
+
npm install
|
|
36
|
+
npm run build
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Configuration
|
|
40
|
+
|
|
41
|
+
Configure the server with environment variables in your MCP client configuration or shell environment.
|
|
42
|
+
|
|
43
|
+
| Variable | Required | Default | Description |
|
|
44
|
+
| --- | --- | --- | --- |
|
|
45
|
+
| `SQLITE_PATH` | No | - | Absolute or relative path to a SQLite database file. When set, the server starts in fixed mode |
|
|
46
|
+
|
|
47
|
+
Example shell configuration:
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
SQLITE_PATH=/absolute/path/to/database.sqlite npx -y easy-sqlite-mcp
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
In PowerShell:
|
|
54
|
+
|
|
55
|
+
```powershell
|
|
56
|
+
$env:SQLITE_PATH = "C:\data\database.sqlite"
|
|
57
|
+
npx -y easy-sqlite-mcp
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
The server communicates over stdio and is normally launched by an MCP client rather than run manually.
|
|
61
|
+
|
|
62
|
+
If you are unsure how a tool should be used, or an operation fails, call `sqlite_manual` first. It returns the built-in manual with safe usage rules, placeholder guidance, and lifecycle notes.
|
|
63
|
+
|
|
5
64
|
## Modes
|
|
6
65
|
|
|
7
66
|
Easy SQLite MCP supports two startup modes. The server description is generated at startup so MCP clients and agents can clearly understand which mode is active.
|
|
@@ -54,43 +113,6 @@ Available tools in Fixed mode:
|
|
|
54
113
|
- `sqlite_list_tables`
|
|
55
114
|
- `sqlite_describe_table`
|
|
56
115
|
|
|
57
|
-
Example:
|
|
58
|
-
|
|
59
|
-
```bash
|
|
60
|
-
SQLITE_PATH=/data/app.sqlite npx easy-sqlite-mcp
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
## Features
|
|
64
|
-
|
|
65
|
-
This server provides SQLite tools covering all requirements from connection management to data querying:
|
|
66
|
-
|
|
67
|
-
1. **Connection Management**:
|
|
68
|
-
* `sqlite_open`: Open a specific SQLite database file path. Manual mode only.
|
|
69
|
-
* `sqlite_close`: Close the current database connection. Manual mode only.
|
|
70
|
-
* `sqlite_status`: Check connection status, file path, and database summary.
|
|
71
|
-
2. **Data Operations**:
|
|
72
|
-
* `sqlite_query`: Execute read-only `SELECT` queries and return results in a structured format.
|
|
73
|
-
* `sqlite_execute`: Execute write or modification operations (e.g., `INSERT`, `UPDATE`, `DELETE`, `CREATE`, `DROP`).
|
|
74
|
-
3. **Schema Discovery**:
|
|
75
|
-
* `sqlite_list_tables`: List all user-defined tables in the database.
|
|
76
|
-
* `sqlite_describe_table`: Get column information, types, and total row count for a specific table.
|
|
77
|
-
|
|
78
|
-
## Installation and Execution
|
|
79
|
-
|
|
80
|
-
### 1. Run via npx
|
|
81
|
-
If the project is published on npm, you can start it directly using `npx` without prior installation:
|
|
82
|
-
```bash
|
|
83
|
-
npx easy-sqlite-mcp
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
### 2. Local Development and Build
|
|
87
|
-
To develop locally or build from source, follow these steps:
|
|
88
|
-
```bash
|
|
89
|
-
npm install
|
|
90
|
-
npm run build
|
|
91
|
-
npm run dev # Watch for changes and run in development mode
|
|
92
|
-
```
|
|
93
|
-
|
|
94
116
|
## Claude Desktop Example
|
|
95
117
|
|
|
96
118
|
Manual mode:
|
|
@@ -100,10 +122,7 @@ Manual mode:
|
|
|
100
122
|
"mcpServers": {
|
|
101
123
|
"easy-sqlite-mcp": {
|
|
102
124
|
"command": "npx",
|
|
103
|
-
"args": [
|
|
104
|
-
"-y",
|
|
105
|
-
"easy-sqlite-mcp"
|
|
106
|
-
]
|
|
125
|
+
"args": ["-y", "easy-sqlite-mcp"]
|
|
107
126
|
}
|
|
108
127
|
}
|
|
109
128
|
}
|
|
@@ -116,10 +135,7 @@ Fixed mode example:
|
|
|
116
135
|
"mcpServers": {
|
|
117
136
|
"easy-sqlite-mcp": {
|
|
118
137
|
"command": "npx",
|
|
119
|
-
"args": [
|
|
120
|
-
"-y",
|
|
121
|
-
"easy-sqlite-mcp"
|
|
122
|
-
],
|
|
138
|
+
"args": ["-y", "easy-sqlite-mcp"],
|
|
123
139
|
"env": {
|
|
124
140
|
"SQLITE_PATH": "/absolute/path/to/database.sqlite"
|
|
125
141
|
}
|
|
@@ -128,11 +144,13 @@ Fixed mode example:
|
|
|
128
144
|
}
|
|
129
145
|
```
|
|
130
146
|
|
|
147
|
+
Restart Claude Desktop after updating the configuration.
|
|
148
|
+
|
|
131
149
|
## Codex config.toml Example
|
|
132
150
|
|
|
133
151
|
Manual mode:
|
|
134
152
|
|
|
135
|
-
```
|
|
153
|
+
```toml
|
|
136
154
|
[mcp_servers.easy-sqlite-mcp]
|
|
137
155
|
args = ["-y", "easy-sqlite-mcp"]
|
|
138
156
|
command = "npx"
|
|
@@ -141,7 +159,7 @@ enabled = true
|
|
|
141
159
|
|
|
142
160
|
Fixed mode example:
|
|
143
161
|
|
|
144
|
-
```
|
|
162
|
+
```toml
|
|
145
163
|
[mcp_servers.easy-sqlite-mcp]
|
|
146
164
|
args = ["-y", "easy-sqlite-mcp"]
|
|
147
165
|
command = "npx"
|
|
@@ -155,22 +173,22 @@ SQLITE_PATH = "/absolute/path/to/database.sqlite"
|
|
|
155
173
|
|
|
156
174
|
Manual mode:
|
|
157
175
|
|
|
158
|
-
```
|
|
176
|
+
```jsonc
|
|
159
177
|
{
|
|
160
178
|
"$schema": "https://opencode.ai/config.json",
|
|
161
179
|
"mcp": {
|
|
162
180
|
"easy-sqlite-mcp": {
|
|
163
181
|
"type": "local",
|
|
164
182
|
"command": ["npx", "-y", "easy-sqlite-mcp"],
|
|
165
|
-
"enabled": true
|
|
166
|
-
}
|
|
167
|
-
}
|
|
183
|
+
"enabled": true
|
|
184
|
+
}
|
|
185
|
+
}
|
|
168
186
|
}
|
|
169
187
|
```
|
|
170
188
|
|
|
171
189
|
Fixed mode example:
|
|
172
190
|
|
|
173
|
-
```
|
|
191
|
+
```jsonc
|
|
174
192
|
{
|
|
175
193
|
"$schema": "https://opencode.ai/config.json",
|
|
176
194
|
"mcp": {
|
|
@@ -180,18 +198,40 @@ Fixed mode example:
|
|
|
180
198
|
"enabled": true,
|
|
181
199
|
"environment": {
|
|
182
200
|
"SQLITE_PATH": "/absolute/path/to/database.sqlite"
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
}
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
}
|
|
186
204
|
}
|
|
187
205
|
```
|
|
188
206
|
|
|
189
|
-
##
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
207
|
+
## Available Tools
|
|
208
|
+
|
|
209
|
+
| Tool | Description |
|
|
210
|
+
| --- | --- |
|
|
211
|
+
| `sqlite_manual` | Return the built-in manual. Use this first when you are unsure how to use SQLite tools or need help diagnosing an operation error |
|
|
212
|
+
| `sqlite_open` | Open a SQLite database file. Manual mode only |
|
|
213
|
+
| `sqlite_close` | Close the current database connection. Manual mode only |
|
|
214
|
+
| `sqlite_status` | Return connection status and current database summary |
|
|
215
|
+
| `sqlite_query` | Execute a read-only `SELECT` query |
|
|
216
|
+
| `sqlite_execute` | Execute a write or modification SQL statement |
|
|
217
|
+
| `sqlite_list_tables` | List all user tables in the database |
|
|
218
|
+
| `sqlite_describe_table` | Describe the schema of a table |
|
|
219
|
+
|
|
220
|
+
## Manual Mode Notes
|
|
221
|
+
|
|
222
|
+
- Use `sqlite_open(path)` before calling query or execute tools.
|
|
223
|
+
- Use `sqlite_close` when finished.
|
|
224
|
+
- Only one database file can be open at a time.
|
|
225
|
+
- Use `sqlite_manual` when you need lifecycle or placeholder guidance.
|
|
226
|
+
|
|
227
|
+
## Development
|
|
228
|
+
|
|
229
|
+
```bash
|
|
230
|
+
npm run build
|
|
231
|
+
npm run dev
|
|
232
|
+
npm test
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
## License
|
|
236
|
+
|
|
237
|
+
MIT. See [LICENSE.md](LICENSE.md).
|
package/README.zh-TW.md
ADDED
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
# easy-sqlite-mcp
|
|
2
|
+
|
|
3
|
+
一個以 Node.js 與 TypeScript 實作的 [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) server,讓 LLM 可以直接操作 SQLite 資料庫。
|
|
4
|
+
|
|
5
|
+
本專案使用 Node.js、TypeScript、官方 MCP SDK,以及 `better-sqlite3`。它透過 stdio 執行,因此可以直接被 Claude Desktop、Codex、OpenCode 等 MCP client 使用。
|
|
6
|
+
|
|
7
|
+
## 功能
|
|
8
|
+
|
|
9
|
+
- 支援 manual 與 fixed 兩種啟動模式
|
|
10
|
+
- 用於資料讀取的唯讀查詢工具
|
|
11
|
+
- 用於資料修改與 schema statement 的執行工具
|
|
12
|
+
- tables、views、indexes、triggers 的 schema discovery tools
|
|
13
|
+
- 使用同步式 `better-sqlite3` 存取 SQLite
|
|
14
|
+
|
|
15
|
+
本專案使用的 `better-sqlite3` 需要 Node.js 20 或更新版本。
|
|
16
|
+
|
|
17
|
+
## 需求
|
|
18
|
+
|
|
19
|
+
- Node.js 20 或更新版本
|
|
20
|
+
- npm
|
|
21
|
+
- 可連線的 SQLite database file
|
|
22
|
+
|
|
23
|
+
## 安裝
|
|
24
|
+
|
|
25
|
+
直接使用 `npx` 啟動:
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
npx -y easy-sqlite-mcp
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
本機開發:
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
cd easy-sqlite-mcp
|
|
35
|
+
npm install
|
|
36
|
+
npm run build
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## 設定
|
|
40
|
+
|
|
41
|
+
你可以透過 MCP client configuration 或 shell environment variables 設定。
|
|
42
|
+
|
|
43
|
+
| 變數 | 必填 | 預設值 | 說明 |
|
|
44
|
+
| --- | --- | --- | --- |
|
|
45
|
+
| `SQLITE_PATH` | 否 | - | SQLite database file 的路徑。設定後會進入 fixed mode |
|
|
46
|
+
|
|
47
|
+
Shell 設定範例:
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
SQLITE_PATH=/absolute/path/to/database.sqlite npx -y easy-sqlite-mcp
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
PowerShell 設定範例:
|
|
54
|
+
|
|
55
|
+
```powershell
|
|
56
|
+
$env:SQLITE_PATH = "C:\\data\\database.sqlite"
|
|
57
|
+
npx -y easy-sqlite-mcp
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
此 server 透過 stdio 通訊,通常會由 MCP client 啟動,而不是手動直接執行。
|
|
61
|
+
|
|
62
|
+
如果你不確定某個工具該怎麼用,或操作失敗,請先呼叫 `sqlite_manual`。它會回傳內建手冊,包含安全使用規則、placeholder 指引,以及生命週期說明。
|
|
63
|
+
|
|
64
|
+
## 模式
|
|
65
|
+
|
|
66
|
+
Easy SQLite MCP 支援兩種啟動模式,server description 會在啟動時產生,讓 MCP client 與 agent 清楚知道目前模式。
|
|
67
|
+
|
|
68
|
+
### Manual Mode
|
|
69
|
+
|
|
70
|
+
未設定 `SQLITE_PATH` 時,會使用 manual mode。
|
|
71
|
+
|
|
72
|
+
在這個模式下,agent 必須手動開啟與關閉資料庫:
|
|
73
|
+
|
|
74
|
+
1. 先呼叫 `sqlite_open(path)`。
|
|
75
|
+
2. 使用 query、execute 與 schema discovery tools。
|
|
76
|
+
3. 完成後呼叫 `sqlite_close`。
|
|
77
|
+
|
|
78
|
+
同一時間只能開啟一個 SQLite database file。若再開啟其他檔案,會先關閉前一個連線。
|
|
79
|
+
|
|
80
|
+
Server description:
|
|
81
|
+
|
|
82
|
+
```text
|
|
83
|
+
Manual: This is a SQLite tool. Before using it, call sqlite_open(path) to open a database file. After use, call sqlite_close to close it. Only one database file can be open at a time.
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
Manual mode 可用工具:
|
|
87
|
+
|
|
88
|
+
- `sqlite_open`
|
|
89
|
+
- `sqlite_close`
|
|
90
|
+
- `sqlite_status`
|
|
91
|
+
- `sqlite_query`
|
|
92
|
+
- `sqlite_execute`
|
|
93
|
+
- `sqlite_list_tables`
|
|
94
|
+
- `sqlite_describe_table`
|
|
95
|
+
|
|
96
|
+
### Fixed Mode
|
|
97
|
+
|
|
98
|
+
設定 `SQLITE_PATH` 時,會使用 fixed mode。
|
|
99
|
+
|
|
100
|
+
在這個模式下,server 會在啟動時自動開啟指定的 SQLite database。agent 不需要再呼叫 `sqlite_open`,也不能切換連線。
|
|
101
|
+
|
|
102
|
+
Server description:
|
|
103
|
+
|
|
104
|
+
```text
|
|
105
|
+
Fixed: This is a SQLite tool connected to Path:<SQLITE_PATH>
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
Fixed mode 可用工具:
|
|
109
|
+
|
|
110
|
+
- `sqlite_status`
|
|
111
|
+
- `sqlite_query`
|
|
112
|
+
- `sqlite_execute`
|
|
113
|
+
- `sqlite_list_tables`
|
|
114
|
+
- `sqlite_describe_table`
|
|
115
|
+
|
|
116
|
+
## Claude Desktop 範例
|
|
117
|
+
|
|
118
|
+
Manual mode:
|
|
119
|
+
|
|
120
|
+
```json
|
|
121
|
+
{
|
|
122
|
+
"mcpServers": {
|
|
123
|
+
"easy-sqlite-mcp": {
|
|
124
|
+
"command": "npx",
|
|
125
|
+
"args": ["-y", "easy-sqlite-mcp"]
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
Fixed mode:
|
|
132
|
+
|
|
133
|
+
```json
|
|
134
|
+
{
|
|
135
|
+
"mcpServers": {
|
|
136
|
+
"easy-sqlite-mcp": {
|
|
137
|
+
"command": "npx",
|
|
138
|
+
"args": ["-y", "easy-sqlite-mcp"],
|
|
139
|
+
"env": {
|
|
140
|
+
"SQLITE_PATH": "/absolute/path/to/database.sqlite"
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
更新設定後,請重新啟動 Claude Desktop。
|
|
148
|
+
|
|
149
|
+
## Codex config.toml 範例
|
|
150
|
+
|
|
151
|
+
Manual mode:
|
|
152
|
+
|
|
153
|
+
```toml
|
|
154
|
+
[mcp_servers.easy-sqlite-mcp]
|
|
155
|
+
args = ["-y", "easy-sqlite-mcp"]
|
|
156
|
+
command = "npx"
|
|
157
|
+
enabled = true
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
Fixed mode:
|
|
161
|
+
|
|
162
|
+
```toml
|
|
163
|
+
[mcp_servers.easy-sqlite-mcp]
|
|
164
|
+
args = ["-y", "easy-sqlite-mcp"]
|
|
165
|
+
command = "npx"
|
|
166
|
+
enabled = true
|
|
167
|
+
|
|
168
|
+
[mcp_servers.easy-sqlite-mcp.env]
|
|
169
|
+
SQLITE_PATH = "/absolute/path/to/database.sqlite"
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
## OpenCode opencode.jsonc 範例
|
|
173
|
+
|
|
174
|
+
Manual mode:
|
|
175
|
+
|
|
176
|
+
```jsonc
|
|
177
|
+
{
|
|
178
|
+
"$schema": "https://opencode.ai/config.json",
|
|
179
|
+
"mcp": {
|
|
180
|
+
"easy-sqlite-mcp": {
|
|
181
|
+
"type": "local",
|
|
182
|
+
"command": ["npx", "-y", "easy-sqlite-mcp"],
|
|
183
|
+
"enabled": true
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
Fixed mode:
|
|
190
|
+
|
|
191
|
+
```jsonc
|
|
192
|
+
{
|
|
193
|
+
"$schema": "https://opencode.ai/config.json",
|
|
194
|
+
"mcp": {
|
|
195
|
+
"easy-sqlite-mcp": {
|
|
196
|
+
"type": "local",
|
|
197
|
+
"command": ["npx", "-y", "easy-sqlite-mcp"],
|
|
198
|
+
"enabled": true,
|
|
199
|
+
"environment": {
|
|
200
|
+
"SQLITE_PATH": "/absolute/path/to/database.sqlite"
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
## 可用工具
|
|
208
|
+
|
|
209
|
+
| 工具 | 說明 |
|
|
210
|
+
| --- | --- |
|
|
211
|
+
| `sqlite_manual` | 回傳內建手冊。當你不確定如何使用 SQLite 工具,或需要排查操作錯誤時,請先查這個工具 |
|
|
212
|
+
| `sqlite_open` | 開啟 SQLite database file,僅 manual mode 可用 |
|
|
213
|
+
| `sqlite_close` | 關閉目前資料庫連線,僅 manual mode 可用 |
|
|
214
|
+
| `sqlite_status` | 回傳目前連線狀態與資料庫摘要 |
|
|
215
|
+
| `sqlite_query` | 執行唯讀 `SELECT` query |
|
|
216
|
+
| `sqlite_execute` | 執行寫入或修改 SQL statement |
|
|
217
|
+
| `sqlite_list_tables` | 列出 database 中所有 user tables |
|
|
218
|
+
| `sqlite_describe_table` | 顯示 table 的 schema |
|
|
219
|
+
|
|
220
|
+
## Manual Mode 注意事項
|
|
221
|
+
|
|
222
|
+
- 使用 query 或 execute 工具前,請先呼叫 `sqlite_open(path)`。
|
|
223
|
+
- 使用完畢後請呼叫 `sqlite_close`。
|
|
224
|
+
- 同一時間只能開啟一個 database file。
|
|
225
|
+
- 若需要生命週期或 placeholder 指引,請先查 `sqlite_manual`。
|
|
226
|
+
|
|
227
|
+
## 開發
|
|
228
|
+
|
|
229
|
+
```bash
|
|
230
|
+
npm run build
|
|
231
|
+
npm run dev
|
|
232
|
+
npm test
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
## 授權
|
|
236
|
+
|
|
237
|
+
MIT。請參閱 [LICENSE.md](LICENSE.md)。
|
package/dist/index.js
CHANGED
|
@@ -6,8 +6,11 @@
|
|
|
6
6
|
* the Model Context Protocol (MCP). It supports opening/closing databases,
|
|
7
7
|
* querying, executing statements, listing tables, and describing schemas.
|
|
8
8
|
*/
|
|
9
|
+
import { readFileSync } from "node:fs";
|
|
10
|
+
import { fileURLToPath } from "node:url";
|
|
9
11
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
10
12
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
13
|
+
import { z } from "zod";
|
|
11
14
|
import { registerSqliteTools } from "./tools/sqlite.js";
|
|
12
15
|
const sqlitePath = process.env.SQLITE_PATH?.trim();
|
|
13
16
|
// Create MCP server instance
|
|
@@ -18,8 +21,17 @@ const server = new McpServer({
|
|
|
18
21
|
? `Fixed: This is a SQLite tool connected to Path:${sqlitePath}`
|
|
19
22
|
: "Manual: This is a SQLite tool. Before using it, call sqlite_open(path) to open a database file. After use, call sqlite_close to close it. Only one database file can be open at a time.",
|
|
20
23
|
});
|
|
24
|
+
const manualText = readFileSync(fileURLToPath(new URL("../MANUAL.md", import.meta.url)), "utf8");
|
|
21
25
|
// Register all SQLite tools
|
|
22
26
|
registerSqliteTools(server, { fixedDatabasePath: sqlitePath });
|
|
27
|
+
server.registerTool("sqlite_manual", {
|
|
28
|
+
title: "SQLite Manual",
|
|
29
|
+
description: "Return the SQLite MCP manual. Use this first when you are unsure how to use sqlite_open, sqlite_query, sqlite_execute, or when an operation fails and you need the safe usage rules, placeholder rules, or database lifecycle guidance.",
|
|
30
|
+
inputSchema: z.object({}),
|
|
31
|
+
}, async () => ({
|
|
32
|
+
content: [{ type: "text", text: manualText }],
|
|
33
|
+
structuredContent: { manual: manualText },
|
|
34
|
+
}));
|
|
23
35
|
// Start the server with stdio transport
|
|
24
36
|
async function main() {
|
|
25
37
|
const transport = new StdioServerTransport();
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;GAMG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAExD,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC;AAEnD,6BAA6B;AAC7B,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;IAC3B,IAAI,EAAE,iBAAiB;IACvB,OAAO,EAAE,OAAO;IAChB,WAAW,EAAE,UAAU;QACrB,CAAC,CAAC,kDAAkD,UAAU,EAAE;QAChE,CAAC,CAAC,yLAAyL;CAC9L,CAAC,CAAC;AAEH,4BAA4B;AAC5B,mBAAmB,CAAC,MAAM,EAAE,EAAE,iBAAiB,EAAE,UAAU,EAAE,CAAC,CAAC;AAE/D,wCAAwC;AACxC,KAAK,UAAU,IAAI;IACjB,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAChC,OAAO,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;AACvD,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;IACtC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;GAMG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAExD,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC;AAEnD,6BAA6B;AAC7B,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;IAC3B,IAAI,EAAE,iBAAiB;IACvB,OAAO,EAAE,OAAO;IAChB,WAAW,EAAE,UAAU;QACrB,CAAC,CAAC,kDAAkD,UAAU,EAAE;QAChE,CAAC,CAAC,yLAAyL;CAC9L,CAAC,CAAC;AAEH,MAAM,UAAU,GAAG,YAAY,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC,cAAc,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AAEjG,4BAA4B;AAC5B,mBAAmB,CAAC,MAAM,EAAE,EAAE,iBAAiB,EAAE,UAAU,EAAE,CAAC,CAAC;AAE/D,MAAM,CAAC,YAAY,CACjB,eAAe,EACf;IACE,KAAK,EAAE,eAAe;IACtB,WAAW,EAAE,yOAAyO;IACtP,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;CAC1B,EACD,KAAK,IAAI,EAAE,CAAC,CAAC;IACX,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;IAC7C,iBAAiB,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE;CAC1C,CAAC,CACH,CAAC;AAEF,wCAAwC;AACxC,KAAK,UAAU,IAAI;IACjB,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAChC,OAAO,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;AACvD,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;IACtC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqlite-manager.d.ts","sourceRoot":"","sources":["../../src/services/sqlite-manager.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,EAAE,CAAkC;IAC5C,OAAO,CAAC,QAAQ,CAAuB;IAEvC;;OAEG;IACH,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;
|
|
1
|
+
{"version":3,"file":"sqlite-manager.d.ts","sourceRoot":"","sources":["../../src/services/sqlite-manager.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,EAAE,CAAkC;IAC5C,OAAO,CAAC,QAAQ,CAAuB;IAEvC;;OAEG;IACH,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAmB5D;IAED;;OAEG;IACH,KAAK,IAAI;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAiB7C;IAED;;OAEG;IACH,MAAM,IAAI;QACR,MAAM,EAAE,OAAO,CAAC;QAChB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;QACxB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;KACvB,CAuBA;IAED;;OAEG;IACH,KAAK,CACH,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B;QAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAgB5D;IAED;;OAEG;IACH,OAAO,CACL,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAUvD;IAED;;OAEG;IACH,UAAU,IAAI;QAAE,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,CAQjC;IAED;;OAEG;IACH,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG;QAChC,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE;YACP,GAAG,EAAE,MAAM,CAAC;YACZ,IAAI,EAAE,MAAM,CAAC;YACb,IAAI,EAAE,MAAM,CAAC;YACb,OAAO,EAAE,OAAO,CAAC;YACjB,YAAY,EAAE,OAAO,CAAC;YACtB,EAAE,EAAE,OAAO,CAAC;SACb,EAAE,CAAC;QACJ,QAAQ,EAAE,MAAM,CAAC;KAClB,CAkCA;IAED;;OAEG;IACH,OAAO,CAAC,UAAU;CAOnB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../../src/tools/sqlite.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAMpE,MAAM,MAAM,0BAA0B,GAAG;IACvC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,SAAS,EACjB,OAAO,GAAE,0BAA+B,GACvC,IAAI,
|
|
1
|
+
{"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../../src/tools/sqlite.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAMpE,MAAM,MAAM,0BAA0B,GAAG;IACvC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,SAAS,EACjB,OAAO,GAAE,0BAA+B,GACvC,IAAI,CAkTN"}
|
package/dist/tools/sqlite.js
CHANGED
|
@@ -104,9 +104,11 @@ Returns:
|
|
|
104
104
|
title: "Query SQLite Database",
|
|
105
105
|
description: `Execute a read-only SQL query (SELECT) on the currently open database.
|
|
106
106
|
|
|
107
|
-
Args:
|
|
108
|
-
- sql (string): The SQL SELECT statement to execute.
|
|
109
|
-
- params (object, optional): Named parameters for the query
|
|
107
|
+
Args:
|
|
108
|
+
- sql (string): The SQL SELECT statement to execute.
|
|
109
|
+
- params (object, optional): Named parameters for the query. Use placeholder
|
|
110
|
+
names without the SQL prefix in the params object, e.g. SQL ":id" uses
|
|
111
|
+
params { "id": 1 }.
|
|
110
112
|
|
|
111
113
|
Returns:
|
|
112
114
|
{ "columns": string[], "rows": unknown[][], "rowCount": number }
|
|
@@ -151,9 +153,11 @@ Error Handling:
|
|
|
151
153
|
title: "Execute SQL Statement",
|
|
152
154
|
description: `Execute a write SQL statement (INSERT, UPDATE, DELETE, CREATE, DROP, ALTER) on the currently open database.
|
|
153
155
|
|
|
154
|
-
Args:
|
|
155
|
-
- sql (string): The SQL statement to execute.
|
|
156
|
-
- params (object, optional): Named parameters for the statement.
|
|
156
|
+
Args:
|
|
157
|
+
- sql (string): The SQL statement to execute.
|
|
158
|
+
- params (object, optional): Named parameters for the statement. Use
|
|
159
|
+
placeholder names without the SQL prefix in the params object, e.g. SQL
|
|
160
|
+
":id" uses params { "id": 1 }.
|
|
157
161
|
|
|
158
162
|
Returns:
|
|
159
163
|
{ "changes": number, "lastInsertRowid": number }
|
package/dist/tools/sqlite.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqlite.js","sourceRoot":"","sources":["../../src/tools/sqlite.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAE9D,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;AAM1C;;GAEG;AACH,MAAM,UAAU,mBAAmB,CACjC,MAAiB,EACjB,
|
|
1
|
+
{"version":3,"file":"sqlite.js","sourceRoot":"","sources":["../../src/tools/sqlite.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAE9D,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;AAM1C;;GAEG;AACH,MAAM,UAAU,mBAAmB,CACjC,MAAiB,EACjB,OAAO,GAA+B,EAAE;IAExC,MAAM,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,EAAE,IAAI,EAAE,CAAC;IAE5D,IAAI,iBAAiB,EAAE,CAAC;QACtB,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACrD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IAED,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACvB,kEAAkE;QAClE,MAAM,CAAC,YAAY,CACjB,aAAa,EACb;YACE,KAAK,EAAE,sBAAsB;YAC7B,WAAW,EAAE;;;;;;;;;;;;qEAYgD;YAC7D,WAAW,EAAE;gBACX,SAAS,EAAE,CAAC;qBACT,MAAM,EAAE;qBACR,GAAG,CAAC,CAAC,EAAE,uBAAuB,CAAC;qBAC/B,QAAQ,CAAC,kCAAkC,CAAC;aAChD;YACD,WAAW,EAAE;gBACX,YAAY,EAAE,KAAK;gBACnB,eAAe,EAAE,KAAK;gBACtB,cAAc,EAAE,IAAI;gBACpB,aAAa,EAAE,KAAK;aACrB;SACF,EACD,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE;YACtB,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC7C,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;gBAClE,iBAAiB,EAAE,MAAM;aAC1B,CAAC;QACJ,CAAC,CACF,CAAC;QAEF,kEAAkE;QAClE,MAAM,CAAC,YAAY,CACjB,cAAc,EACd;YACE,KAAK,EAAE,uBAAuB;YAC9B,WAAW,EAAE;;;;;;4DAMuC;YACpD,WAAW,EAAE,EAAE;YACf,WAAW,EAAE;gBACX,YAAY,EAAE,KAAK;gBACnB,eAAe,EAAE,KAAK;gBACtB,cAAc,EAAE,IAAI;gBACpB,aAAa,EAAE,KAAK;aACrB;SACF,EACD,KAAK,IAAI,EAAE;YACT,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,EAAE,CAAC;YACrC,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;gBAClE,iBAAiB,EAAE,MAAM;aAC1B,CAAC;QACJ,CAAC,CACF,CAAC;IACJ,CAAC;IAED,kEAAkE;IAClE,MAAM,CAAC,YAAY,CACjB,eAAe,EACf;QACE,KAAK,EAAE,wBAAwB;QAC/B,WAAW,EAAE;;;;;;;;IAQf;QACE,WAAW,EAAE,EAAE;QACf,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,KAAK;SACrB;KACF,EACD,KAAK,IAAI,EAAE;QACT,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC;QACtC,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;YAClE,iBAAiB,EAAE,MAAM;SAC1B,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,kEAAkE;IAClE,MAAM,CAAC,YAAY,CACjB,cAAc,EACd;QACE,KAAK,EAAE,uBAAuB;QAC9B,WAAW,EAAE;;;;;;;;;;;;;uDAaoC;QACjD,WAAW,EAAE;YACX,GAAG,EAAE,CAAC;iBACH,MAAM,EAAE;iBACR,GAAG,CAAC,CAAC,EAAE,uBAAuB,CAAC;iBAC/B,QAAQ,CAAC,iCAAiC,CAAC;YAC9C,MAAM,EAAE,CAAC;iBACN,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;iBAC/B,QAAQ,EAAE;iBACV,QAAQ,CAAC,yCAAyC,CAAC;SACvD;QACD,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,KAAK;SACrB;KACF,EACD,KAAK,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE;QACxB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YAChD,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;gBAClE,iBAAiB,EAAE,MAAM;aAC1B,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,OAAO,EAAE,EAAE,CAAC;gBACtD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,kEAAkE;IAClE,MAAM,CAAC,YAAY,CACjB,gBAAgB,EAChB;QACE,KAAK,EAAE,uBAAuB;QAC9B,WAAW,EAAE;;;;;;;;;;;;;2DAawC;QACrD,WAAW,EAAE;YACX,GAAG,EAAE,CAAC;iBACH,MAAM,EAAE;iBACR,GAAG,CAAC,CAAC,EAAE,2BAA2B,CAAC;iBACnC,QAAQ,CAAC,yDAAyD,CAAC;YACtE,MAAM,EAAE,CAAC;iBACN,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;iBAC/B,QAAQ,EAAE;iBACV,QAAQ,CAAC,6CAA6C,CAAC;SAC3D;QACD,WAAW,EAAE;YACX,YAAY,EAAE,KAAK;YACnB,eAAe,EAAE,IAAI;YACrB,cAAc,EAAE,KAAK;YACrB,aAAa,EAAE,KAAK;SACrB;KACF,EACD,KAAK,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE;QACxB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YAClD,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;gBAClE,iBAAiB,EAAE,MAAM;aAC1B,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,OAAO,EAAE,EAAE,CAAC;gBACtD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,kEAAkE;IAClE,MAAM,CAAC,YAAY,CACjB,oBAAoB,EACpB;QACE,KAAK,EAAE,oBAAoB;QAC3B,WAAW,EAAE;;;;;;0DAMuC;QACpD,WAAW,EAAE,EAAE;QACf,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,KAAK;SACrB;KACF,EACD,KAAK,IAAI,EAAE;QACT,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,aAAa,CAAC,UAAU,EAAE,CAAC;YAC1C,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;gBAClE,iBAAiB,EAAE,MAAM;aAC1B,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,OAAO,EAAE,EAAE,CAAC;gBACtD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,kEAAkE;IAClE,MAAM,CAAC,YAAY,CACjB,uBAAuB,EACvB;QACE,KAAK,EAAE,uBAAuB;QAC9B,WAAW,EAAE;;;;;;;;;;;;;;;;+CAgB4B;QACzC,WAAW,EAAE;YACX,UAAU,EAAE,CAAC;iBACV,MAAM,EAAE;iBACR,GAAG,CAAC,CAAC,EAAE,wBAAwB,CAAC;iBAChC,QAAQ,CAAC,+BAA+B,CAAC;SAC7C;QACD,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,KAAK;SACrB;KACF,EACD,KAAK,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE;QACvB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,aAAa,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;YACvD,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;gBAClE,iBAAiB,EAAE,MAAM;aAC1B,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,OAAO,EAAE,EAAE,CAAC;gBACtD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "easy-sqlite-mcp",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.1.2",
|
|
4
4
|
"description": "A high-performance Model Context Protocol (MCP) server for SQLite database interaction.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"mcp",
|
|
@@ -22,7 +22,9 @@
|
|
|
22
22
|
"files": [
|
|
23
23
|
"dist",
|
|
24
24
|
"skills",
|
|
25
|
-
"README.md"
|
|
25
|
+
"README.md",
|
|
26
|
+
"README.zh-TW.md",
|
|
27
|
+
"MANUAL.md"
|
|
26
28
|
],
|
|
27
29
|
"type": "module",
|
|
28
30
|
"main": "dist/index.js",
|
|
@@ -33,20 +35,21 @@
|
|
|
33
35
|
"start": "node dist/index.js",
|
|
34
36
|
"dev": "tsx watch src/index.ts",
|
|
35
37
|
"build": "tsc",
|
|
38
|
+
"test": "npm run build && node --test test/*.test.mjs",
|
|
36
39
|
"clean": "rimraf dist"
|
|
37
40
|
},
|
|
38
41
|
"engines": {
|
|
39
|
-
"node": ">=
|
|
42
|
+
"node": ">=20"
|
|
40
43
|
},
|
|
41
44
|
"dependencies": {
|
|
42
45
|
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
43
|
-
"better-sqlite3": "^12.
|
|
46
|
+
"better-sqlite3": "^12.11.1",
|
|
44
47
|
"zod": "^4.4.3"
|
|
45
48
|
},
|
|
46
49
|
"devDependencies": {
|
|
47
50
|
"@types/better-sqlite3": "^7.6.13",
|
|
48
|
-
"@types/node": "^
|
|
49
|
-
"tsx": "^4.
|
|
50
|
-
"typescript": "^
|
|
51
|
+
"@types/node": "^26.1.1",
|
|
52
|
+
"tsx": "^4.23.1",
|
|
53
|
+
"typescript": "^7.0.2"
|
|
51
54
|
}
|
|
52
55
|
}
|