Spreadsheet DB

io.github.ManddarinShop由 GitHub 账号 ManddarinShop 发布v0.1.1更新于 Oct 25, 2026

SQLite-authoritative entity database with an async Google Sheets projection for AI agents.

已验证STDIO仅桌面数据库数据与分析

概览

AI 生成的概览

本地 MCP 服务器,为助手提供带类型的 SQLite 实体数据库,并把已提交的变更异步投影到 Google 表格视图。

可以做什么
通过作为权威数据源的本地 SQLite 存储读写带类型的实体,常规操作无需等待 Google 表格。提交变更后,变更会异步投影到 Google 表格,供人工审阅和轻量协作。轮询表格中的人工编辑,将其接受进 SQLite 或记录为冲突,而不是静默覆盖。检测意外的列变更和重复表头,并对持久化写入进行重试和去重。未配置表格地址时以纯本地模式运行,不接触 Google。
适用场景
适合助手为 MVP 或小型应用提供快速的本地结构化存储,同时人们仍希望在熟悉的表格中查看和少量编辑数据。当 SQLite 应保持权威、表格仅作为面向人的视图时选用;若需要原始表格访问或生产级关系数据库,其他工具更合适。
运行要求
以本地进程运行(npm 包,stdio)。需要 Node.js,以及包含实体配置文件的当前工作目录,或通过 HIKOUTEI_MCP_CONFIG 指定路径。Google 表格同步为可选项,需要 HIKOUTEI_SYNC_SPREADSHEET_URL 以及指向服务账号密钥文件的 GOOGLE_APPLICATION_CREDENTIALS;文档中的安装命令会创建 Cloud 项目、服务账号、密钥和表格。
安装前请注意
Google 表格路径需要由 GOOGLE_APPLICATION_CREDENTIALS 引用的服务账号密钥文件,该文件可访问 Cloud 项目和表格,请勿纳入版本控制。启用同步会把数据写入第三方 Google 服务。服务器会写入、更新和删除 SQLite 记录,并可将变更推送到表格,表格中的人工编辑也会回流到数据库,因此可能出现冲突和意外覆盖。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Spreadsheet DB,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

한국어 | 日本語

[Hikoutei]

Hikoutei

Keep your app fast with SQLite. Keep your workflow visible in Google Sheets.

A typed repository and safe write layer for Google Sheets-backed MVPs: your application reads and writes local SQLite through typed entities, and committed changes are asynchronously projected to Google Sheets for human review and lightweight collaboration.

npm · Quick start · Issues

[npm version] [license] [TypeScript]

What is Hikoutei?

Hikoutei gives TypeScript applications a typed entity API backed by local SQLite, then asynchronously synchronizes committed changes to Google Sheets.

Your application does not wait on Google Sheets for normal reads and writes. Sheets remains available for inspection, operations, and lightweight human collaboration.

Hikoutei is not a raw Sheets API wrapper, not a replacement for PostgreSQL, and it does not treat Google Sheets as the authoritative application database. SQLite is the source of truth; Sheets is the human-facing view.

Why Hikoutei?

  • Define typed entities instead of manually converting Sheet rows.
  • Read and write through local SQLite without waiting for Google Sheets.
  • Synchronize committed changes to Sheets in the background.
  • Detect unexpected column changes and duplicate headers.
  • Avoid overwriting newer Sheet edits during conflicting updates.

Hikoutei does not replace google-spreadsheet or @googleapis/sheets — it sits one level above them. If you only need raw spreadsheet access, use the API client directly.

CapabilityHikouteigoogle-spreadsheet@googleapis/sheets
Typed entity model✅❌❌
Fast local application reads✅❌❌
Async projection to Sheets✅❌❌
Durable write retry and deduplication✅❌❌
Conflict-aware Sheet updates✅❌❌
Direct row and cell manipulationLimited✅✅
Full Google Sheets API accessProvider onlyPartial✅

Installation

sh
npm install hikoutei @mikro-orm/core @mikro-orm/sql

Installing the library does not touch Google Cloud — it runs local-only (SQLite) by default. Run the setup command below only when you want Sheet sync.

Setup (Google Sheets sync)

One-time, interactive. Install the gcloud CLI, then:

sh
npx hikoutei setup

This creates the Cloud project, service account, key, and spreadsheet, and writes .env for you. Without HIKOUTEI_SYNC_SPREADSHEET_URL, createTypedSheets() stays local-only (SQLite). Details, credential pools, quota guidance, and manual setup: Google Sheets setup.

Usage

Define a scalar entity and use the local SQLite authority through a request-local manager.

ts
import { createTypedSheets, defineTypedSheetsEntity } from "hikoutei";
const User = defineTypedSheetsEntity({  name: "User",  tableName: "users",  properties: {    id: { type: "string", primary: true },    name: { type: "string" },    age: { type: "number" },    active: { type: "boolean" },  },});
const hikoutei = await createTypedSheets({  dbName: "./hikoutei.sqlite",  entities: [User],});
const em = hikoutei.em.fork();const user = em.create(User, { id: "u1", name: "Ada", age: 36, active: true });em.persist(user);await em.flush();
user.name = "Ada Lovelace";await em.flush();
const loaded = await em.findOne(User, { id: "u1" });if (loaded !== null) {  em.remove(loaded);  await em.flush();}

More reads, transactions, and operators: Quick start.

Writes commit to local SQLite immediately — the request never waits on Google. Human edits in the Sheet flow back through polling — accepted into SQLite or recorded as conflicts, never silently overwritten. The full pipeline (outbox, delivery, conflict handling) is covered in Write and synchronization flow.

Learn more

License

Hikoutei is released under the MIT License.

来源:README.md,提交 d745ac8

工具

0
SourceWeft 尚未在沙箱中启动过该软件包,因此其工具未知。

版本历史

1
  1. v0.1.1最新Sep 16, 2026

评分

已满足适用检查项的 50%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分