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.

已驗證Streamable HTTP可網頁執行知識與記憶媒體與設計

概覽

AI 產生的概覽

遠端 MCP 伺服器,讓助理讀取你拍攝的 Space Context 空間,提供附引用的回答、掃描比對與照片證據。

可以做什麼
  • 列出、搜尋空間,依分區或整頁 Markdown 讀取
  • 針對某個空間提問,取得附引用的簡短回答
  • 檢視掃描歷史、比對兩次掃描並取得原始證據照片
  • 查詢掃描狀態並追蹤進行中的掃描進度
  • 取得掃描權限後:檢查畫面、建立、上傳、啟動或取消掃描,並查看餘額與拍攝清單
適用情境
適合以拍攝方式記錄真實場所、車輛或家電,並希望助理據此回答問題、比對前後兩次掃描或查核變化,且能指出證據的情境。
執行需求
透過 Streamable HTTP 連線的遠端端點,使用 OAuth 2.1 登入,無需貼上金鑰。需要 Space Context 帳號(Apple、Google 或電子郵件驗證碼,與 iPhone 應用程式相同)。掃描另需帳號中已綁定信用卡,並在授權時勾選掃描權限。
安裝前請注意
授權時決定助理能否看到敏感值,例如 Wi-Fi 密碼、門禁與警報碼以及旁白,預設皆不允許。免費掃描之後,啟動掃描會從餘額扣除 1.00 美元,上傳會將影像經伺服器送出。每次連線會建立一組 API 金鑰,可在主控台撤銷。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Space Context,將其新增到工作區。
  2. 連接 所需的 憑證。它們會被私密儲存,絕不會在公開頁面上展示。
  3. 為需要使用其工具的對話啟用該服務。

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]

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.

text
https://mcp.spacecontext.app/mcp

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

ClientHow
Claude (claude.ai, Desktop)Settings → Connectors → Add custom connector, paste the URL, Connect
Claude Codeclaude mcp add --transport http --scope user spacecontext https://mcp.spacecontext.app/mcp, then /mcp → Authenticate
Codexcodex mcp add spacecontext --url https://mcp.spacecontext.app/mcp, then codex mcp login spacecontext
ChatGPTSettings → Apps & Connectors → Advanced → Developer mode, then create a connector with the URL and OAuth
Cursor"spacecontext": { "url": "https://mcp.spacecontext.app/mcp" } under mcpServers in ~/.cursor/mcp.json, then Login in Cursor's MCP settings
VS Codecode --add-mcp '{"name":"spacecontext","type":"http","url":"https://mcp.spacecontext.app/mcp"}' (or servers in a workspace's .vscode/mcp.json), then MCP: List Servers → start it and sign in

You never paste a key. Connecting works like this:

  1. 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.
  2. 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.
  3. The server creates an API key for this connection only, listed as MCP · <assistant> in the console. Its scopes are spaces:read and scans:read, plus spaces:sensitive and scans:write if 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):

Tool
list_spacesSpaces with their latest scan, 50 per page
search_spacesThe records that best answer a question, across all spaces or one, in any language
get_spaceA space by section (areas, items, issues, key locations, instructions, facts, Q&A, coverage), optionally with evidence
get_space_markdownThe whole space as one Markdown page, to load it as context in one call
ask_spaceA short answer with citations, or documented: false
list_scans, compare_scansThe scan history, and what changed between two scans, with evidence from both
get_evidence_photoThe original video frame behind a record, as an image
get_scan_status, follow_scanWhere a scan is; follow_scan waits on the event stream and reports progress
walletBalance, free scans left, price of a scan
capture_checklistWhat to film for a type of space (a flat, a car, a boat, an appliance…), before a scan

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:

Tool
check_frameIs this photo usable, and which key locations does it show (with space_type, those of that type and the area); nothing is stored or charged
create_scanDeclares a scan of an existing or a new space and returns the upload instructions
upload_frameSends one image of a frames scan through the server, which holds the key
start_scanStarts and charges a scan: the free scan first, then $1.00 from the balance; refunded if it fails
cancel_scanCancels a scan that hasn't started; nothing is charged

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:

bash
npm installnpm run build -w @spacecontext/sdk

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:

bash
cd packages/mcpnpx wrangler kv namespace create OAUTH_KV

3. Set the configuration in wrangler.jsonc (name, the custom domain in routes, and vars):

API_BASE_URLThe API base, for example https://api.spacecontext.app/v1
PUBLIC_URLThis server's origin. It names the protected resource (/.well-known/oauth-protected-resource/mcp) and is the only origin the consent forms accept posts from
GOOGLE_WEB_CLIENT_IDOptional: the Google web OAuth client for "Continue with Google"
APPLE_SERVICES_IDOptional: the Services ID for "Sign in with Apple"
BACKEND (services)Optional: a service binding to the API Worker. Through it, the API sees each user's own IP for its rate limits and sign-in protection. Without it, the server calls API_BASE_URL over the internet and every user shares the Worker's IP. Remove the entry if the API isn't a Worker in your account

4. Add the secret for Google sign-in:

bash
npx wrangler secret put GOOGLE_WEB_CLIENT_SECRET

5. Register the callback URLs with the providers:

  • Google: add ${PUBLIC_URL}/authorize/google/callback as an authorized redirect URI of the web OAuth client.
  • Apple: add ${PUBLIC_URL}/authorize/apple/callback as 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:

bash
npm run deploy     # wrangler deploy of the top-level environment

Keep these settings from wrangler.jsonc:

  • global_fetch_strictly_public stays on. The server fetches client metadata documents from URLs that clients choose, so a plain fetch must never reach private addresses. The API is reached through the BACKEND binding.
  • With workers_dev and preview_urls off, the server answers only on its custom domain.
  • ratelimits limit each client IP to 10 registrations (/register) and 60 sign-in page requests (/authorize…) a minute, answered with 429 and Retry-After: 60 beyond. Rate limits aren't inherited by environments, and each namespace_id must be unique in your Cloudflare account. Without the bindings (as in dev) 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

bash
npm run dev -w @spacecontext/mcp     # http://localhost:8788, against an API on 127.0.0.1:8787npm test -w @spacecontext/mcp        # the full OAuth flow and MCP calls in workerd, against a fake API

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
該伺服器需要登入,因此 SourceWeft 無法在沒有帳號的情況下讀取其工具,也未收錄。已連接帳號所能看到的內容可能因帳號及其權限而異。

版本歷史

2
  1. v0.2.1最新Oct 15, 2026
  2. v0.2.0Oct 14, 2026

評分

已滿足適用檢查項的 85%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通必需25 分
  • 已宣告認證方式必需10 分
  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分