SQLite

SQLite

Hawa Code 提供的 SQLite 数据库 MCP 服务(@dahawa/hawa-sqlite-mcp),基于 MCP (Model Context Protocol) 协议、通过 stdio 传输,为 AI 提供表结构查询与 SQL 执行能力。

建议配合 Hawa Code Code Mode 使用。


快速开始

包已发布到 npm,通过 npx 直接运行,无需本地构建。

配置方式一:命令行参数指定数据库路径

{
"mcpServers": {
"sqlite": {
"command": "npx",
"args": [
"-y",
"@dahawa/hawa-sqlite-mcp",
"/absolute/path/to/data.sqlite"
]
}
}
}

配置方式二:环境变量指定数据库路径

{
"mcpServers": {
"sqlite": {
"command": "npx",
"args": ["-y", "@dahawa/hawa-sqlite-mcp"],
"env": {
"SQLITE_DB_PATH": "/absolute/path/to/data.sqlite"
}
}
}
}

数据库路径优先级: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 }

成功响应(节选):

{
"database": "./data.sqlite",
"tables": [
{
"name": "users",
"type": "table",
"sql": "CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT NOT NULL)",
"columns": [
{
"name": "id",
"type": "INTEGER",
"notnull": false,
"defaultValue": null,
"primaryKey": true
}
]
}
]
}

失败响应(isError: true):

{
"database": "./data.sqlite",
"tables": [],
"error": "<错误信息>"
}

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):

{
"success": false,
"changes": 0,
"error": "incomplete input"
}

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] }

响应:

{
"columns": ["id", "name", "age"],
"rows": [
{ "id": 1, "name": "Alice", "age": 30 }
],
"rowCount": 1
}

INSERT

调用:

{ "sql": "INSERT INTO users (name, age) VALUES (?, ?)", "params": ["Alice", 30] }

响应:

{
"columns": ["changes", "lastInsertRowid"],
"rows": [
{ "changes": 1, "lastInsertRowid": 1 }
],
"rowCount": 1
}

执行失败(isError: true)

{
"columns": [],
"rows": [],
"rowCount": 0,
"error": "NOT NULL constraint failed: users.name"
}