SQLite
Hawa Code 提供的 SQLite 数据库 MCP 服务(@dahawa/hawa-sqlite-mcp),基于 MCP (Model Context Protocol) 协议、通过 stdio 传输,为 AI 提供表结构查询与 SQL 执行能力。
建议配合 Hawa Code Code Mode 使用。
快速开始
包已发布到 npm,通过 npx 直接运行,无需本地构建。
配置方式一:命令行参数指定数据库路径
{ |
配置方式二:环境变量指定数据库路径
{ |
数据库路径优先级:
SQLITE_DB_PATH环境变量 >args中的命令行参数 > 默认./data.sqlite(相对 MCP 客户端工作目录)。若客户端找不到npx/node,可改用which node查到的绝对路径。
工具一览
| 工具 | 说明 |
|---|---|
list_tables |
列出所有表/视图,可选包含 CREATE DDL 与列结构 |
execute_ddl |
执行 DDL 语句(CREATE / ALTER / DROP,支持多语句批执行) |
execute_sql |
执行 SQL(SELECT / INSERT / UPDATE / DELETE),支持 ? 参数绑定 |
list_tables
列出 SQLite 数据库中的所有表和视图,可选包含每个表的 CREATE DDL 和列结构。
入参
| 字段 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| includeSchema | boolean | 否 | true |
是否为每个表包含 CREATE DDL 语句和列结构 |
出参
| 字段 | 类型 | 说明 |
|---|---|---|
| database | string | 数据库文件路径 |
| tables | array<TableInfo> | 表/视图列表,按名称排序 |
| error | string(可选) | 执行失败时的错误信息;失败时 tables 为 [] |
TableInfo
| 字段 | 类型 | 说明 |
|---|---|---|
| name | string | 表/视图名称 |
| type | string | 对象类型:"table" 或 "view" |
| sql | string | null | CREATE DDL 语句;includeSchema=false 时为 null |
| columns | array<ColumnInfo> | null | 列结构;includeSchema=false 或非表对象时为 null |
ColumnInfo
| 字段 | 类型 | 说明 |
|---|---|---|
| name | string | 列名 |
| type | string | 声明的列类型(如 INTEGER、TEXT) |
| notnull | boolean | 是否有 NOT NULL 约束 |
| defaultValue | string | null | 默认值 SQL 表达式 |
| primaryKey | boolean | 是否主键列 |
示例
调用:
{ "includeSchema": true } |
成功响应(节选):
{ |
失败响应(isError: true):
{ |
execute_ddl
执行 DDL 语句(CREATE / ALTER / DROP TABLE、CREATE INDEX 等),支持多语句批执行。
入参
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| sql | string | 是 | 要执行的 DDL 语句;可用 ; 分隔一次性提交多条 |
出参
| 字段 | 类型 | 说明 |
|---|---|---|
| success | boolean | 是否执行成功 |
| changes | number | 影响的行数(DDL 固定为 0) |
| error | string(可选) | 执行失败时的错误信息 |
示例
调用:
{ "sql": "CREATE INDEX IF NOT EXISTS idx_users_name ON users(name)" } |
成功响应:
{ "success": true, "changes": 0 } |
失败响应(isError: true):
{ |
execute_sql
执行任意 SQL 语句(SELECT / INSERT / UPDATE / DELETE 等),支持参数绑定。
入参
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| sql | string | 是 | 要执行的 SQL 语句,使用 ? 占位符做参数绑定 |
| params | array<string | number | boolean | null> | 否 | 绑定到 SQL 占位符的参数值,按顺序对应 |
出参
| 字段 | 类型 | 说明 |
|---|---|---|
| columns | array<string> | 列名列表 |
| rows | array<object> | 结果行,每行为一个「列名 → 值」对象 |
| rowCount | number | 结果行数(写操作时为影响的行数) |
| error | string(可选) | 执行失败时的错误信息;失败时 columns/rows 为 []、rowCount 为 0 |
行为说明
- 查询类语句(SELECT 等):
columns为结果集列名,rows为查询结果,rowCount = rows.length - 写操作语句(INSERT / UPDATE / DELETE 等):
columns固定为["changes", "lastInsertRowid"],rows为单行[{ changes, lastInsertRowid }],rowCount = changes
示例
SELECT
调用:
{ "sql": "SELECT * FROM users WHERE age > ?", "params": [18] } |
响应:
{ |
INSERT
调用:
{ "sql": "INSERT INTO users (name, age) VALUES (?, ?)", "params": ["Alice", 30] } |
响应:
{ |
执行失败(isError: true)
{ |