mcpField
S
Space Context

Space Context

リモート
spacecontext.appメモリ・ナレッジ02 週間前に更新
リポジトリ公式サイト

Space Context について

Space Contextは、撮影した空間を引用付きのコンテキストとしてアシスタントに提供するリモートMCPサーバーです。独立検証済み、未確認、ナレーション由来の情報を区別し、スキャンの比較や許可を得たスキャンも行えます。

主な機能

  1. 01空間の一覧表示・検索・読み取り
  2. 02引用付きの質問応答
  3. 03スキャン比較と写真証拠の提示
  4. 04独立検証済みの情報を表示
  5. 05許可を得て空間をスキャン

活用シーン

  1. 01撮影した空間で物や説明を探す
  2. 022回のスキャン間の変化を確認
  3. 03情報を伝える前に写真証拠を確認
  4. 04アクセスを許可して空間をスキャン

MCP 対応

Streamable HTTPとOAuth 2.1を通じて、Space Contextの空間にアクセスするMCPツール、リソース、プロンプトを提供します。接続後は読み取りが可能で、スキャンツールにはユーザーによる権限付与が必要です。

設定

リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。

エンドポイントhttps://mcp.spacecontext.app/mcp
インストールコマンドをコピー
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。

ツール

詳細

Space Context

Space Context MCP サーバー

License: MIT MCP OAuth 2.1 Cloudflare Workers Docs

Claude、ChatGPT、Codex、Cursor、VS Code、または任意の MCP クライアントから、Space Context のスペースにアクセスできるリモート MCP サーバーです。アシスタントは、スペースの一覧表示や検索、セクションごとまたはページ全体の読み取り、質問、スキャン結果の比較、写真による証拠の表示ができます。各項目、問題、重要な場所には、独立した二度目の確認で、その場所が写真上でも独自に確認されたか(確認済み、未確認、またはナレーション由来)が示されるため、アシスタントは断定できることと、慎重な表現にすべきことを判断できます。許可すれば、スペースのスキャンも行えます。

https://mcp.spacecontext.app/mcp

Streamable HTTP 経由で MCP に対応し、OAuth 2.1(動的クライアント登録とクライアント ID メタデータドキュメント)で認証します。@cloudflare/workers-oauth-provider の背後で、ステートレスに動作します(agents の createMcpHandler、MCP SDK v2)。このパッケージは npm で公開されていません。上記のホスト型サーバーを使用するか、独自にデプロイしてください。

アシスタントを接続する

クライアント方法
Claude (claude.ai, Desktop)設定 → コネクター → カスタムコネクターを追加を選び、URLを貼り付けて接続
Claude Codeclaude mcp add --transport http --scope user spacecontext https://mcp.spacecontext.app/mcpを実行し、/mcp → 認証
Codexcodex mcp add spacecontext --url https://mcp.spacecontext.app/mcpを実行し、続いてcodex mcp login spacecontext
ChatGPT設定 → アプリとコネクター → 詳細設定 → 開発者モードを選び、URLとOAuthを使用してコネクターを作成
Cursor~/.cursor/mcp.jsonのmcpServersに"spacecontext": { "url": "https://mcp.spacecontext.app/mcp" }を追加し、CursorのMCP設定でログイン
VS Codecode --add-mcp '{"name":"spacecontext","type":"http","url":"https://mcp.spacecontext.app/mcp"}'を実行(またはワークスペースの.vscode/mcp.jsonでserversを設定)し、MCP: サーバーの一覧表示 → 起動してサインイン

キーを貼り付ける必要はありません。接続の手順は次のとおりです。

  1. アシスタントがSpace Contextのページを開きます。iPhoneアプリと同じアカウントを使って、Apple、Google、またはメールで送信されるコードでサインインします。
  2. アシスタントが機密情報(Wi-Fiのパスワード、ドアやアラームの暗証番号、ナレーション)を閲覧できるか、またスペースをスキャンできるかを選択します。デフォルトでは、どちらも許可されません。スキャンには、アカウントに登録済みのカードが必要です(コンソールで追加しますが、料金は発生しません)。カードが登録されていない場合は、読み取り専用で接続するか、カードを追加してから再試行するようページに表示されます。
  3. サーバーはこの接続専用のAPIキーを作成します。このキーはコンソールにMCP · <assistant>として表示されます。スコープはspaces:readとscans:readに加え、選択した場合はspaces:sensitiveとscans:writeです。

コンソールでそのキーを失効させると接続が終了し、アシスタントは再度サインインするよう求めます。同じアシスタントを再接続すると、以前のキーが置き換えられます。アシスタントには、iPhoneアプリでスキャンしたものも含め、最新のスペースが表示されます。アプリで作成したスペースは、機密情報のスクリーニングが完了すると読み取り可能になります。初回の読み取り時にスクリーニングが開始され、完了まで1〜2分ほどかかります。詳細なガイド:アシスタントを接続する。

ツール

読み取りツールは、接続のたびに利用できます(読み取り専用および冪等と注記されています)。

ツール
list_spaces最新のスキャン情報があるスペースの一覧。1ページあたり50件
search_spacesすべてのスペース、または1つのスペースを対象に、質問に最もよく答える記録をあらゆる言語で検索します
get_spaceセクション(エリア、アイテム、問題、主要な場所、指示、事実、Q&A、対象範囲)でスペースを取得します。証拠を含めることもできます
get_space_markdownコンテキストとして1回で読み込めるよう、スペース全体を1つのMarkdownページとして取得します
ask_space引用付きの短い回答、または documented: false を返します
list_scans, compare_scansスキャン履歴、および2つのスキャン間で変更された内容を、両方の証拠とともに確認します
get_evidence_photo記録の元になった動画フレームを画像として取得します
get_scan_status, follow_scanスキャンの状況を確認します。follow_scan はイベントストリームを待機し、進捗を報告します
wallet残高、残りの無料スキャン回数、スキャン料金
capture_checklistスキャン前に、スペースの種類(フラット、車、ボート、家電など)ごとに撮影すべきものを確認します

これらのツールは、ユーザーが let it scan spaces にチェックを入れた接続でのみ機能します。それ以外の接続では、API は INSUFFICIENT_SCOPE を返します。

ツール
check_frameこの写真が使用可能か、またどの主要な場所が写っているかを確認します(space_type を指定すると、その種類とエリアに対応する場所を確認します)。保存も課金もされません
create_scan既存または新規スペースのスキャンを申請し、アップロード手順を返します
upload_frameキーを保持するサーバーを経由して、フレームスキャンの画像を1枚送信します
start_scanスキャンを開始して課金します。まず無料スキャンを使用し、その後は残高から$1.00が引き落とされます。失敗した場合は返金されます
cancel_scan開始前のスキャンをキャンセルします。課金されません

リソース: spacecontext://spaces(スペースの一覧、JSON)と spacecontext://spaces/{space_id}(Markdown形式のスペース)。プロンプト: check_out_report(2つのスキャンを比較し、確認済みの変更と不足している可能性のあるものを分けたレポートを作成)と where_is(1つの項目を、エリアと証拠写真とともに探します)。

どのツールもオープンウェブにはアクセスしません。スペースの内容は指示ではなくデータとして返されます。サーバーの指示にも、スペースの内容を含むすべての結果の note にも、その旨が記載されています。サインイン前にツール、リソース、プロンプトを確認するには、サーバーカード /.well-known/mcp/server-card.json を参照してください。引数と結果については、MCP tools をご覧ください。

独自にデプロイする

サーバーは、Space Context API(…/v1、API_V1_ENABLED = "true")と通信する Cloudflare Worker です。API 独自のサインインエンドポイントを使ってユーザーをサインインさせ、接続ごとに API キーを1つ作成します。保存されるデータはすべて KV にあります。OAuth クライアント、グラント、トークン(グラントには接続の API キーが含まれ、OAuth ライブラリによって暗号化されます)と、進行中のサインインです。後者は10分間保持され、ユーザーのブラウザーだけが持つキーで暗号化されます。

1. SDK をインストールしてビルドします(サーバーがインポートします)。リポジトリのルートで実行してください。

npm install
npm run build -w @spacecontext/sdk

2. OAuth クライアント、グラント、トークン用の KV 名前空間を作成し、その ID を wrangler.jsonc の kv_namespaces に設定します。この手順と次の手順は packages/mcp で実行します。

cd packages/mcp
npx wrangler kv namespace create OAUTH_KV

3. wrangler.jsonc の設定(name、routes のカスタムドメイン、vars)を行います。

API_BASE_URLAPI のベース URL。例:https://api.spacecontext.app/v1
PUBLIC_URLこのサーバーのオリジン。保護されたリソース(/.well-known/oauth-protected-resource/mcp)を示す URL であり、同意フォームが POST を受け付ける唯一のオリジンです
GOOGLE_WEB_CLIENT_ID任意:「Google で続行」に使用する Google のウェブ OAuth クライアント
APPLE_SERVICES_ID任意:「Apple でサインイン」に使用する Services ID
BACKEND(services)任意:API Worker へのサービスバインディング。これを通じて、API はレート制限とサインイン保護に各ユーザー自身の IP を使用できます。設定しない場合、サーバーはインターネット経由で API_BASE_URL を呼び出すため、すべてのユーザーが Worker の IP を共有します。API がアカウント内の Worker でない場合は、この項目を削除してください

4. Google サインイン用のシークレットを追加します。

npx wrangler secret put GOOGLE_WEB_CLIENT_SECRET

5. プロバイダーにコールバック URL を登録します。

  • Google:${PUBLIC_URL}/authorize/google/callback をウェブ OAuth クライアントの認証済みリダイレクト URI として追加します。
  • Apple:${PUBLIC_URL}/authorize/apple/callback を Services ID のリターン URL として追加します。

GOOGLE_WEB_CLIENT_ID とシークレットの両方が設定されていない場合、Google ボタンは表示されません。APPLE_SERVICES_ID が設定されていない場合も、Apple ボタンは表示されません。メールによるサインインは常に利用できます。API は Google と Apple のトークンを、独自のウェブクライアント ID と Services ID に照らして検証するため、API に設定されているものと同じものを使用してください。

6. デプロイします。

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

wrangler.jsonc の以下の設定はそのまま維持してください。

  • global_fetch_strictly_public は有効にしておきます。サーバーはクライアントが選んだ URL からクライアントメタデータ文書を取得するため、通常の fetch がプライベートアドレスに到達してはなりません。API には BACKEND バインディング経由でアクセスします。
  • workers_dev と preview_urls を無効にすると、サーバーはカスタムドメインでのみ応答します。
  • ratelimits は、クライアントの IP ごとに登録(/register)を毎分10回、サインインページへのリクエスト(/authorize…)を毎分60回に制限します。制限を超えると 429 と Retry-After: 60 が返されます。レート制限は環境に引き継がれず、各 namespace_id は Cloudflare アカウント内で一意でなければなりません。バインディングがない場合(dev など)、制限は適用されません。
  • アクセストークンの有効期間は1時間です。グラントは最後の更新から90日間有効です。動的に登録されたクライアントは、トークンリクエストがない状態が180日続くと削除されます。

wrangler.jsonc には dev(ローカル環境。下記参照)と staging(Space Context 独自のステージングデプロイ環境)も定義されています。

開発

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

API はこのリポジトリには含まれていません。テストには API は不要です。テストでは、偽の API に対して登録、PKCE、同意、トークン、実際の MCP 呼び出しを実行します。dev 環境では Google と Apple のクライアントが設定されていないため、ローカルのサインインにはメールで届くコードを使用します。ツールを追加する前に CONTRIBUTING.md をお読みください。書き込みや使用量の消費を伴うツールは、必ず scans:write で保護し、実態に即した注釈を付けてください。

MIT © Finikos S.r.l.

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。