Space Context
app.spacecontext由 spacecontext.app 发布官方发布者v0.2.1更新于 Oct 30, 2026
The context layer for the physical world: filmed spaces as cited context for agents.
概览
远程 MCP 服务器,让助手读取你拍摄的 Space Context 空间,提供带引用的回答、扫描对比和照片证据。
- 可以做什么
- 列出、搜索空间,按分区或整页 Markdown 读取
- 就某个空间提问,获得带引用的简短回答
- 查看扫描历史、对比两次扫描并获取原始证据照片
- 查询扫描状态并跟踪进行中的扫描进度
- 获得扫描权限后:检查画面、创建、上传、启动或取消扫描,并查看余额与拍摄清单
- 适用场景
- 适合用拍摄方式记录真实场所、车辆或家电,并希望助手据此回答问题、对比前后两次扫描或核查变化,且能指出证据的场景。
- 运行要求
- 通过 Streamable HTTP 连接的远程端点,使用 OAuth 2.1 登录,无需粘贴密钥。需要 Space Context 账号(Apple、Google 或邮件验证码,与 iPhone 应用相同)。扫描还需账号中已绑定银行卡,并在授权时勾选扫描权限。
安装
在 SourceWeft 中
- 打开 控制台中的 Space Context,将其添加到工作区。
- 连接 所需的 凭据。它们会被私密存储,绝不会在公开页面上展示。
- 为需要使用其工具的对话启用该服务。
Web executable,通过 Streamable HTTP。 远程服务在工作区中配置后即可从网页运行时运行。
交给智能体安装
把这段提示词粘贴到 Claude Code、Codex、Cursor 等智能体,或 SourceWeft 对话中。智能体会读取该服务器的安装指南,先向你展示发布者、端点和登录方式,经你同意后再把它添加到你的客户端。密钥不会写进任何命令。
阅读 https://sourceweft.com/mcp/app.spacecontext%2Fspacecontext/install.md,并按其中说明把这个 MCP 服务器接入我的客户端。修改任何配置之前,先告诉我它的发布者、端点和登录方式,等我确认。不要把 API 密钥写进命令或我会提交的文件;问我密钥应从哪里获取。其他 MCP 客户端
把它添加到你客户端的 mcpServers 配置中。 客户端会在首次连接时完成 OAuth 登录。
{
"mcpServers": {
"space-context": {
"type": "http",
"url": "https://mcp.spacecontext.app/mcp"
}
}
}README
Space Context MCP server
[License: MIT] [MCP] [OAuth 2.1] [Cloudflare Workers] [Docs]
A remote MCP server that gives Claude, ChatGPT, Codex, Cursor, VS Code or any MCP client access to your Space Context spaces. The assistant can list spaces, search them, read them by section or as one page, ask them questions, compare scans and show the photo evidence. Every item, issue and key location says whether a second, independent check found it on its own photo (verified, unconfirmed or from the narration), so the assistant knows what to state and what to hedge. If you allow it, it can also scan spaces for you.
It speaks MCP over Streamable HTTP and authorizes with OAuth 2.1 (dynamic client registration and client ID metadata documents). It's stateless (createMcpHandler from agents, MCP SDK v2) behind @cloudflare/workers-oauth-provider. This package isn't published to npm. Use the hosted server above, or deploy your own.
Connect an assistant
You never paste a key. Connecting works like this:
- Your assistant opens a Space Context page. You sign in with Apple, Google or a code sent to your email, using the same account as the iPhone app.
- You choose whether the assistant may see sensitive values (Wi-Fi passwords, door and alarm codes, the narration) and whether it may scan spaces for you. By default it can do neither. Scanning needs a card on file in your account (added in the console, nothing charged): without one, the page offers to connect read-only instead, or to try again once the card is added.
- The server creates an API key for this connection only, listed as
MCP · <assistant>in the console. Its scopes arespaces:readandscans:read, plusspaces:sensitiveandscans:writeif you ticked them.
Revoking that key in the console ends the connection, and the assistant asks you to sign in again. Connecting the same assistant again replaces its previous key. The assistant sees your live spaces, including the ones scanned with the iPhone app. A space from the app becomes readable once it has been screened for sensitive values: the first read starts the screening, which takes a minute or two. Full guide: Connect an assistant.
Tools
Reading tools, on every connection (annotated read-only and idempotent):
These tools work only on a connection where the user ticked let it scan spaces. On any other connection the API refuses them with INSUFFICIENT_SCOPE:
Resources: spacecontext://spaces (the list, JSON) and spacecontext://spaces/{space_id} (a space as Markdown). Prompts: check_out_report (compare two scans and write a report that keeps confirmed changes apart from what may be missing) and where_is (find one thing, with its area and evidence photo).
No tool reaches the open web. Space content is returned as data, never as instructions: the server's instructions say so, and so does a note in every result that carries space content. The server card at /.well-known/mcp/server-card.json lists tools, resources and prompts before sign-in. Arguments and results: MCP tools.
Deploy your own
The server is a Cloudflare Worker that talks to a Space Context API (…/v1, with API_V1_ENABLED = "true"). It signs people in through the API's own sign-in endpoints and creates one API key per connection. Everything it keeps is in KV: OAuth clients, grants and tokens (grants carry the connection's API key and are encrypted by the OAuth library), and sign-ins in progress, for ten minutes, encrypted with a key that only the user's browser holds.
1. Install and build the SDK (the server imports it), from the repository root:
2. Create the KV namespace for OAuth clients, grants and tokens, and put its id in kv_namespaces in wrangler.jsonc. This and the next steps run in packages/mcp:
3. Set the configuration in wrangler.jsonc (name, the custom domain in routes, and vars):
4. Add the secret for Google sign-in:
5. Register the callback URLs with the providers:
- Google: add
${PUBLIC_URL}/authorize/google/callbackas an authorized redirect URI of the web OAuth client. - Apple: add
${PUBLIC_URL}/authorize/apple/callbackas a return URL of the Services ID.
Without both GOOGLE_WEB_CLIENT_ID and the secret, the Google button isn't shown, and the same goes for Apple without APPLE_SERVICES_ID. Email sign-in is always offered. The API checks Google and Apple tokens against its own web client ID and Services ID, so use the same ones the API is configured with.
6. Deploy:
Keep these settings from wrangler.jsonc:
global_fetch_strictly_publicstays on. The server fetches client metadata documents from URLs that clients choose, so a plainfetchmust never reach private addresses. The API is reached through theBACKENDbinding.- With
workers_devandpreview_urlsoff, the server answers only on its custom domain. ratelimitslimit each client IP to 10 registrations (/register) and 60 sign-in page requests (/authorize…) a minute, answered with429andRetry-After: 60beyond. Rate limits aren't inherited by environments, and eachnamespace_idmust be unique in your Cloudflare account. Without the bindings (as indev) nothing is limited.- Access tokens last one hour. A grant lives for 90 days after its last refresh. A client registered dynamically is deleted after 180 days without a token request.
wrangler.jsonc also defines dev (local, see below) and staging (Space Context's own staging deployment).
Develop
The API isn't part of this repository. The tests don't need it: they drive registration, PKCE, consent, token and real MCP calls against a fake API. The dev environment sets no Google or Apple client, so local sign-in uses the emailed code. Read CONTRIBUTING.md before adding a tool: any tool that writes or spends must sit behind scans:write and be annotated honestly.
MIT © Finikos S.r.l.
来源:packages/mcp/README.md,提交 0aab27d
工具
0版本历史
2- v0.2.1最新Oct 15, 2026
- v0.2.0Oct 14, 2026
评分
已满足适用检查项的 85%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
- 近 30 天内可连通必需25 分
- 已声明认证方式必需10 分
- 已列出工具15 分
请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。
- 描述必需15 分
- 图标10 分
- 文档15 分
- 许可证10 分