Prototyp · Vorschau: alle Server aus der offiziellen Registry, alle 30 Minuten synchronisiert. Bewertungen und Benutzerkonten folgen in einem späteren Schritt.
PopNx MCPMCP-Server für alle, die KI nutzen · in einfachen Worten erklärt

Basepilot

von Peterwong666Version 0.1.1i★ –iLäuft auf deinem Computer
Name in der Registryio.github.Peterwong666/basepilot

Installieren

Überblick

Beschreibung vom Entwickler (englisches Original)

面向企业交付的飞书多维表格 MCP Server —— 让 Claude Code / Cursor 安全读写业务台账

Die drei Säulen von PopNx MCP

Diese drei werden nie zu einer Punktzahl zusammengefasst: Meinungen, Messungen und Beliebtheit sind verschiedene Dinge.

Was du damit machen kannst

Für diesen Server haben wir noch keine Zusammenfassung in einfacher Sprache geschrieben. Unten stehen die Fakten, die wir aus der Registry gelesen haben.

  • Verbindung: Läuft auf deinem Computer
  • Transport: stdio
  • Kategorie: Sonstiges
  • Das musst du eintragen: BASEPILOT_APP_ID, BASEPILOT_APP_SECRET

Installation

Wähle die KI-App, die du nutzt, und kopiere die Einstellungen.

Bevor du installierst

  • Basischecks: 1 von 1 bestanden
  • Läuft auf deinem Computer mit den Rechten deines Benutzerkontos (Dateien, Netzwerk, Apps).
  • Das trägst du selbst ein: BASEPILOT_APP_ID, BASEPILOT_APP_SECRET

Als geheim markierte Werte sind Schlüssel zu deinem Konto. Gib sie nie weiter und füge sie nie in einen Chat ein.

Du brauchst

  • PyPIuv für Python installiert (für den Befehl uvx)

Welche App nutzt du?

Wähle oben deine App. Wir merken sie uns, damit der Button beim nächsten Mal „In … installieren“ anzeigt.

Öffne Claude Desktop → Settings → Developer → Edit Config und füge dies in claude_desktop_config.json ein

{
  "mcpServers": {
    "basepilot": {
      "command": "uvx",
      "args": [
        "basepilot"
      ],
      "env": {
        "BASEPILOT_APP_ID": "your-value",
        "BASEPILOT_APP_SECRET": "your-value"
      }
    }
  }
}

Führe das in deinem Terminal aus

claude mcp add basepilot --env BASEPILOT_APP_ID=your-value --env BASEPILOT_APP_SECRET=your-value -- uvx basepilot

Trag die leeren Werte ein, bevor du ihn startest.

In Cursor öffnen

Oder kopier die Einstellungen selbst

In .cursor/mcp.json in deinem Projekt oder in ~/.cursor/mcp.json einfügen

{
  "mcpServers": {
    "basepilot": {
      "command": "uvx",
      "args": [
        "basepilot"
      ],
      "env": {
        "BASEPILOT_APP_ID": "your-value",
        "BASEPILOT_APP_SECRET": "your-value"
      }
    }
  }
}

Dein Browser fragt, ob er die App öffnen darf, dann zeigt die App die Einstellungen und bittet dich um Bestätigung. Schlüsselwerte bleiben leer, damit du sie selbst einträgst.

In VS Code öffnen

Oder kopier die Einstellungen selbst

In .vscode/mcp.json in deinem Projekt einfügen

{
  "servers": {
    "basepilot": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "basepilot"
      ],
      "env": {
        "BASEPILOT_APP_ID": "your-value",
        "BASEPILOT_APP_SECRET": "your-value"
      }
    }
  }
}

Dein Browser fragt, ob er die App öffnen darf, dann zeigt die App die Einstellungen und bittet dich um Bestätigung. Schlüsselwerte bleiben leer, damit du sie selbst einträgst.

Dieser Server läuft auf deinem Computer, und ChatGPT kann sich nur mit Servern im Internet verbinden. Wähle eine andere App.

Deine Auswahl bleibt in einem Cookie auf diesem Gerät; kein Konto nötig.

Werte, die du selbst einträgst

  • BASEPILOT_APP_ID erforderlich env
    飞书开放平台企业自建应用的 App ID(cli_ 开头)
  • BASEPILOT_APP_SECRET geheim erforderlich env
    飞书开放平台企业自建应用的 App Secret

Diese Einstellungen werden aus dem Registry-Eintrag des Entwicklers erzeugt. Wenn in der README etwas anderes steht, folge der README.

Was er kann

Läuft auf deinem Computer; die Tool-Liste erscheint nach der Installation in deiner KI-App.

Basischecksi

Wir prüfen Informationen, die jeder sehen kann; den Code haben wir nicht gelesen. Checks, die nicht zutreffen, werden nicht mitgezählt. · Geprüft am 6. Nov. 2026

  • ✓ Bestanden

    Entwickler passt zum Repo

    Der Registry-Name wurde mit dem GitHub-Konto Peterwong666 bestätigt, dem das Repo gehört

  • … Noch nicht geprüft

    Wird noch gepflegt

    Dieses Repo haben wir noch nicht von GitHub gelesen

  • … Noch nicht geprüft

    Hat eine Lizenz

    Dieses Repo haben wir noch nicht von GitHub gelesen

  • – Nicht zutreffend

    Endpunkt antwortet

    Dieser Server läuft auf deinem Computer; es gibt keinen Endpunkt im Internet

  • – Nicht zutreffend

    Anmeldung mit OAuth

    Läuft auf deinem Computer und nutzt stattdessen lokale Einstellungen

  • … Noch nicht geprüft

    Keine versteckten Anweisungen in Tool-Beschreibungen

    Läuft auf deinem Computer; Tool-Listen können wir nur von Endpunkten im Internet lesen

Im Vergleich mit anderen in Sonstigesi

  • Mehr Sterne als 0 % der anderen 32505 Server in dieser Kategorie
  • Neuer in der Registry veröffentlicht als 68 % der anderen 32505 Server in dieser Kategorie
  • Basischecks gleich gut wie oder besser als bei 100 % der anderen 32505 Server in dieser Kategorie

Verglichen mit allen aktiven Servern dieser Kategorie in der Registry. Sterne zählen nur, wenn dem Herausgeber das Repo gehört.

Häufige Fragen

Ist Basepilot sicher?

Er hat 1 von 1 zutreffenden Basischecks bestanden. Den Code haben wir nicht gelesen. Bevor du einen Schlüssel oder Token hinzufügst, sieh nach, welche Zugriffe der Server verlangt, und nutze einen Schlüssel, der nur die Berechtigungen hat, die du brauchst.

Welche Schlüssel oder Codes braucht er?

Das musst du eintragen: BASEPILOT_APP_ID, BASEPILOT_APP_SECRET

Läuft er auf meinem Computer oder in der Cloud?

Er läuft auf deinem Computer. Deine KI-App startet ihn bei Bedarf, und die Daten laufen nicht über die Server des Entwicklers (außer der Server ruft selbst einen Onlinedienst auf).

Wird er noch gepflegt?

Das GitHub-Repo wurde zuletzt – geändert, und die neueste Version (0.1.1) kam vor 17 Tagen in die Registry.

Welche Apps können ihn nutzen?

Apps, die MCP unterstützen, etwa Claude Desktop, Claude Code, Cursor und VS Code. Außerdem brauchst du Python (uv) auf deinem Computer.

Was kann ich stattdessen nutzen?

In derselben Kategorie: Spec Driven Development, Remote Desktop Commander, topo^alpin

Alternativen

Server derselben Kategorie von anderen Entwicklern, sortiert nach Sternen.

So liest du eine Karte:★ GitHub-SterneiDrei Säulen: Bewertungen · Checks · NutzungiAktualisiert = neueste Version in der Registry veröffentlichti

Spec Driven Development

von formulahendry

MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.

Läuft auf deinem Computer★ 440MITAktualisiert vor 14 Monaten
Installieren

Remote Desktop Commander

von desktop-commander

Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.

Läuft in der Cloud★ 211Aktualisiert gestern
Installieren

topo^alpin

von topoalpin.app

Avalanche bulletins and mountain weather forecasts for any place in the Alps.

Läuft in der CloudAktualisiert heute
Installieren

README vom Entwickler

README öffnen

Unverändert aus dem Repo des Entwicklers übernommen. PopNx MCP hat den Inhalt weder geprüft noch empfiehlt es ihn. HTML, Bilder und Skripte wurden entfernt. Links führen von dieser Website weg.

BasePilot

面向企业交付的飞书多维表格 MCP Server —— 用 MCP 工具把多维表格变成

Claude Code / Cursor 可安全读写的业务台账。

[English](#english-readme) · 简体中文


这是什么

中小企业已经在用飞书多维表格承载业务台账(库存、广告、差评跟进), 数据靠人工从 Seller Central / 广告后台导 CSV 再粘贴进去,每天 1-2 小时。 公司想上 AI,但第一件事就卡住了:

卡点飞书返回根因
AI 给人员字段传了字符串1254066 UserFieldConvFail必须是 [{"id": "ou_xxx"}] 数组对象
AI 给日期字段传了秒级时间戳1254064 DatetimeFieldConvFail必须是 13 位毫秒,差 1000 倍
AI 给单选字段传了数组1254062 SingleSelectFieldConvFail必须是字符串,不是数组
AI 写得稍快一点1254291 Write conflict同一数据表不支持并发写,官方建议加 0.5-1秒延迟

这不是技术选型问题,是没有人把多维表格的真实约束包一层。 业务等不了,AI 落地就停在这里 —— 这是很多「客户买过 AI 工具但没用起来」的真实原因。

BasePilot 就是那一层。


看图说话(全部为真实运行输出,非手绘)

1. 入口宽容,出口严格—— 适配层把 LLM 的错误输入吃掉

scripts/demo_coerce.py 把LLM 最常犯的四种错误喂给适配层,看它们被自动纠正:

2. 业务诊断:15 个环节逐条打分,明确劝退 2 个

四象限分布(7 个不需要 AI,4 个 AI 主导,2 个明确劝退):

3. 评测:9 项指标全部实算,无一手写
4. 离线全量门禁:lint + 类型 + 测试 + 评测 + 文档校验
5. cassette 重放:真实租户交互在 CI 可复现(已脱敏)
6. 交付文档链:五份「报告即代码」自动生成

排障 SOP由 errors.py 自动生成,与代码零漂移:

全部截图由 scripts/make_screenshots.py 执行真实命令后渲染,不存在手绘图。

脚本内置「解释器污染」防护 —— 用错Python 环境会导致场景包静默降级,

生成数字错误的图,已加断言阻止出图。


架构

┌─ MCP 工具层 ──────────────────────────────────────────────┐

│ describe_table · create/update/delete · search │ │ batch_upsert · dry_run_create · diagnose_scenarios │ └────────────────────────┬───────────────────────────────────┘ │ ┌─ 引擎五层 ────────────────────────────────────────────────┐ │ serialization.py per-table 锁 + 0.5s 节流 │ │ client.py 串联调用链 · upsert_records │ │ coerce.py 13 类编码器 + normalize_key 解码 │ │ ratelimit.py 分桶限流(write/search/list 独立)│ │ auth.py token 缓存 + asyncio 单飞 │ └────────────────────────┬───────────────────────────────────┘ │ ┌─ 横切三线 ────────────────────────────────────────────────┐ │ config.py飞书约束常量(每个数值标注官方出处) │ │ errors.py 34 条错误码 → 客户现场动作 │ │ cassette.py 录制/重放 + 凭证与租户标识符脱敏 │ └────────────────────────┬───────────────────────────────────┘ │ https://open.feishu.cn/open-apis

分层原则:不是把 API 包装成工具,而是把飞书的真实约束收敛到三层里。 工具层只表达业务意图(batch_upsert),约束由引擎层统一兜住 —— 否则同一条记录走不同入口会得到不同结果(见 ADR-004)。


三个适配层(核心)

不是把 API 包装成工具,而是治理飞书的真实约束。

1. 鉴权层 —— token 缓存 ✅

tenant_access_token 有效期 7200 秒。官方明确:剩余有效期小于 30 分钟时返回新 token, 大于等于 30 分钟时返回原 token。所以刷新窗口必须落在 [0, 30min] 区间内, 否则会拿到同一个 token,白白消耗配额。

实现:进程内缓存 + asyncio.Lock 单飞(并发下只换一次,其余复用)。

实测指标:100 次业务请求 → 向飞书换 token 1 次。 (tests/test_auth.py::test_100_requests_fetch_token_once,可复现)

2. 并发层 —— 单表写串行 ✅

官方错误码 1254291 的排查建议原文:「在接口与接口之间增加 0.5 或 1 秒的延迟」; 1254607 补充说明底层「基于版本维度的串行方式,不支持并发」。

实现:per-`table_id` 的锁(不是全局锁 —— 不同数据表之间仍可并行)+ 0.5s 请求节流, 主动规避 1254291 而不是撞上再重试。

实测指标:200 次压测下,单表最大并发写 = 1,`1254291` 计数 = 0。 (tests/test_client.py::test_same_table_writes_are_serialized,可复现)

3. 类型层 —— 字段编码适配 ✅

按 13 类字段自动编码为官方要求格式,并对不可写字段 fail-fast。 另有 normalize_key() 解码:API 读回的文本字段是富文本数组、URL 是对象, upsert 唯一键提取必须归一化,否则「已存在」判为「不存在」导致重复创建 (详见 docs/adr/006-read-write-schema-asymmetry.md)。

type字段正确格式常见错误
3SingleSelectstr❌ 传数组
4MultiSelectlist[str]
5DateTime13 位毫秒❌ 传秒级
7Checkboxbool❌ 传 "true"
11User[{"id": "ou_xxx"}]❌ 传字符串
15Url{"link": "...", "text": "..."}❌ 只传字符串
17Attachment[{"file_token": "..."}]❌ 传本地路径
18/21关联字段list[str](record_id)
19/20/1001-1005/3001公式/查找引用/创建时间等拒绝写入❌ 尝试写系统字段

设计原则:入口宽容,出口严格 —— 允许 LLM 传 ISO 日期、秒级时间戳、单元素数组, 适配层内部统一转成官方格式。LLM 出错的空间由适配层吃掉,而不是把 1254064 抛给客户。

实测指标:19 条黄金用例,字段编码正确率 100%,不可写拦截率 100%。 (eval/runner.py 实算,make eval 可复现)


MCP 工具(8 个)

工具作用
describe_table读表结构与字段类型
create_records / update_records / delete_records增 / 改 / 删(删除默认 dry-run)
search_records按条件检索
batch_upsert按唯一键幂等 upsert(自动拆 create/update)
dry_run_create预演:跑完整编码链路但零真实写请求
diagnose_scenarios业务诊断:判断哪些环节值得上 AI

接入 Claude Code(免克隆,经 uvx 直接从 PyPI 运行):

{

"mcpServers": { "basepilot": { "command": "uvx", "args": ["basepilot", "serve"], "env": { "BASEPILOT_APP_ID": "cli_xxx", "BASEPILOT_APP_SECRET": "xxx", "BASEPILOT_APP_TOKEN": "bascnxxx", "BASEPILOT_TABLE_INVENTORY": "tblxxx" } } } }


远程模式(HTTP / SSE)

默认 serve 走 stdio,供 Claude Code / Cursor 本地接入 —— 凭证留在本机环境变量, 这是推荐用法。需要把 Server 部署到服务器、供多人或多客户端远程接入时, 用 HTTP 传输(FastMCP 4.x,streamable-http):

basepilot-mcp serve --transport http --host 127.0.0.1 --port 8000

客户端接入 http://127.0.0.1:8000/mcp/

basepilot-mcp serve --transport sse --port 8000 # 旧版 SSE 协议,挂载 /sse/ basepilot-mcp serve --transport http --path /custom # 自定义挂载路径

  • --host 默认 127.0.0.1(仅本机);--port 默认 8000;--path 默认用 FastMCP 内置路径。
  • 鉴权注意:MCP 层没有内置鉴权 —— 能连上端口就能调用全部写工具, 等同于你的飞书 app 权限。不要把端口直接绑 `0.0.0.0` 暴露公网: 请放内网,或在前面加带鉴权的反向代理(nginx / Caddy + Bearer Token / mTLS)。
  • 飞书凭证只存在服务端环境变量(BASEPILOT_APP_ID / BASEPILOT_APP_SECRET), 不经过客户端与网络传输。

当前进度

全部模块已完成,已在真实飞书租户跑通全链路。 每个指标都由代码实算 (make eval),未实测的不会写成已达成 —— 这是本项目的铁律。 make verify 离线全绿(309 tests,含门禁脚本自身 3 个测试);make live-smoke 连真实飞书跑通 鉴权→建表→写入→读回→清理;跨境三表 batch_upsert 幂等(第一次全新增, 第二次全更新无重复)。

模块状态
飞书约束常量(config.py)✅ 已完成,每个数值标注官方出处
token 缓存(auth.py)✅ 已完成,100 请求换 1 次 token 已实测断言
错误码处置(errors.py)✅ 已完成,34 条规则,含客户现场指引
接口分桶限流(ratelimit.py)✅ 已完成
字段编码适配(coerce.py)✅ 已完成,13 类编码器 + normalize_key 解码
客户端与并发控制(client.py / serialization.py)✅ 已完成,200 压测单表并发=1
MCP 工具层(8 个工具)✅ 已完成(FastMCP,stdio / HTTP / SSE 可跑)
业务诊断打分器(diagnosis.py)✅ 已完成,15 场景四象限
cassette 录制/重放(cassette.py)✅ 已完成,真实交互 CI 可重放
跨境三表场景包(src/basepilot/scenarios/cross_border/__init__.py)✅ 已完成,真实租户幂等验证
交付文档(playbook/training/troubleshooting/weekly_ops)✅ 已完成,排障 SOP 由代码生成

判断进度的方式:uvx basepilot doctor(如实列出已实现项)。


快速开始

第 1 步:凭证从哪来
  1. 登录 飞书开放平台 →「创建企业自建应用」, 拿到 App ID(cli_ 开头)与 App Secret (官方指引)。
  2. 在应用后台「权限管理」开通多维表格权限(bitable:app),然后创建版本并发布。
  3. 把凭证配进环境变量,跑凭证引导向导 —— 它会真实调飞书 OpenAPI 验证凭证连通性、验证你的 app_token / table_id 可达, 最后输出可直接粘贴的 mcpServers 配置(uvx 与本地开发两份):
export BASEPILOT_APP_ID=cli_xxx

export BASEPILOT_APP_SECRET=xxx basepilot-mcp init # 三步引导:验证凭证 → 验证数据表 → 输出 mcpServers JSON

非交互环境(CI / 管道)里向导不会干等输入:检测到非 TTY 会打印 完整的环境变量配置指引后以退出码 2 退出。

第 2 步:跑起来
git clone https://github.com/Peterwong666/basepilot.git

cd basepilot uv sync # 或 make setup

cp .env.example .env # 填入你的飞书应用凭证(或直接沿用上面的 export)

make verify # 离线全量校验:lint + 类型 + 测试 + 评测 + 文档校验 make eval # 实算评测指标(并发峰值/重试成功率/dry-run 一致率) make live-smoke APP= TBL= # 连真实飞书跑全链路 python scripts/seed_cross_border.py # 跨境三表灌数(幂等,可重复) make adoption APP= TBL=<表ID> KEY=<唯一键> # 上线后促活三指标,出周报

所有脚本都用项目自己的 venv 解释器。**用系统 Python 可能缺少 PyYAML 导致

场景包静默降级为fallback(4 条内置场景),跑出的数字是错的** ——

scripts/diagnose.py 等已通过 make verify 的门禁检查,但请优先用 make / uv run。


安全设计

  • 删除护栏:delete_records 默认 dry_run=true,须显式 confirm=true 才真删 —— 防 LLM 幻觉批量删库。
  • 不可写字段拦截:公式 / 查找引用 / 创建时间 / 自动编号等 13 类系统字段 fail-fast 拒绝写入, 不允许静默写坏数据。
  • 凭证隔离:.env 已 gitignore;cassette 里app_id / app_token / table_id / record_id 全部替换为占位符(cassette.redact_identifiers)—— 这些不是密钥,但会暴露租户身份。
  • 发布前门禁:tests/test_no_secrets_in_repo.py 在 CI 里扫描仓库, 检出真实租户标识符 / 泄露的 .env / 本机绝对路径即失败;失败信息只报位置不回显值。

非目标(Non-goals)

主动划边界比假装覆盖更可信。 本项目不做:

  • ❌ 删除整个多维表格(Base)—— 不可逆,风险远高于收益
  • ❌ 授予/变更权限 —— 应由表owner 在界面完成
  • ❌ OAuth 授权流程 —— 定位是企业内部工具 + 开源交付包
  • ❌ 直接发送飞书消息 —— 外部可见副作用应由上层决策
  • ❌ 事件订阅(长连接)—— 需公网与连接数管理,且不解决当前核心痛点

与官方 lark-mcp 的关系

官方 @larksuiteoapi/lark-mcp 把飞书 API 直出为 MCP 工具,覆盖度更广(40+ 工具)。 本项目不做覆盖度竞争,做交付可靠性:

能力官方 lark-mcpBasePilot
单表写串行 + 节流✗✓
字段类型预检(dry-run)✗✓
不可写字段拦截✗✓
错误码分类处置 + 现场指引✗✓
幂等键重生成部分✓
离线录制回放测试✗✓
业务语义工具(CSV 同步 / 风险标注 / 差评闭环)✗✓
客户交付手册 + 排障 SOP✗✓

详见 docs/adr/005-why-not-wrap-official-lark-mcp.md。


FDE 交付方法论五连(报告即代码)

报告即代码:数字从 diagnosis.py/cassette/eval 实算,改源数据重跑自动更新,测试锁结构。 入口从`docs/delivery/delivery_handbook.md` 进 —— 它串起五份并标注每份的数字口径。

文档回答生成脚本
docs/delivery/discovery_report.md先做哪个(五维诊断 + 四象限 + 劝退)scripts/gen_discovery_report.py
docs/delivery/solution_blueprint.md怎么做(top3 环节展开成可签字方案)scripts/gen_solution_blueprint.py
docs/delivery/case_backtest.md凭什么信你(真实证据回测当初预测)scripts/gen_case_backtest.py
docs/delivery/expansion_matrix.md能复制到哪(15 场景归纳 4 种能力模式)scripts/gen_expansion_matrix.py
docs/delivery/rollout_calendar.md按什么节奏铺(4 波次先稳后难推广日历)scripts/gen_rollout_calendar.py

文档

文档内容
`docs/PROJECT_RETROSPECTIVE.md`项目复盘:主要节点(问题→分析→解决)+ 结构分析,全面了解项目从这里入手
docs/delivery/delivery_playbook.md客户现场 5 步交付手册
docs/delivery/delivery_handbook.md交付手册合集页(五份方法论的入口与数字口径表)
docs/delivery/troubleshooting.md错误码 → 现场动作排障 SOP(由 `errors.py` 自动生成)
docs/delivery/client_training.md客户培训手册(给业务方的一页纸)
docs/delivery/weekly_ops.md上线后 8 周运营手册(make adoption 出促活周报)
docs/limitations.md已知限制与 badcase(含真实失败模式)
docs/adr/架构决策记录(含 006「读结构≠写结构」—— cassette 实证)
tests/cassettes/真实租户交互录制(脱敏),CI 可重放

开发

make verify    # 一条命令跑全部门禁(lint + mypy strict + pytest + eval + docs-check)

make docs # 重新生成全部交付文档

技术栈:Python 3.11+ · httpx(裸客户端,不依赖官方 SDK)· FastMCP(工具层)· PyYAML(场景包)· pytest + respx(离线回放)· ruff + mypy strict。


License

MIT


English

BasePilot is a Feishu (Lark) Base MCP Server for enterprise delivery — it turns multi-dimensional tables (Base) into business ledgers that Claude Code / Cursor can safely read and write.

Why

Companies already keep inventory / ads / review tracking in Feishu Base. The moment they want AI involved, they hit these wallss:

BlockerFeishu errorRoot cause
AI passes a string to a user field1254066must be [{"id": "ou_xxx"}]
AI passes a second-level timestamp1254064must be 13-digit ms

| AI passes an array to a single-select | `125

Nur der Anfang wird gezeigt; den Rest findest du im Repo

PopNx fragen