
Backlot
io.github.brekkylab由 GitHub 账号 brekkylab 发布v0.1.0更新于 Oct 30, 2026
Local emulator for Slack, Gmail, Drive, GitHub, Jira, Notion, S3 and more, with per-document ACLs
概览
Backlot 是一个本地企业 SaaS API 模拟器(Slack、Gmail、Drive、GitHub、Jira、Notion、S3 等),通过 stdio 以 MCP 工具形式提供给助手使用。
- 可以做什么
- 在单一本地进程中提供 Slack、Teams、Gmail、Drive、GitHub、Jira、Confluence、Notion、Linear、HubSpot、Fireflies 和 S3 的模拟 API
- 读写确定性语料库中的模拟记录,支持按文档的访问控制与按用户的令牌
- 以指定用户身份应答,使助手只能看到该调用者有权查看的内容
- 若没有运行中的服务则自动启动,也可让厂商自带的 MCP 服务器指向它
- 导入自定义 JSONL 语料库并按各服务的 schema 校验
- 适用场景
- 适合在无需厂商账号、OAuth 审批或网络访问的情况下,针对厂商形态的 API 行为构建、测试或评估集成、RAG 流水线或智能体,并需要在本地与 CI 之间保持稳定的 ID 和按 ACL 过滤的视图。
- 运行要求
- 以 stdio 本地运行,通过 uvx 或 pip 从 PyPI 安装(MCP 服务器需要 MCP 附加组件)。无需厂商账号、OAuth 或 API 密钥,Backlot 自行生成用户与令牌。HTTP API 会占用本地端口。
安装
在 SourceWeft 中
- 打开 控制台中的 Backlot,将其添加到工作区。
- 为需要使用其工具的对话启用该服务。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
其他 MCP 客户端
参照 仓库 中的启动说明。
README
Backlot
[GitHub stars] [python] [PyPI] [tests] [License: Apache 2.0]
Run enterprise SaaS APIs locally.
Backlot is a local emulator for Slack, Gmail, Google Drive, GitHub, Jira, Notion, S3 and other enterprise APIs. It reproduces the response shapes, pagination, authentication, errors and per-document access controls an integration has to handle, over a deterministic corpus you control — so you build and test against the official vendor SDKs with no vendor account, no OAuth approval, no secrets in CI and no network.
Try it in 60 seconds
Point an official SDK at it by changing one base URL:
The same call targets Slack in production and Backlot in development. Backlot supplies the data and the credentials; your code keeps the vendor's request and response contract.
A test can run its own server instead, on a free port, with nothing to start or clean up:
Let your coding agent run Backlot instantly
This repo is its own plugin marketplace, so the agent skill installs with no clone and no pip install first. Or hand the agent every source as MCP tools: backlot mcp starts a server if none is running and serves them all over stdio, with --user <email> answering as that person.
and prompt like this:
Mock our Slack workspace with three messages in an #incidents channel, get a server running, then show me what
conversations.historyactually returns for that channel.
Why not use mocks?
A hand-written mock returns the response your code already expects. Backlot implements the other side of the integration, so it exposes the assumptions a mock would repeat — it is for when the behavior of the API, not just the contents of one response, is what you need to test.
What it serves
Every source on one local port, each behind the path prefix its own SDK expects, all reading one SQLite corpus.
The corpus defines the facts: messages, files, issues, authors, timestamps, threads, comments, labels, readers. Backlot derives stable ids, users, groups and tokens from them, so every run serves the same records, the same ACL-filtered views and the same pages.
It emulates the documented subset of each API it supports, not every vendor endpoint. The endpoint-by-endpoint matrix says which, and an implemented endpoint that diverges from the real API is a bug.
The roadmap lives in the tracking issue — ask there for the source you need.
When you need this
- 🔌 Building or upgrading an integration. The cursors, page shapes and error bodies the real API returns, without an account to get them from.
- 🧪 Testing it, and keeping it tested. One fixture on your laptop and in CI, with no secrets and nothing to flake. Every user in the corpus gets a token, so you can also assert that one caller's documents never reach another.
- 🤖 Evaluating a RAG pipeline or an agent. The same corpus, the same ids and the same answers on every run, so a score that moves means your code moved. Backlot supports write APIs for some vendors, so an agent that acts rather than only reads can be run here and graded on what it actually did — one endpoint reports it, another puts the corpus back for the next run (docs/write-overlay.md).
- 🐛 Reproducing a bug in data you can't see. A document inside someone else's workspace breaks your parser. Write one shaped like it, serve it, and keep the failing test.
Bring your own corpus
The bundled corpus covers every supported service, but the main workflow is to serve your own test world: a JSONL file, one source document per line.
Every imported identity gets deterministic credentials, listed at GET /_meta/users; send the same request with another user's token to test what that caller is allowed to see. Preparing a corpus covers schemas, rosters, sharded corpora and public datasets, and Auth and tokens covers each service's authentication style.
Examples
Documentation
Contributing
See CONTRIBUTING.md. Fidelity to the real APIs is the point, so a divergence is a bug — measure against the real service, and bring a test that fails without your fix.
Backlot exists thanks to all the people who contribute.
[Avatars of Backlot's contributors]
License
Apache-2.0. NOTICE.md has the MIT License earlier releases were under.
来源:README.md,提交 5d06ed0
工具
0版本历史
1- v0.1.0最新Oct 23, 2026
评分
已满足适用检查项的 50%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
- 近 30 天内可连通25 分
请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。
- 已声明认证方式10 分
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
- 已列出工具15 分
请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。
- 描述必需15 分
- 图标10 分
- 文档15 分
- 许可证10 分