反应原生sqlite-mcp
将您的React Native SQLite数据库暴露给MCP兼容的工具,并提供模拟器支持。
______________________________________________________________________
概述
SQLite MCP服务器确实存在,但它们都假设您的数据库是位于桌面或服务器上的文件。他们打开一条路径,读取文件,完成。
这不适用于移动设备。在iOS模拟器上,SQLite数据库深埋在沙盒应用程序容器中。在Android模拟器上,他们落后了 run-as 需要的权限边界 adb 访问。现有的SQLite MCP服务器无法处理这两种情况。
我构建这个是因为我厌倦了手动提取 .db 模拟器中的文件只是为了弄清楚为什么我的应用程序的本地状态是错误的。
react-native-sqlite-mcp 是专为移动模拟器构建的SQLite MCP服务器。它自动发现iOS模拟器和Android模拟器沙盒中的数据库,透明地提取它们,并向任何兼容MCP的工具公开模式+查询访问权限。
______________________________________________________________________
为什么存在
- 现有的SQLite MCP服务器无法访问iOS模拟器或Android模拟器沙盒中的数据库
- 移动MCP工具侧重于UI自动化,而不是数据层
- SQLite支持的状态在本地第一个React Native应用程序中至关重要
- 没有MCP桥可以直接从AI工具检查仿真器数据库
这个项目填补了这一空白。
______________________________________________________________________
运作原理
graph LR
subgraph Emulator
RN[React Native App] --> SQLite[(SQLite DB)]
end
SQLite -- "simctl / adb pull" --> MCP[MCP Server]
MCP -- "JSON-RPC stdio" --> AI[Claude / Cursor / Antigravity]- 自动检测已启动的iOS模拟器(
xcrun simctl)Android模拟器(adb) - 在沙盒应用容器中发现SQLite数据库
- 透明地提取数据库文件(iOS读取到位,Android使用
run-as+adb pull) - 通过MCP stdio传输公开架构和查询访问权限
______________________________________________________________________
快速开始
将此添加到您的MCP配置中(mcp.json, .cursor/mcp.json,或 .gemini/settings.json):
{
"mcpServers": {
"rn-sqlite-bridge": {
"command": "npx",
"args": ["-y", "react-native-sqlite-mcp"],
"env": {
"DB_NAME": "my_app.db",
"ANDROID_BUNDLE_ID": "com.mycompany.myapp"
}
}
}
}重新启动编辑器。你的人工智能现在可以直接查询你的模拟器数据库。
______________________________________________________________________
环境变量
| 变量 | 必填 | 描述 |
|---|---|---|
DB_NAME | 否 | 启动时自动同步的数据库文件名(例如。 my_app.db).支持球形图案(*.db).如果省略,则自动选择第一个发现的数据库。 |
ANDROID_BUNDLE_ID | 否 | Android应用程序包名称(例如。 com.mycompany.app).如果省略,则扫描模拟器上的所有第三方软件包。 |
READ_ONLY | 否 | 设置为 true 限制 query_db 仅限于SELECT、PRAGMA和EXPLAIN语句。违约: false. |
MCP_LOG_LEVEL | 否 | 日志详细程度: debug, info, warn, error默认值: info。日志仅转到stderr。 |
______________________________________________________________________
工具
list_databases
在启动的模拟器上扫描所有SQLite数据库。
| 参数 | 类型 | 描述 |
|---|---|---|
platform | string | 可选。 ios 或 android。如果省略,则扫描两者。 |
bundleId | string | 可选。仅限Android应用程序包名称,以缩小搜索范围。 |
sync_database
从模拟器中提取数据库的新副本,以便所有后续查询都使用最新数据。
| 参数 | 类型 | 描述 |
|---|---|---|
dbName | string | 可选。数据库文件名或全局模式。如果省略,则自动选择。 |
bundleId | string | 可选。仅限Android应用程序包名称。 |
platform | string | 可选。 ios 或 android. |
inspect_schema
返回所有表、列和 CREATE TABLE 同步数据库的语句。
| 参数 | 类型 | 描述 |
|---|---|---|
dbName | string | 可选。以特定数据库为目标。 |
platform | string | 可选。 ios 或 android. |
read_table_contents
返回表中的行(SELECT * FROM table LIMIT n).
| 参数 | 类型 | 描述 |
|---|---|---|
tableName | 字符串 | 必修的。 要读的表。 |
limit | number | 可选。要返回的最大行数。违约: 100. |
dbName | string | 可选。以特定数据库为目标。 |
platform | string | 可选。 ios 或 android. |
query_db
执行原始SQL查询并返回结果集。
| 参数 | 类型 | 描述 |
|---|---|---|
sql | 字符串 | 必修的。 要执行的SQL语句。 |
params | array | 可选。绑定参数 ? 占位符。 |
dbName | string | 可选。以特定数据库为目标。 |
platform | string | 可选。 ios 或 android. |
当READ_ONLY=true,仅SELECT,PRAGMA,以及EXPLAIN允许发表声明。
______________________________________________________________________
手动安装
git clone https://github.com/MisterMur/react-native-sqlite-mcp.git
cd react-native-sqlite-mcp
npm install
npm run build将MCP配置指向本地版本:
{
"mcpServers": {
"rn-sqlite-bridge": {
"command": "node",
"args": ["/absolute/path/to/react-native-sqlite-mcp/dist/index.js"],
"env": {
"DB_NAME": "my_app.db"
}
}
}
}______________________________________________________________________
局限性
- 仅适用于开发环境,不适用于生产环境
- iOS需要一个启动模拟器
xcrun simctl - Android需要一个启动的模拟器
adb以及一个可调试的应用程序(调试构建) - 查询在拉取快照上运行,而不是在实时连接上运行
______________________________________________________________________
贡献
欢迎问题和拉取请求。
如果你在本地第一个React Native空间工作,并且遇到了边缘情况,请打开一个问题。这个工具的存在是因为这个差距是真实存在的。
______________________________________________________________________
许可证
麻省理工学院
