SQLite数据库MCP桥接工具

为React Native应用提供SQLite数据库与MCP兼容工具之间的桥接服务,支持iOS模拟器和Android模拟器。

  • by MisterMur
  • TypeScript
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 mistermur/react-native-sqlite-mcp

使用说明

反应原生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]
  1. 自动检测已启动的iOS模拟器(xcrun simctl)Android模拟器(adb)
  2. 在沙盒应用容器中发现SQLite数据库
  3. 透明地提取数据库文件(iOS读取到位,Android使用 run-as + adb pull)
  4. 通过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空间工作,并且遇到了边缘情况,请打开一个问题。这个工具的存在是因为这个差距是真实存在的。


许可证

麻省理工学院